我有一个datetimeindex数据框,其中包含基于某些移动平均和价格交叉的买入和卖出信号的列。当我尝试按照以下逻辑创建用于购买交易,出售交易和产生的头寸的列时,我没有找到这样做的矢量化方法,而是求助于循环。谁能指出我正确的方向来完成循环的相同逻辑,但采用更多的Python方式?谢谢
在此阶段,数据框的4列为:Date
,Price
,Buy Signal
和Sell Signal
。下面的示例显示4行,每个行的值(日期除外)均具有值。
Price Buy Signal Sell Signal
100 TRUE FALSE
101 FALSE FALSE
95 FALSE TRUE
102 TRUE FALSE
我想创建3列,一列用于“买”,另一列用于“卖”,最后一列用于“头寸”。根据以下逻辑,三列将仅包含1,-1或0:
时间t的位置=时间t-1的位置+买入+卖出。
如果“买入信号”为True且(t-1的位置为零或-1),则买入为1。
如果“买入信号”为真且在t-1处的头寸为1,则买入为0。
如果卖出信号为真且t-1的头寸为1,则买入为-1。
如果“卖出信号”为“真”且(t-1的位置为零或1),则卖出为-1。
如果卖出信号为真且t-1处的头寸为-1,则卖出为0。
如果“买入信号”为“真”且在t-1的头寸为-1,则卖出为1。
正如我所指出的,我通过循环找到了解决方案,但是应该有一种方法可以应用矢量化,而我之前的所有尝试都失败了。
谢谢您的考虑