
等级: 新手上路
- 注册:
- 2023-11-8
- 曾用名:
|
df['DIEF'], df['DEA'], df['MACD_1'] = talib.MACD(df['close'].values,
fastperiod=12,
slowperiod=26,
signalperiod=9)
#多周期调整:step;最后行df序列;
step = 2
df_new = pd.DataFrame()
#对全部close做n日切片列表,i是for循环的序列值,i是切片的起点。从0开始切,
#含0(第一个数),i+setp是终点,不含i+setp,步长=step。[i:i+setp]=step个数据
c = [list(df['close'][i:i+step]) for i in range(0,len(df['close']),step)]
#print(c) #5日切片列表
#形成n日收盘价列表,如果c这个切片的长度大于4(也就是5个),c的值为第五个数据的收盘价;
#否则取列表中的第一个数据(列表最后一个数据,怎么表达?),i的取值从0到列表总数-1
#df_new['b'] = [c[i][2] if len(c[i])>2 else c[i][0] for i in range(0,len(c)) ]
df_new['b'] = [c[i][0] for i in range(0,len(c)) ]
#print(df_new['b'])
#取n日收盘价代入后得到的含macd的数组
b = talib.MACD(df_new['b'].values,fastperiod=12,slowperiod=26,signalperiod=9)
#print(b) #数组2列 -1.98439015e+00, -1.35804134e+00])),为什么不能代入日线公式?
# 对b[2]遍历,每个元素重复step遍,取值区间从0到数据总数-1,步长=step
df['MACD_2'] = [item for item in b[2] for i in range(step)][0:len(df['close'])]
step = 5
df_new = pd.DataFrame()
c = [list(df['close'][i:i+step]) for i in range(0,len(df['close']),step)]
df_new['b'] = [c[i][4] if len(c[i])>4 else c[i][0] for i in range(0,len(c)) ]
b = talib.MACD(df_new['b'].values,fastperiod=12,slowperiod=26,signalperiod=9)
df['MACD_5'] = [item for item in b[2] for i in range(step)][0:len(df['close'])]
这几个指标,日线准确,但2日和周线不准确。周线没有把本周最后交易日数据作为本周数据,而是把5天作为周线简单处理。请问如何修改?
|
|