def Get_MACD(df):
#??12,26,9
macd, macdsignal, macdhist = ta.MACD(np.array(df['close']), fastperiod=12, slowperiod=26, signalperiod=9)
SignalMA5 = ta.MA(macdsignal, timeperiod=5, matype=0)
SignalMA10 = ta.MA(macdsignal, timeperiod=10, matype=0)
SignalMA20 = ta.MA(macdsignal, timeperiod=20, matype=0)
#13-15 DIFF DEA DIFF-DEA
df['macd']=pd.Series(macd,index=df.index) #DIFF
df['macdsignal']=pd.Series(macdsignal,index=df.index)#DEA
df['macdhist']=pd.Series(macdhist,index=df.index)#DIFF-DEA
dflen = df.shape[0]
MAlen = len(SignalMA5)
operate = 0
#2??? 1.DIFF?DEA????DIFF????DEA?????? 2.DIFF?DEA????DIFF????DEA??????
#???
if df.iat[(dflen-1),13]>0:
if df.iat[(dflen-1),14]>0:
if df.iat[(dflen-1),13]>df.iat[(dflen-1),14] and df.iat[(dflen-2),13]<=df.iat[(dflen-2),14]:
operate = operate + 10#??
else:
if df.iat[(dflen-1),14]<0:
if df.iat[(dflen-1),13]<=df.iat[(dflen-2),14]:
operate = operate - 10#??
#3.DEA??K?????????????
if df.iat[(dflen-1),7]>=df.iat[(dflen-1),8] and df.iat[(dflen-1),8]>=df.iat[(dflen-1),9]:#K???
if SignalMA5[MAlen-1]<=SignalMA10[MAlen-1] and SignalMA10[MAlen-1]<=SignalMA20[MAlen-1]: #DEA??
operate = operate - 1
elif df.iat[(dflen-1),7]<=df.iat[(dflen-1),8] and df.iat[(dflen-1),8]<=df.iat[(dflen-1),9]:#K???
if SignalMA5[MAlen-1]>=SignalMA10[MAlen-1] and SignalMA10[MAlen-1]>=SignalMA20[MAlen-1]: #DEA??
operate = operate + 1
#4.??MACD??????????????
if df.iat[(dflen-1),15]>0 and dflen >30 :
for i in range(1,26):
if df.iat[(dflen-1-i),15]<=0:#
operate = operate + 5
break
#?????????
if df.iat[(dflen-1),15]<0 and dflen >30 :
for i in range(1,26):
if df.iat[(dflen-1-i),15]>=0:#
operate = operate - 5
break
return (df,operate)
#??KDJ??????
评论列表
文章目录