600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 基于macd kdj ma技术指标分析股票多空方向——应用开发3 计算股票相关技术指标数据

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

时间:2019-09-29 09:41:52

相关推荐

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

接上一节,我们获取了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', extensionhelp(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可以根据实际需要更改数值

#MACDmacd_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可以根据实际需要更改数值

#KDJkdj_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表示,用于后续分析使用

#连接所有技术指标结果与收盘价以列形式在一个DataFrametotal_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 tsimport pandas as pdimport datetimeimport 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)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。