我在“信号”列上记录交易信号,我希望每个信号都有自己的止损价格。但是,我不知道如何避免连续信号之间的冲突。
数据集如下:
index price signal stoploss
0 1000 T 990(i.e. 1000-10)
1 1010 F
2 1020 T 1010(i.e. 1020-10)
3 1000 F
4 990 F
5 980 F
6 1000 F
7 1020 T 1010(i.e. 1020-10)
8 1030 F
9 1040 F
这是我的代码:
import pandas as pd
df = pd.DataFrame({'index':[0,1,2,3,4,5,6,7,8,9],
'price':[1000,1010,1020,1000,990,980,1000,1020,1030,1040],
'signal':[True, False, True, False, False, False, False, True, False, False] })
df['stoploss'] = df.loc[df['signal'], 'price'] - 10
#df['target'] = df.loc[df['signal'], 'price'] + 10
df['stoploss'].ffill(inplace=True)
df['isstopped'] = df['price'] <= df['stoploss']
df['sig_ix'] = df.loc[df['signal'], 'index']
df['stop_ix'] = df.loc[df['isstopped'], 'index']
df['sig_ix'].ffill(inplace=True)
entry_group = df.groupby('sig_ix')
print(df)
这是桌子:
index price signal stoploss isstopped sig_ix stop_ix
0 1000 True 990.0 False 0.0 NaN
1 1010 False 990.0 False 0.0 NaN
2 1020 True 1010.0 False 2.0 NaN
3 1000 False 1010.0 True 2.0 3.0
4 990 False 1010.0 True 2.0 4.0
5 980 False 1010.0 True 2.0 5.0
6 1000 False 1010.0 True 2.0 6.0
7 1020 True 1010.0 False 7.0 NaN
8 1030 False 1010.0 False 7.0 NaN
9 1040 False 1010.0 False 7.0 NaN
我被困在这里是因为在栏0输入的订单应该在栏4而不是栏3止损。 每个信号的停止都应该是独立的,但是通过这种方式,我弄得一团糟。