基于macd、kdj、ma技术指标分析股票多空方向——应用开发3 计算股票相关技术指标数据

article/2025/9/19 8:58:52

接上一节,我们获取了000001.SZ股票过去一年的历史数据stock_df,接下来我们就计算技术指标

所用包

pandas_ta

import pandas_ta as ta

关于pandas_ta 可以在GitHub - twopirllc/pandas-ta: Technical Analysis Indicators - Pandas TA is an easy to use Python 3 Pandas Extension with 130+ Indicators 这里了解更多

我们可以通过以下代码,了解pandas_ta的说明

import pandas_ta as ta# Create a DataFrame so 'ta' can be used.
df = pd.DataFrame()# Help about this, 'ta', extension
help(df.ta)

也可以通过一下代码,了解pandas_ta 目前含有的功能

df.ta.indicators()

Pandas TA - Technical Analysis Indicators - v0.3.14b0
Total Indicators & Utilities: 205
Abbreviations:
    aberration, above, above_value, accbands, ad, adosc, adx, alma, amat, ao, aobv, apo, aroon, atr, bbands, below, below_value, bias, bop, brar, cci, cdl_pattern, cdl_z, cfo, cg, chop, cksp, cmf, cmo, coppock, cross, cross_value, cti, decay, decreasing, dema, dm, donchian, dpo, ebsw, efi, ema, entropy, eom, er, eri, fisher, fwma, ha, hilo, hl2, hlc3, hma, hwc, hwma, ichimoku, increasing, inertia, jma, kama, kc, kdj, kst, kurtosis, kvo, linreg, log_return, long_run, macd, mad, massi, mcgd, median, mfi, midpoint, midprice, mom, natr, nvi, obv, ohlc4, pdist, percent_return, pgo, ppo, psar, psl, pvi, pvo, pvol, pvr, pvt, pwma, qqe, qstick, quantile, rma, roc, rsi, rsx, rvgi, rvi, short_run, sinwma, skew, slope, sma, smi, squeeze, squeeze_pro, ssf, stc, stdev, stoch, stochrsi, supertrend, swma, t3, td_seq, tema, thermo, tos_stdevall, trima, trix, true_range, tsi, tsignals, ttm_trend, ui, uo, variance, vhf, vidya, vortex, vp, vwap, vwma, wcp, willr, wma, xsignals, zlma, zscore

Candle Patterns:
    2crows, 3blackcrows, 3inside, 3linestrike, 3outside, 3starsinsouth, 3whitesoldiers, abandonedbaby, advanceblock, belthold, breakaway, closingmarubozu, concealbabyswall, counterattack, darkcloudcover, doji, dojistar, dragonflydoji, engulfing, eveningdojistar, eveningstar, gapsidesidewhite, gravestonedoji, hammer, hangingman, harami, haramicross, highwave, hikkake, hikkakemod, homingpigeon, identical3crows, inneck, inside, invertedhammer, kicking, kickingbylength, ladderbottom, longleggeddoji, longline, marubozu, matchinglow, mathold, morningdojistar, morningstar, onneck, piercing, rickshawman, risefall3methods, separatinglines, shootingstar, shortline, spinningtop, stalledpattern, sticksandwich, takuri, tasukigap, thrusting, tristar, unique3river, upsidegap2crows, xsidegap3methods

计算MACD、KDJ、5 10 20MA

macd(close, fast=None, slow=None, signal=None, talib=None, offset=None, **kwargs)

这里需要的参数close是股票每日收盘价,即stock_df [ ' close ' ] 的数据,fast、slow、signal默认是12、26、9可以根据实际需要更改数值

#MACD
macd_df = ta.macd(stock_df['close'])macd_df

 输出数据如下

MACD_12_26_9的数据表示DIF线、MACDs_12_26_9的数据表示DEA线、MACDh_12_26_9的数据表示柱方图 


 kdj(high=None, low=None, close=None, length=None, signal=None, offset=None, **kwargs)

这里需要的参数high、low、close分别是股票每日最高价、最低价、收盘价,即stock_df [ ' high ' ] 、stock_df [ ' low ' ] 、stock_df [ ' close ' ] 的数据,length、signal默认是9、3可以根据实际需要更改数值 

#KDJ
kdj_df = ta.kdj(stock_df['high'],stock_df['low'],stock_df['close'])kdj_df

输出数据如下

 

 K_9_3的数据表示K线、D_9_3的数据表示D线、J_9_3的数据表示J线


sma(close, length=None, talib=None, offset=None, **kwargs)

 sma(simple moving average)即普通均线,这里需要的参数close是股票每日收盘价,即stock_df [ ' close ' ] 的数据,length是天数,默认是10天,可以根据实际需要更改数值。这里需要显示的分别是5天均线、10天均线、20天均线。

由于返回的值是series,我们需要转换为DataFrame。

#均线 5、10、20天
ma5_df = pd.DataFrame(ta.sma(stock_df['close'],length=5))
ma10_df = pd.DataFrame(ta.sma(stock_df['close'],length=10))
ma20_df = pd.DataFrame(ta.sma(stock_df['close'],length=20))

 把计算所得结果用concat函数连结到total_df表示,用于后续分析使用

