如何对熊猫中的每个信号做出独立决定?

时间:2019-06-13 09:45:19

标签: pandas

我在“信号”列上记录交易信号,我希望每个信号都有自己的止损价格。但是,我不知道如何避免连续信号之间的冲突。

数据集如下:

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止损。 每个信号的停止都应该是独立的,但是通过这种方式,我弄得一团糟。

0 个答案:

没有答案