问题描述
我正在与 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
我正在将买入/卖出更改为向上/向下以更接近地模拟我正在交易的工具。并且此乐器没有封面/简称。所以我创建了自己的类并将 Backtest
类代码复制到其中,并开始编辑。但这与 Pandas 数据框有关。
我得到的错误与我刚刚使用 python 浮点并尝试从数据帧中添加/减去它的事实有关:
如果你能简单地做到这一点就好了(我会那样编码熊猫),但你不能。所以我的问题很简单,可能很容易回答。 Pandas 数据框通常包含看起来很复杂的数据。我想要的是相反的……我想要的只是 ohlc
中每个带时间戳的行的常量值!
谢谢。
解决方法
错误在于没有明确处理 a
只需将其转换为:
PNG.WriteAsync
使用和逻辑。所以pandas确实用常量和转换来处理+/-/*!太棒了!