#连接所有技术指标结果与收盘价以列形式在一个DataFrame
total_df = pd.concat([macd_df,kdj_df,ma5_df,ma10_df,ma20_df,stock_df['close']],axis=1)total_df

 输出数据如下

将代码封装在get_technical函数里,实现total_df=get_technical(stock_df)

def get_technical(stock_df):#MACDmacd_df = ta.macd(stock_df['close'])#KDJkdj_df = ta.kdj(stock_df['high'],stock_df['low'],stock_df['close'])#均线 5、10、20天ma5_df = pd.DataFrame(ta.sma(stock_df['close'],length=5))ma10_df = pd.DataFrame(ta.sma(stock_df['close'],length=10))ma20_df = pd.DataFrame(ta.sma(stock_df['close'],length=20))#连接所有技术指标结果与收盘价以列形式在一个DataFrametotal_df = pd.concat([macd_df,kdj_df,ma5_df,ma10_df,ma20_df,stock_df['close']],axis=1)#返回对应技术指标用于后面画图使用return macd_df,kdj_df,ma5_df,ma10_df,ma20_df,total_df

完整代码

import tushare as ts
import pandas as pd
import datetime
import pandas_ta as tatoken='你的token'
ts.set_token(token)
pro=ts.pro_api()#定义获取股票历史数据函数
def get_stock(num):stocknum=numtoday = datetime.datetime.today()startday=today+datetime.timedelta(days=-365)today = today.strftime('%Y%m%d')startday =startday.strftime('%Y%m%d')stock_df= pro.daily(ts_code=stocknum, start_date=startday,end_date=today)stock_df['trade_date'] = pd.to_datetime(stock_df['trade_date'])stock_df.set_index('trade_date',inplace=True)stock_df=stock_df.rename(columns={'vol':'volume'})stock_df=stock_df.iloc[::-1]return stock_df#定义计算技术指标函数
def get_technical(stock_df):#MACDmacd_df = ta.macd(stock_df['close'])#KDJkdj_df = ta.kdj(stock_df['high'],stock_df['low'],stock_df['close'])#均线 5、10、20天ma5_df = pd.DataFrame(ta.sma(stock_df['close'],length=5))ma10_df = pd.DataFrame(ta.sma(stock_df['close'],length=10))ma20_df = pd.DataFrame(ta.sma(stock_df['close'],length=20))#连接所有技术指标结果与收盘价以列形式在一个DataFrametotal_df = pd.concat([macd_df,kdj_df,ma5_df,ma10_df,ma20_df,stock_df['close']],axis=1)return macd_df,kdj_df,ma5_df,ma10_df,ma20_df,total_dfget_stocknum =pd.read_excel('股票代码.xlsx')
stock_df = get_stock(get_stocknum.iloc[0,0])
macd_df,kdj_df,ma5_df,ma10_df,ma20_df,total_df=get_technical(stock_df)


http://chatgpt.dhexx.cn/article/lsHBQeHh.shtml

相关文章

股票 - - 常用指标【下】

股票 - - 常用指标【下】 接上一篇文章,文章地址:八、巴菲特最看重的指标1. 简介 九、快速读懂股票的估值1.前言2.市盈率3.知识点 十、筹码分布 - - 一个一用就上瘾的指标1.一个关于筹码的故事2.关于筹码的形态单峰密集状态双峰密集状态多峰密集形态 3.上述三种形态…

常用技术指标之一文读懂KDJ指标

什么是KDJ指标? KDJ中文名又叫随机指标,英文名叫Stochastic oscillator,由乔治莱恩(George Lane)于20世纪50年代首创,最早用于期货市场。KDJ指标能比较迅速、直观地研判行情,主要用于分析中短期…

史上最全股票指标图文详解(原创)

炒股要把风险放在第一位,盈利放在第二位。 1、成交量(VOL)指标: 定义:股市中的成交量,是指股票或者大盘当日成交量的总手数。成交量指标一般是用柱状图来表示。左面的坐标值与柱子的横向对应处,就是当日当时的成交总手。如当天收盘价高于当天开盘价,成交柱呈红色;…

期货投资心得

期货的K线是什么 K线就是股票期货某个时间段的价格趋势,有四个数据构成,一个是开盘价,收盘价,最高价,最低价。其中k线红色时表示,收盘价高于收盘价;其中k线绿色时表示,收盘价低于收…

量化分析(8)——唐安奇通道

唐安奇通道和布林通道差不多,都是判断超买和超卖的工具,我还是喜欢rsi强度来判断超买和超卖,不过这二者可以相互印证一下。这里简单的画一下图,介绍一下。 # -*- coding: utf-8 -*- """ Created on Thu Oct 19 11…

Python 金融量化 道路突破策略(唐奇安道路突破策略布林带通道及其市场风险)

