[英]How to correctly log trades using backtrader in python?
使用 60 分钟格式的 csv 文件中的数据。 尝试使用 backtrader backtester 记录所有买卖决策。
问题:时间记录器似乎无法正常工作,因为所有时间都输出为“23:59:59.999989”,而实际情况并非如此。
查看示例代码:
def log(self, txt, dt=None):
dt = dt or self.data.datetime.datetime(0)
print('%s, %s' % (dt, txt))
def next(self):
if self.data.close > self.sma1:
self.buy()
self.log('BUY CREATE, exectype Market, price %.2f' % self.data.close[0])
#Get Data
data = btfeeds.GenericCSVData(dataname='AAPL.csv',fromdate=datetime.datetime(2018, 1, 2),todate=datetime.datetime(2020, 4, 28),nullvalue=0.0,dtformat=('%Y-%m-%d %H:%M:%S'),datetime=0,open=1,low=2,high=3,close=4,volume=5,openinterest=6)
示例输出:
2019-07-12 23:59:59.999989, BUY CREATE, exectype Market, price 203.52
2019-07-12 23:59:59.999989, BUY CREATE, exectype Market, price 203.30
2019-07-12 23:59:59.999989, BUY CREATE, exectype Market, price 203.24
2019-07-12 23:59:59.999989, BUY CREATE, exectype Market, price 203.24
2019-07-15 23:59:59.999989, BUY CREATE, exectype Market, price 204.11
Csv 文件中的数据和格式:
2018-01-02 9:30:00 AM
这个问题也花了我几个小时。 我从另一个网站找到了解决方案。 在此处输入链接描述
对于分钟数据,请告诉 cerebro 您正在使用分钟数据(时间范围)以及每条柱线有多少分钟(压缩)。
#Get Data
data = btfeeds.GenericCSVData(
dataname='AAPL.csv',
fromdate=datetime.datetime(2018, 1, 2),
todate=datetime.datetime(2020, 4, 28),
nullvalue=0.0,
dtformat=('%Y-%m-%d %H:%M:%S'),
**timeframe=bt.TimeFrame.Minutes,**
datetime=0,
open=1,
low=2,
high=3,
close=4,
volume=5,
openinterest=6)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.