backtrader本身在回测结束前是不会把持仓全部平仓,所以,就需要我们自己判断什么时候是最后一个K线,在最后一个K线前发出全部平仓命令,以使程序在最后的一条K线执行平仓,从而完成一个完美的回测过程。 目的是在回测结束前把所有仓位都平仓掉。 网络上有的使用调用未来数据data[2]来引发错误来实现。实际测试中,此方案无效。 经过一番研究与测试,得出以下结果: 1、可以使用buflen()来取得总共有多少条K线bar。 2、在每次next中,datas中都包括从一开始到当前的所有数据,这样就可以通过len()来获取当前执行到第几个(K线)bar了。 3、可以通过1、2两项的数据进行对比,就可以

在使用backtrader进行回测外汇数据时,烧脑的是在保证金与杠杆的设置。 例如:如何EURUSD下单1手时,100倍杠杆的情况下, buy: 1.12888,close: 1.13162 占用保证金:1128.88 其中赚取0.00274即274个点,按17的点差,单边收取8.5个点。 毛利:274 净利 = 毛利 – 点差 = 274 – 17 = 257 如以下运行结果: 经过测试,可以使用多种方式实现,这里介绍两种简单的方式,我个人觉得在特定的情况下行数越少运行越高效。 核心:设置参数使保证金 = automargin * margin * size * pr

使用200万条K线的数据,测试backtrader的回测性能如何? 为​​了做到这一点,第一件事就是产生的足够的K线。所以,我们会做以下动作: 产生100支股票 每支股票 20000条K线数据 100个股票数据文件总计200万 根K线数据. 代码: import numpy as np import pandas as pd COLUMNS = [‘open’, ‘high’, ‘low’, ‘close’, ‘volume’, ‘openinterest’] CANDLES = 20000 STOCKS dateindex = pd.date_range(start=’2010-01-01′

唐奇安通道原理 唐奇安( Donchian )通道是由Richard Donchian开发的用于市场交易的指标。它是通过获取最后n 个周期的最高价和最低价形成的。高点和低点之间的区域是所选时段的通道。 如果价格稳定,Donchian 通道将相对狭窄。如果价格波动很大,Donchian 通道会更宽。 其中,最后n个周期一般 n = 20,当然也可以根据斐波那契数列13、 21、 34、 55、 89、 144、 233、 377取n的值。 把唐奇安( Donchian )通道指标当作买卖信号,可以按以下规则:(不限于以下方法,可以探索更多更好的方案) 1、当价格向上突破n个周期的最高价时,发出买

操作platform Line Iterators To参与到行动中,plaftorm使用线路的概念迭代器。他们Python的迭代器后,被松散的蓝本,但有其实无关them. Strategies和指标线iterators. The线的迭代器概念试图描述如下: 一个行迭代器踢奴隶线迭代器告诉然后他们iterate A线迭代器在自己的声明的命名线设置迭代values The键进行迭代,就像一般的Python迭代器,就是: `的nextmethod It将要求每个迭代。在datas阵列其中line iterator具有与作为逻辑基础/计算将已经被平台(禁止数据的重放) 调用时最小为线迭代period

Cerebro This类的基石backtrader因为它作为一个中央点: 收集所有输入(Data Feeds),演员(Stratgegies),观众(Observers),批评(Analyzers)和资料员(Writers)保证节目仍然在任何moment. Execute那张回溯测试/或实时数据料/ trading Returning到绘图facilities 的results Giving访问`收集input Start通过创建一个cerebro: cerebro = bt.Cerebro(**kwargs) 一些**kwargs控制执行支持,请参阅参考(相同的参数可以在以后施加到run方

优化improvements Version1.8.12.99`的backtrader包括如何改善data feeds和results期间multiprocessing. Note The行为进行管理两个一直是这些选项made The行为通过控制两个新的Cerebro参数: optdatas(默认值:True) 如果True和优化(并且该系统可以preload和使用runonce,数据预载将只有一次的主要工序完成为了节省时间和resources. optreturn(默认:True) 如果True优化结果不会是完整的Strategy对象(和所有datas, indicators, observ

Writer Write出流以下内容:数据 CSV流进,战略,指标和observers Which对象实际上进入CSV流可以被控制与csv的每个对象的属性(默认为Truedata feeds和observers/假用于indicators) 的属性of Data Feeds Strategies的总结(线和参数) 指标/观察员:(线和参数) 分析仪:(参数和分析结果) 只有一个写入定义称为WriterFile,它可以加入制度: 通过设置writer脑的参数True A标准WriterFile会instantiated By调用Cerebro.addwriter(writerclass, **k

数据Feeds backtrader附带有一组数据饲料解析器(在写所有的时间CSV为主),让您加载不同sources. Yahoo(在线或已保存到一个文件中的数据) VisualChart(见www.visualchart.com Backtrader CSV(自己的测试熟格式) 通用CSV support From的快速入门指南,您添加数据馈送到它应该清楚Cerebro实例。数据Feed稍后将提供给不同在策略: 的阵列self.datas(插入顺序) 别名到阵列对象: self.data和self.data0点到第一element self.dataX点与指数X元素在array A快速提醒如