您如何在 pandas 中创建一个 "constant dataframe" 以便将其他数据帧添加/减去/比较为常数值?

How do you create a "constant dataframe" in pandas for the sake of adding / subtracting / comparing other dataframes to a constant value?

我正在与 pybacktest 合作,尝试创建我自己的 BackTester,它不仅支持“买入”/“卖出”,还支持“停留”(中间立场 - 什么都不做)。

ohlc = pybacktest.load_from_yahoo('AAPL', start=2000)   # Load a pandas dataframe
ohlc.tail()

ms = ohlc.C.rolling(short_ma).mean()
ml = ohlc.C.rolling(long_ma).mean()

eps = 0.001

up = (ms > ml + eps) & (ms.shift() < ml.shift())      # ma cross up
stay = (ml - eps <= ms <= ml + eps)
down = (ms < ml - eps) & (ms.shift() > ml.shift())    # ma cross down

代码的最后一部分是我想做的。 pybacktest 教程中存在的代码是:

buy = cover = (ms > ml) & (ms.shift() < ml.shift())  # ma cross up
sell = short = (ms < ml) & (ms.shift() > ml.shift())  # ma cross down

并且我正在将买入/卖出更改为向上/向下以更接近地模拟我正在交易的工具。而且这款乐器没有盖子/短裤。所以我创建了自己的 class 并将 Backtest class 代码复制到其中,并开始编辑。但这与 pandas 数据帧有关。

我得到的错误与我刚刚使用 python 浮点并尝试从数据帧中添加/减去它有关:

如果你能简单地做到这一点就好了(我会这样编码 pandas),但你不能。所以我的问题很简单,可能很容易回答。 Pandas 数据帧通常包含看起来很复杂的数据。我想要相反的东西......我想要的只是 ohlc!

中每个带时间戳的行的常量值

谢谢。

错误是关于没有明确处理系列 a <= b <= c。

只需将其转换为:

stay = (ml - eps <= ms) & (ms <= ml + eps)

使用 & 逻辑。所以 pandas 处理 +/-/* 常量和转换!太棒了!