我想使用数据帧创建一个简单的交易系统信号表,例如:
Close buy sell
2011-01-31 50 0 0
2011-02-28 40 1 0
2011-03-31 50 0 0
2011-04-30 80 0 -1
2011-05-31 60 1 0
2011-06-30 50 1 0
2011-07-31 20 0 0
2011-08-31 30 0 -1
信号按以下方式生成:
df['buy'] = np.where( <condition> , 1, 0 )
sell
列以相同的方式创建。
问题在于 2011 年 6 月 30 日的双重购买信号,紧接在 2011 年 5 月 31 日的上一个信号之后。
2011-05-31 60 1 0
2011-06-30 50 1 0
如何在 df['sell']
列中以 -1 关闭信号之前阻止新的买入 ( == 1 ) 信号?
最佳答案
我参加聚会有点晚了,但我希望这会有所帮助。我想你想要替代 1 和 -1。虽然不是最好的方法,但我建议您添加买入和卖出信号并将新列称为交易信号。交易信号列可以有任意形式的 0、1 和 -1。以下代码解释了进一步的步骤。
import pandas as pd
import numpy as np
trade_signal= pd.DataFrame([1,1,0,0,-1,-1,1,1,-1])
ts_shifted=trade_signal.shift(1)
trade_rule=np.where(trade_signal!=ts_shifted,trade_signal,0)
关于python - 如何在 pandas dataframe 中编写简单的信号逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40706588/