您如何在 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 处理 +/-/* 常量和转换!太棒了!
我正在与 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 处理 +/-/* 常量和转换!太棒了!