使用 Python Pandas 向量化确定每一行的追踪止损结果

时间:2021-02-02 00:39:54

标签: python pandas vectorization

我想知道使用 Pandas 向量化是否可以实现以下内容,如果可以,代码是什么。我相信如果我要使用 iterrows,代码会相当简单,但是对于数据帧执行这会花费很长时间。

我有一个 Python 数据框,其中包含股票的开-高-低-收盘 (OHLC) 图表数据。它还有一个额外的列,ATR。

                 Open       High        Low      Close       ATR
Date                                                            
2010-02-11  31.250000  31.440001  30.719999  31.209999  1.126428
2010-02-12  30.760000  31.010000  30.510000  30.850000  1.121429
2010-02-16  31.450001  31.590000  31.120001  31.549999  1.100000
2010-02-17  31.600000  31.910000  31.360001  31.459999  1.086429
2010-02-18  31.490000  31.770000  31.309999  31.680000  1.018572
...               ...        ...        ...        ...       ...
2020-12-22  21.670000  21.809999  21.100000  21.219999  0.910000
2020-12-23  21.340000  22.219999  21.340000  22.080000  0.924285
2020-12-24  22.100000  22.160000  21.650000  21.889999  0.842857
2020-12-29  21.990000  22.230000  21.590000  21.590000  0.835000
2020-12-30  21.590000  22.180000  21.549999  21.760000  0.817857

[2731 rows x 5 columns]

我想为数据框生成两个新列:“退出日期”和“退出价格”。对于每一行,这些列的值确定如下:

  • 如果股票以该行的开盘价买入,则退出日期将等于下一行的低价低于追踪止损的指数。
  • 这种情况下的追踪止损将定义为低价减去 ATR。如果此值低于前一行的值,则它等于前一行的值。因此,不存在构成整个数据帧追踪止损的单一值系列。数据帧的每一行的追踪止损都会有所不同。此 image 中说明了一个示例。在此示例中,在第 1、2、3 和 4 天买入将导致相同的追踪止损。但是,在第 8 天买入会导致不同的追踪止损。
  • 如果低于止损,退出价格将等于退出日期的开盘价。否则,退出价格将等于止损。

0 个答案:

没有答案