Backtrader-用于交易策略的Python回测库

下面是一个简单移动平均线交叉的代码片段。这可以用几种不同的方式来完成。使用文档(和示例),Luke!
from datetime import datetime
import backtrader as bt

class SmaCross(bt.SignalStrategy):
    def __init__(self):
        sma1, sma2 = bt.ind.SMA(period=10), bt.ind.SMA(period=30)
        crossover = bt.ind.CrossOver(sma1, sma2)
        self.signal_add(bt.SIGNAL_LONG, crossover)

cerebro = bt.Cerebro()
cerebro.addstrategy(SmaCross)

data0 = bt.feeds.YahooFinanceData(dataname='MSFT', fromdate=datetime(2011, 1, 1),
                                  todate=datetime(2012, 12, 31))
cerebro.adddata(data0)

cerebro.run()
cerebro.plot()

包括一张功能齐全的图表。试试看!这包含在样本中,作为sigsmacross/sigsmacross2.py沿着这条路走sigsmacross.py可以从命令行参数化的

功能:

用Python编写的实时交易和回测平台

  • 实时数据馈送和交易
    • 互动代理(需求IbPy并极大地受益于已安装的pytz)
    • 视觉图表)需要一把叉子comtypes直到拉入请求集成到版本中并受益于pytz)
    • OANDA(需要oandapy)(仅限睡觉接口-v20实现时不支持流媒体)
  • 来自CSV/文件、在线来源或来自的数据馈送熊猫猛火
  • 数据筛选器,如将每日条形图分成块以模拟日内或使用Renko砖块
  • 支持多种数据馈送和多种策略
  • 一次多个时间范围
  • 集成重采样和重放
  • 逐步回溯测试或一次性回测(战略评估除外)
  • 一体式指示器电池
  • Ta-Lib指示器支持(需要pythonTa-lib/检查文档)
  • 轻松开发自定义指标
  • 分析器(例如:TimeReturn、Sharpe Ratio、SQN)和pyfolio集成(已弃用)
  • 灵活界定佣金计划
  • 集成代理模拟与市场限制停止限制停止轨迹StopTrailLimit*和*OCO订单、托架订单、滑移、成交量填充策略和未来类工具的持续现金调整
  • 用于自动打桩的定尺器
  • 关闭时作弊和打开时作弊模式
  • 调度程序
  • 交易日历
  • 打印(需要matplotlib)

文档

博客:

要阅读完整文档,请访问:

内置指示器列表(122)

Python 2/3支持

  • Python>=3.2
  • 它还可以与pypypypy3(不得图谋-matplotlib在以下情况下不受支持PyPy)

安装

backtrader是自包含的,没有外部依赖项(除非您想要打印)

从…琵琶

  • pip install backtrader
  • pip install backtrader[plotting]

    如果matplotlib未安装,您希望执行一些打印操作

注意事项

matplotlib的最低版本为1.4.1

以下是一个示例IB数据馈送/交易:

  • IbPy似乎不在PyPi里。执行以下任一操作:
    pip install git+https://github.com/blampe/IbPy.git
    

    或(如果git在您的系统中不可用):

    pip install https://github.com/blampe/IbPy/archive/master.zip
    

对于其他功能,如:Visual ChartOandaTA-Lib,请检查文档中的依赖项

来源:

  • Backtrader在项目内部的源代码中找到的目录

版本编号

X.Y.Z.I

  • X:主版本号。应该保持稳定,除非有大的改变,比如大修以使用numpy
  • Y:次要版本号。在添加完整的新功能或(上帝保佑)不兼容的API更改时进行更改
  • Z:修订版本号。针对文档更新、小更改、小错误修复进行更改
  • i:平台中已内置的指标数量