我写的和老师不大一样,为了消除警告不断试错结果改成这样。。。
来源: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值的原因
00 -
DeltaF
2021-07-16
优秀,我来看一下怎么优化
00
相似问题