回测时间范围从 1 分钟到 5 天

问题描述 投票:0回答:1

我想计算过去 5 天的 ADR,但我有一个问题,我不知道如何获取这 5 天,因为我“只有”1 分钟的时间范围数据。 所以我不得不把事情搞砸,但无论我怎么尝试 当我与 Tradingview 进行比较时,我从未得到正确的结果 这是代码:

from backtesting import Backtest, Strategy
import pandas as pd

def getADR(highs,lows):
    high = highs.max()
    low = lows.min()
    return high-low
class MyStrategy(Strategy):

    def init(self):
        pass
    def next(self):
        high = self.data.High[-1]
        open = self.data.Open[-1]
        low = self.data.Low[-1]
        close = self.data.Close[-1]
        # And here I want to check the ADR of the last 5 days. So I have to somehow make 5 daily data out of the 1 minute data
        xx = getADR(self.data.High[""" :390? i dont know """],self.data.High[""" :390? i dont know """])

df = pd.read_csv('AAPL_Stock1m.csv',index_col='Timestamp',parse_dates=True)
bt = Backtest(df,MyStrategy,cash=50000)
print(bt.run())


我的索引看起来像这样(缩短) https://pastebin.com/WaDvhGES

我希望有人可以帮助我解决我的问题:)

我尝试查看索引,直到有 5 天的时间,例如[-390:] 然后 [-400] 等,但不知何故,ADR 结果不正确。

ADR = High(max)-Low(min)
python pandas finance trading back-testing
1个回答
0
投票

backtesting.py 可以解决您的问题:

对于 ATR,您可以使用 TA https://technical-analysis-library-in-python.readthedocs.io/en/latest/ta.html#ta.volatility.average_true_range

示例:

self.atr = self.I(ta.volatility.average_true_range, pd.Series(最高), pd.Series(最低), pd.Series(收盘))

要从 1 分钟中获取 5 分钟数据,请查看 backtesting.py 自己的重采样函数 https://kernc.github.io/backtesting.py/doc/backtesting/lib.html#backtesting.lib.resample_apply

示例:

self.sma = resample_apply('D', SMA, self.data.Close, 10, plot=False)
© www.soinside.com 2019 - 2024. All rights reserved.