目录 获取数据1.通道突破简介2.唐奇安通道(Donchian Channel)2.1 唐奇安通道刻画2.2 在K线图中绘制唐奇安上下通道线2.3 Python捕捉唐奇安通道突破2.4 选择不同时间跨度 3.布林带通道3.1 布林带通道概述3.2布林带通道计算方式3.3 开始编码3.4 布林带通道线及K线图绘制3.5 布林带…

常用技术指标之一文读懂BOLL布林线指标

什么是布林线指标? 布林线BOLL指标(Bollinger Bands)是股市技术分析的常用工具之一,由美国金融分析师John Bollinger根据移动平均线和统计学中的标准差原理于1980年代设计出来。 如上图所示,布林线指标由上、中、下三条轨线组成,…

Python绘制BOLL布林线指标图

写在前面布林线(BOLL)技术指标简介BOLL公式详解参数设置 用到的主要Python库Python代码&详解参考文献推荐阅读 写在前面 本文代码部分总结自Packt出版社的《Learn Algorithmic Trading - Fundamentals of Algorithmic Trading》(图1&…

Boll布林带突破策略

1.策略原理 一个很简单的策略 突破上轨,且Rsi没有超卖时做多,价格回归中轨时平仓 代码: seting {name: BB, symbol: ETHUSDT, kTime: 15m, bb_len: 129, bb_mult: 2.259, rsi_len: 22, rsi_long_min: 15, rsi_long_max: 76, rsi_short_mi…

布林带-BOLL (Bollinger Band)

也叫布林通道。 一般价格的波动是在一定的区间内的,区间的宽度代表价格的变动幅度,越宽表示价格变动幅度越大,越窄表示价格变动幅度越小。 布林带由支撑线(LOWER)、阻力线(UPER) 和中线(MID) 三者组成。 价格突破阻力线/支撑线,表示卖出/买入…

如何利用布林带构建量化交易策略?

布林带之于交易就像莎士比亚之于文学,如果你想在交易世界中留下印记,这非常重要而且很难避免。布林带是一种技术指标,用于以更好的方式分析市场并帮助我们对资产价格做出更好的假设,即资产是否超买或超卖。 布林带实际上由三个波…

量化进阶—— 高胜算交易策略(布林线)

阅读原文:京东量化平台-为投资者提供数据支持、策略开发到策略输出的量化生态服务 京东金融官方资讯QQ群:417082141 有什么想咨询的都可以来询问我们哦 金融投机家保持100笔交易成功率达85%以上,得益于高胜算的趋势交易策略。综合技术应用顾比均线系统、…

【量化交易笔记】6.布林带的实现

上一讲介绍A股移动平均值(MA)指标,本讲我们来讲解布林布的实现。 布林线(BOLL)技术指标简介 布林线(Bollinger Bands,BOLL)又称布林带,是约翰布林(John Bol…

Python股票量化学习(3)——简单的策略回测

搞一个简单的交易策略回测(难点的我也不会啊)。此策略基于布林通道,当股价低于布林通道下轨线且持仓为0时,以下轨线价格全仓买入(不关心风险,反正也不要本钱)。当股价突破布林线上轨且有持仓时&…

量化交易——布林带策略

一、布林带策略介绍 布林带/布林线/保利加通道(Bollinger Band):由三条轨道线组成,其中上下两条线分别可以看成是价格的压力线和支撑线,在两条线之间是一条价格平均线。 一般来说,股价会运行在压力线和支撑线所形成的通道中。 与M…

【vn.py】源码解析之布林通道(BollChannel)策略

文章目录 Boll(布林线)指标CCI(Commodity Channel Index)指标布林通道策略布林通道策略源码分析1、完整源码2、策略参数与变量3、策略执行逻辑 Boll(布林线)指标 布林线是一种金融衍生品价格走势图中常用的…

量化交易——传统技术分析布林通道BollingerBands的原理及实现

布林通道 布林通道线是根据统计学的标准差来计算的,其具体可由上中下三条曲线展示。其中上下两线分别代表上升压力线和下降支撑线,故而可以根据K线图是否突破布林曲线来判断较好的买卖节点。三条曲线计算方法如下: 中轨线(MID)收盘价的M日移…

Lyndon的量化修炼之路——布林通道优化策略(二)

策略参数优化 //期市妖风大,小心被刮飞。本文不构成任何实质性建议,也不对任何依此进行的交易结果负责参数优化几乎是优化每一个量化交易策略的必经之路,对于参数优化的基本方法已经在双均线优化策略中介绍过,再次不多做介绍&…

【Python量化】布林带策略

文章目录 一、计算布林带三、构建策略,计算持仓头寸序列和买卖信号序列四、计算策略收益五、绘制交易信号 此文章首发于公众号:Python for Finance 链接:https://mp.weixin.qq.com/s/CJR2gwXkkzFRavZ8I98qdw 布林带(BOLL&#x…

Lyndon的量化修炼之路——布林通道优化策略(一)

//期市妖风大,小心被刮飞。本文不构成任何实质性建议,也不对任何依此进行的交易结果负责经过某位大佬的提醒,原来大白有另外的含义,侵权了侵权了(原谅我孤陋寡闻),所以还是简单点好。 我也不知…