我写的和老师不大一样,为了消除警告不断试错结果改成这样。。。

来源:3-6 Debug:解决CopyWarning问题

探寻神性的汪星人

2021-07-09

def composs_signal(data):
’’‘
整合business_signal
:param data:
:return:
’’’
# data[‘signal’] = data[‘buy_signal’].add(data[‘sell_signal’])

# data.loc[data['signal']!=0,'signal'] = np.where(
#     data.loc[data['signal']!=0,'signal'] == data.loc[data['signal']!=0,'signal'].shift(1),
#     np.nan,
#     data.loc[data['signal']!=0,'signal']
# )
# 筛选停牌造成的重复交易
data.loc[(data['buy_signal'] != 0) | (data['sell_signal'] != 0), 'signal'] = np.where(
    (data.loc[(data['buy_signal'] != 0) | (data['sell_signal'] != 0),'buy_signal'] ==
    data.loc[(data['buy_signal'] != 0) | (data['sell_signal'] != 0),'buy_signal'].shift(1)) |
    (data.loc[(data['buy_signal'] != 0) | (data['sell_signal'] != 0),'sell_signal'] ==
    data.loc[(data['buy_signal'] != 0) | (data['sell_signal'] != 0),'buy_signal'].shift(1)),
    np.nan,
    data.loc[(data['buy_signal'] != 0) | (data['sell_signal'] != 0),'buy_signal'].add(
        data.loc[(data['buy_signal'] != 0) | (data['sell_signal'] != 0),'sell_signal'])
)
print(data)
exit()
data = data[data['signal'] != 'NaN']
return data



'''
    7-16更新,以为上面的代码测试均线策略的时候会报错,参考学习资料改成下面这个样子
'''
# 筛选停牌造成的重复交易
filter_0 = (data['buy_signal'] != 0) | (data['sell_signal'] != 0) # 过滤0
data['signal'] = data.loc[filter_0,'buy_signal'].add(data.loc[filter_0, 'sell_signal'])

data['signal'] = np.where(data['signal'] == data['signal'].shift(1)
                                        , np.nan, data['signal'])
data.dropna(how = 'any', inplace = True)
return data
写回答

2回答

探寻神性的汪星人

提问者

2021-07-16

大半夜还在忙啊,这个我前两天天又参考上课资料改了。。后面均线策略用这个会报错,好像是均线会产生nan值的原因

0
0

DeltaF

2021-07-16

优秀,我来看一下怎么优化

0
0

程序员理财课 Python量化交易系统实战

打造一个自动交易平台,新手也能提升理财收益

1986 学习 · 405 问题

查看课程