# 参数设置
param1 = 24 # 开仓周期
n = 3
# 当突破24日最高点开多仓,将止盈设定为收盘价+3*3倍标准差,止损设定为收盘价-3倍标准差
con1 = df['close'] > df['close'].shift(1).rolling(param1, axis=0).max()
df.loc[con1, 'signal_long'] = 1
df.loc[con1, 'stop_price_long'] = df['close'] - n * df['close'].rolling(param1, min_periods=1).std(ddof=0)
df.loc[con1, 'gain_price_long'] = df['close'] + 3 * n * df['close'].rolling(param1, min_periods=1).std(ddof=0)
# 做多平仓策略
con1 = df['close'] >= df['gain_price_long']
df.loc[con1, 'signal_long'] = 0
# 止损策略
con1 = df['close'] <= df['stop_price_long']
df.loc[con1, 'signal_long'] = 0
刚学pandas,请教大神,这里是有问题的,因为不满足con1,一般gain_price_long都是NaN,请问如何把上一个不为NaN的数字保存为变量,然后再去做判断呢?并且滚动起来?
con1 = df['close'] >= df['gain_price_long']
df.loc[con1, 'signal_long'] = 0
如图,我希望下面那个标红框的地方,singal_long变为0,因为close小于stop_price_long。
谢谢。
相似问题