Backtrader 文档学习- Plotting - Plotting Date Ranges
1.概述
1.9.31.x版本增加了绘制部分图形的功能。
- 可以使用策略实例中保留完整长度的时间戳数组的索引
- 或者使用实际的datetime.date 或datetime.datetime 实例来限制需要绘制的内容。
仍然可以使用标准的cerebro.plot 。例如:
cerebro.plot(start=datetime.date(2005, 7, 1), end=datetime.date(2006, 1, 31))
更直接人性化的方法。具有扩展能力,实际上可以尝试使用datetime 时间戳的索引,如下所示:
cerebro.plot(start=75, end=185)
python ./partial-plot.py --plot 'start=datetime.date(2005, 7, 1),end=datetime.date(2006, 1, 31)'
Python中的eval魔法允许直接在命令行中编写datetime.date并将其映射到实际内容。
实话实说,eval好像没有作用,直接报错,没有找到原因,可能还是eval用法的问题:
问题原因:在Windows下应该使用双引号:
python ./partial-plot.py --plot “start=datetime.date(2005, 7, 1),end=datetime.date(2006, 1, 31)”
感谢 wzbswfc2 提供解决方法!
图示:

usage: partial-plot.py [-h] [--data0 DATA0] [--fromdate FROMDATE] [--todate TODATE] [--cerebro kwargs] [--broker kwargs] [--sizer kwargs] [--strat kwargs] [--plot [kwargs]] partial-plot.py: error: unrecognized arguments: 7, 1),end=datetime.date(2006, 1, 31)'
在程序中修改:
if args.plot: # Plot if requested to #cerebro.plot(eval('dict(' + args.plot + ')')) cerebro.plot(start=datetime.date(2005, 7, 1), end=datetime.date(2006, 1, 31))
时间起点是05年7月1日,终点是06年1月31日图示:

按数据的时间范围:
程序修改回来。
if args.plot: # Plot if requested to #cerebro.plot(eval('dict(' + args.plot + ')')) cerebro.plot(start=datetime.date(2005, 7, 1), end=datetime.date(2006, 1, 31))
时间访问是数据的时间范围。
python ./partial-plot.py --plot

2.Help
$ ./partial-plot.py --help usage: partial-plot.py [-h] [--data0 DATA0] [--fromdate FROMDATE] [--todate TODATE] [--cerebro kwargs] [--broker kwargs] [--sizer kwargs] [--strat kwargs] [--plot [kwargs]] Sample for partial plotting optional arguments: -h, --help show this help message and exit --data0 DATA0 Data to read in (default: ../../datas/2005-2006-day-001.txt) --fromdate FROMDATE Date[time] in YYYY-MM-DD[THH:MM:SS] format (default: ) --todate TODATE Date[time] in YYYY-MM-DD[THH:MM:SS] format (default: ) --cerebro kwargs kwargs in key=value format (default: ) --broker kwargs kwargs in key=value format (default: ) --sizer kwargs kwargs in key=value format (default: ) --strat kwargs kwargs in key=value format (default: ) --plot [kwargs] kwargs in key=value format (default: )
3.代码
from __future__ import (absolute_import, division, print_function, unicode_literals) import argparse import datetime import backtrader as bt class St(bt.Strategy): params = ( ) def __init__(self): bt.ind.SMA() stoc = bt.ind.Stochastic() bt.ind.CrossOver(stoc.lines.percK, stoc.lines.percD) def next(self): pass def runstrat(args=None): args = parse_args(args) cerebro = bt.Cerebro() # Data feed kwargs kwargs = dict() # Parse from/to-date dtfmt, tmfmt = '%Y-%m-%d', 'T%H:%M:%S' for a, d in ((getattr(args, x), x) for x in ['fromdate', 'todate']): if a: strpfmt = dtfmt + tmfmt * ('T' in a) kwargs[d] = datetime.datetime.strptime(a, strpfmt) # Data feed data0 = bt.feeds.BacktraderCSVData(dataname=args.data0, kwargs) cerebro.adddata(data0) # Broker cerebro.broker = bt.brokers.BackBroker(eval('dict(' + args.broker + ')')) # Sizer cerebro.addsizer(bt.sizers.FixedSize, eval('dict(' + args.sizer + ')')) # Strategy cerebro.addstrategy(St, eval('dict(' + args.strat + ')')) # Execute cerebro.run(eval('dict(' + args.cerebro + ')')) if args.plot: # Plot if requested to cerebro.plot(eval('dict(' + args.plot + ')')) def parse_args(pargs=None): parser = argparse.ArgumentParser( formatter_class=argparse.ArgumentDefaultsHelpFormatter, description=( 'Sample for partial plotting' ) ) parser.add_argument('--data0', default='../../datas/2005-2006-day-001.txt', required=False, help='Data to read in') # Defaults for dates parser.add_argument('--fromdate', required=False, default='', help='Date[time] in YYYY-MM-DD[THH:MM:SS] format') parser.add_argument('--todate', required=False, default='', help='Date[time] in YYYY-MM-DD[THH:MM:SS] format') parser.add_argument('--cerebro', required=False, default='', metavar='kwargs', help='kwargs in key=value format') parser.add_argument('--broker', required=False, default='', metavar='kwargs', help='kwargs in key=value format') parser.add_argument('--sizer', required=False, default='', metavar='kwargs', help='kwargs in key=value format') parser.add_argument('--strat', required=False, default='', metavar='kwargs', help='kwargs in key=value format') parser.add_argument('--plot', required=False, default='', nargs='?', const='{}', metavar='kwargs', help='kwargs in key=value format') return parser.parse_args(pargs) if __name__ == '__main__': runstrat() 今天的文章
Backtrader 文档学习- Plotting - Plotting Date Ranges分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/103461.html