  
等级: 新手上路 
- 注册: 
 - 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天作为周线简单处理。请问如何修改? 
 |   
 
 
 
 |