BackTrader 中文文档(一)(1)

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: BackTrader 中文文档(一)

主页

欢迎来到 backtrader

原文:www.backtrader.com/

一个功能丰富的 Python 框架,用于回测和交易

backtrader允许您专注于编写可重复使用的交易策略、指标和分析器,而不必花时间构建基础设施。


开源 - GitHub

使用、修改、审计和分享它。秘诀在于调味料,而你就是厨师。这只是工具。

文档 & 博客

查看快速入门、详尽的文档、博客中的深入主题和想法。

社区已禁用

它被滥用了。可能会在未来回来。与此同时,可以尝试例如:stackoverflow “backtrader”

你好,算法交易!

查看一个简单移动平均线交叉策略的快速示例(仅限多头)

特性

查看backtrader提供的所有好东西的快速概述。

特性

原文:www.backtrader.com/home/features/

实时交易

与 Interactive Brokers、Oanda v1、VisualChart 以及外部第三方经纪人(alpaca、Oanda v2、ccxt,…)一起使用

基于0的索引

  • 在数组中使用0表示当前时刻,以解决访问数组值时的前瞻性偏差
  • 使用-1-2(即:负值)表示最后时刻,以与 Python 的定义保持同步
  • 任何正索引表示未来(在event-only模式下测试代码,会出错)

事件和矢量化

  • 交易逻辑和经纪人始终基于事件运行
  • 如果可能,指标的计算是矢量化的(源数据可以预加载)

一切都可以在仅事件模式下运行,无需预加载数据,就像实时运行一样

数据源(包括实时数据)

  • 内置支持多种数据源:CSV、数据库数据源、YahooFinance、交互经纪人、Oanda v1,…
  • 可以同时运行任意数量的数据源(受内存限制,显然)
    警告
    注意幸存者偏差!
  • 可以混合和运行多个时间框架
  • 集成重采样和重播功能

内置电池的经纪人

  • 订单类型:MarketLimitStopStopLimitStopTrailStopTrailLimitOCOBracketMarketOnClose
  • 多空卖出
  • 未来类工具的持续现金调整
  • 用户定义的佣金方案和信用利息
  • 基金模式
  • 成交量填充策略
  • 自定义滑点

策略 - 交易逻辑

  • 在操作之前自动计算热身期
  • 多个策略(针对同一经纪人)可以并行运行
  • 多种订单生成方法(buy/sellorder_target_xxx、自动信号)
  • 事件通知:传入数据、数据源提供者、订单、交易、定时器

指标

超过 122 种指标,常见的指标都在其中

  • 许多移动平均线(SMAEMA,…)、经典指标(MACDStochasticRSI,…)和其他指标
  • ta-lib集成

性能分析器

几个内置的性能分析器(TimeReturnsTradeAnalyzerSharpeRatioVWRSQN,…)

绘图(额外)

使用单个命令进行自动化(可定制)绘图

注意

为了使其工作,必须安装matplotlib

大小调整器

定义并插入智能自动化的押注策略

观察者

代理可以被绘制,并且可以观察系统中的一切(通常用于绘制统计数据)

杂项

  • 定时器用于随时间重复的操作
  • 交易日历
  • 时区支持

纯 Python

使用最强大且易于使用的编程语言之一。无需外部库。

  • 使用面向对象的方法轻松地将拼图的各个部分拼合在一起
  • 操作符在可能的情况下进行重载,以提供自然语言构造,例如:
av_diff = bt.ind.SMA(period=30) - bt.ind.SMA(period=15)` 
  • 其中av_diff将包含3015周期的简单移动平均线的差值
  • 对于语言结构,不能被覆盖,比如andorif,提供了等效的函数以确保没有功能丢失,例如
av_and = bt.And(av_diff > 0, self.data.close < bt.ind.SMA(period=30))` 

你好,算法交易!

原文:www.backtrader.com/home/helloalgotrading/

一个经典的简单移动平均线交叉策略,可以轻松地以不同方式实现。下面呈现的三个片段的结果和图表是相同的。

from datetime import datetime
import backtrader as bt
# Create a subclass of Strategy to define the indicators and logic
class SmaCross(bt.Strategy):
    # list of parameters which are configurable for the strategy
    params = dict(
        pfast=10,  # period for the fast moving average
        pslow=30   # period for the slow moving average
    )
    def __init__(self):
        sma1 = bt.ind.SMA(period=self.p.pfast)  # fast moving average
        sma2 = bt.ind.SMA(period=self.p.pslow)  # slow moving average
        self.crossover = bt.ind.CrossOver(sma1, sma2)  # crossover signal
    def next(self):
        if not self.position:  # not in the market
            if self.crossover > 0:  # if fast crosses slow to the upside
                self.buy()  # enter long
        elif self.crossover < 0:  # in the market & cross to the downside
            self.close()  # close long position
cerebro = bt.Cerebro()  # create a "Cerebro" engine instance
# Create a data feed
data = bt.feeds.YahooFinanceData(dataname='MSFT',
                                 fromdate=datetime(2011, 1, 1),
                                 todate=datetime(2012, 12, 31))
cerebro.adddata(data)  # Add the data feed
cerebro.addstrategy(SmaCross)  # Add the trading strategy
cerebro.run()  # run it all
cerebro.plot()  # and plot it with a single command
from datetime import datetime
import backtrader as bt
# Create a subclass of Strategy to define the indicators and logic
class SmaCross(bt.Strategy):
    # list of parameters which are configurable for the strategy
    params = dict(
        pfast=10,  # period for the fast moving average
        pslow=30   # period for the slow moving average
    )
    def __init__(self):
        sma1 = bt.ind.SMA(period=self.p.pfast)  # fast moving average
        sma2 = bt.ind.SMA(period=self.p.pslow)  # slow moving average
        self.crossover = bt.ind.CrossOver(sma1, sma2)  # crossover signal
    def next(self):
        if not self.position:  # not in the market
            if self.crossover > 0:  # if fast crosses slow to the upside
                self.order_target_size(target=1)  # enter long
        elif self.crossover < 0:  # in the market & cross to the downside
            self.order_target_size(target=0)  # close long position
cerebro = bt.Cerebro()  # create a "Cerebro" engine instance
# Create a data feed
data = bt.feeds.YahooFinanceData(dataname='MSFT',
                                 fromdate=datetime(2011, 1, 1),
                                 todate=datetime(2012, 12, 31))
cerebro.adddata(data)  # Add the data feed
cerebro.addstrategy(SmaCross)  # Add the trading strategy
cerebro.run()  # run it all
cerebro.plot()  # and plot it with a single command
from datetime import datetime
import backtrader as bt
# Create a subclass of SignaStrategy to define the indicators and signals
class SmaCross(bt.SignalStrategy):
    # list of parameters which are configurable for the strategy
    params = dict(
        pfast=10,  # period for the fast moving average
        pslow=30   # period for the slow moving average
    )
    def __init__(self):
        sma1 = bt.ind.SMA(period=self.p.pfast)  # fast moving average
        sma2 = bt.ind.SMA(period=self.p.pslow)  # slow moving average
        crossover = bt.ind.CrossOver(sma1, sma2)  # crossover signal
        self.signal_add(bt.SIGNAL_LONG, crossover)  # use it as LONG signal
cerebro = bt.Cerebro()  # create a "Cerebro" engine instance
# Create a data feed
data = bt.feeds.YahooFinanceData(dataname='MSFT',
                                 fromdate=datetime(2011, 1, 1),
                                 todate=datetime(2012, 12, 31))
cerebro.adddata(data)  # Add the data feed
cerebro.addstrategy(SmaCross)  # Add the trading strategy
cerebro.run()  # run it all
cerebro.plot()  # and plot it with a single command

参考资料

谁在使用它

原文:www.backtrader.com/home/references/who-is-using-it/

请参阅后面的章节了解使用情况的参考资料。

旧网站参考资料

原始网站说明backtrader至少被以下机构使用:

  • 2 家 Eurostoxx50 银行
  • 6 家量化交易公司

那是很久以前的事了,作者已经知道更多了,包括其他类型的交易公司,如“能源交易”等行业。

为什么没有提供名称?

  1. 我从未问过
  2. 他们从未问过

那你能支撑这些说法吗?

Reddit - [Question] How popular is Backtrader on this sub?中已经问过(并得到了回答)。

让我们引用那个帖子的回答。

引用

不,没有清单。这实际上已经过时了:银行的数量仍然是2(可能还有更多,但我不知道),但有超过 6 家公司在内部使用它,包括在能源市场工作的公司,因为compensation功能允许购买和销售不同的资产来相互补偿(这可能在zipline中不可用),从而允许使用现货和期货价格进行建模(这是能源市场的一个特点,以避免将实际商品交付给您)

这里的关键是必须定义使用情况。例如,我可以引用一位来自其中一家银行的人告诉我的话:“我们使用 backtrader 快速原型设计我们的想法并对其进行回测。如果它们被证明符合我们的预期,并经过进一步完善,它们将被重写为 Java 并放入我们的生产系统中”。

实际上,这是一个量化公司(我亲自访问过的)使用的相同方案:在backtrader中进行原型设计,然后在Java中进行生产。

正如您可以想象的那样,我不追踪那些使用backtrader的人的生活,所以也许一些银行和公司决定不再使用backtrader

我也猜测一些银行和量化公司使用zipline遵循相同的方案。

领英 - 文章/帖子

原文:www.backtrader.com/home/references/linkedin/

Sourabh Sisodiya - Q’s on how do we backtest

领英 - 档案

一份将backtrader列入其个人资料的人员名单。

Ahmed Kamel Taha

Alain Glücksmann

Alex Mouturat

Alexandre GAZAGNES

Álvaro Martínez Pérez

Andrey Muzykin

Bingchen Liu

Carlos Chan

Chen Bo Calvin Zhang

David McCarty

Drew Wei

Frederick (Shu) Bei

Gabriel Ghellere

Harold Liu

Isabel María Villalba Jiménez

Ilya Rozhechenko

Jason L.

Joshua Wyatt Smith, Ph.D.

Justin Wagner

Karl Vernet

Ken Huang

King Hang Terence Siu

Marcelino Franco

Max Paton

Mike S.

Neil Murphy

Piotr Yordanov

Raul Martin

Ruochen (Larry) Pan

Robert Ungvari

Serhii Ovsiienko

Shaozhen Huang

Simon Garland

Sina Pournia

Siyi Li

Tianshu Zhang

蒂姆·莱利

维亚切斯拉夫·佐托夫

温忠

邓兴建

李杨琦

伊宁·成

教育 - 论文

原文:www.backtrader.com/home/references/education/

aCubeIT - 人工智能学院

出售一门课程,其中包括使用 backtrader 制作预测算法。

Arxiv.org - Kartikay Gupta(通讯作者),Niladri Chatterjee

布罗克大学

哥伦比亚大学

  • 金融数学硕士项目
    哥伦比亚大学“金融数学硕士项目”中的一些学生在简历中列出了 backtrader

伊尔汉姆学院

苏黎世联邦理工学院 - Alain Glücksmann - 硕士论文

信息技术学院计算机图形与多媒体系

布尔诺 - 捷克共和国

硕士论文

语言:捷克语

香港科技大学

泰国国家发展管理学院

NTU - 计算机科学与信息工程

国立台湾大学

大数据和深度学习的最新进展…

在第 182 页被提及为用于回测的“具体工具”

科学直达

VTAD(德国技术分析协会)

翻译:德国技术分析协会(注册)

语言:德语

伍斯特理工学院 - 数字 WPI

世界金融会议 - 2019 年第 25 届:投资

博客 - 文章

原文:博客列表

展示 backtrader 的博客列表。

Aadhunik

这是我如何在 Backtrader 中实现超级趋势指标的方法

精算数据科学

Alpha Over Beta

Analyzing Alpha

Andreas Clenow - 《追随趋势》

Angel List - Justin Wagner

Backtest Rookies(多篇文章)

CSDN - 千塘夏家子

DevTo - dennislwm

如何用 4 个 GIF 步骤 Dockerize Backtrader

EtherSchtroumpf

Finanzas.com

Intrinio 博客

LinkedIn - Majid AliAkbar

领英 - Ali Kokaz

Medium - Chul Lim

语言:韩语

Medium - Dim Norin

Medium - Etienne Brunet

Medium - Sumit Ojha

Medium - Towards Data Science

Medium - ttamg

Medium - Ugur Akyol

Medium - Wen Chang

Medium - You Xie

我的金融市场

NTGuardian

利润加

Pythonic Finance

QuantInsti

Rankia.com

Renbuar 博客

ScienceWal

SeanGTKelly 博客

SmudlaTrader

Teddy Koker

The Startup - Roman Paolucci

The Lab - swapniljariwala

视频

原文:www.backtrader.com/home/references/videos/

使用 Python 和 GUI 项目概述 backtrader

使用 Backtrader 框架在 Python 中进行策略回测

Python Backtrader 入门指南

使用 Python3 和 GUI 项目概述 backtrader

教程:Python 中的深度强化学习算法交易

教程:如何在 Python 中对比特币交易策略进行回测

使用 Backtrader 框架进行策略回测

Python 中最佳的算法交易回测框架

Python 和 BAcktrader 的算法交易

金叉算法交易策略与 Python 和 Backtrader

评论 / 提及

原文:www.backtrader.com/home/references/reviews/

4-chan

Bitcointalk

Bogleheads.org

EliteTrader

GAIN Capital

Hacker News

Ian Mobbs

Medium - Hackernoon

Medium - Sten Alferd

NetGuru

PyConUK 2017

Qiita

QuantLabs

Quantopian 论坛

QuantStart

Quora

Statsmage

开发者大会

(葡萄牙语)

TODOTrader

TopQuant

Traders-Mag

X-trader 论坛

工作机会

原文:www.backtrader.com/home/references/jobs/

Alpaca

CodeMentor

自由职业者

FL.ru

Guru.com

语言:俄语

浩来网络技术(上海)有限公司

语言:中文

MindPool

MQL5

PeoplerPerHour

QuantInsti

Shixian

Upwork

智慧招聘

Companies

原文:www.backtrader.com/home/references/companies/

列出了列出(或已列出)backtrader 或公开使用参考存在的公司清单(专业资料博客文章文章等等)

注意

这并不是任何形式的认可、工作证明、官方认可(和任何其他免责声明)

注意

在“公司”下面,您将找到选择将其提供的类 Unix 发行版

Companies

Agora EAFI

来自 LinkedIn 档案和 Rankia/Finanzas.com 文章

Alpaca

Alpha Over Beta

总计

卡尔·维尔内特(Karl Vernet)的工作的一部分。

数据交易

提供算法交易服务的小商店。

Intrinio

NORGATE DATA

Quantify Capital

QuantInsti

来自博客文章、招聘启事…

StormDealers Ltd.

列在网站上

TradeFab

引言:“Backtrader Development Development of Python Backtrader scripts, including backtesting/optimization support.

ZuluQuant

backtrader 列为使用的技术之一,并在社区发布了一份工作启事

发行

FreeBSD Ports

NetBSD

文档

介绍

原文:www.backtrader.com/docu/

欢迎来到backtrader文档!

该平台有两个主要目标:

  1. 易用性
  2. 回到 1

注意

基于*《功夫小子》*的规则(Mr. Miyagi制定的)而松散地制定。

运行该平台的基础知识:

  • 创建一个策略
  • 决定潜在的可调参数
  • 实例化策略中需要的指标
  • 写下进入/退出市场的逻辑

提示

或者:

  • 准备一些指标作为多头/空头信号

然后

  • 创建一个Cerebro引擎
  • 首先:注入策略(或基于信号的策略)
  • 然后:
  • 加载并注入数据源(一旦创建,请使用cerebro.adddata
  • 然后执行cerebro.run()
  • 若要视觉反馈,请使用:cerebro.plot()

该平台高度可配置

希望您作为用户能够发现该平台既实用又有趣。

安装

原文:www.backtrader.com/docu/installation/

要求和版本

backtrader 是自包含的,没有外部依赖项(除非你想要绘图)

基本要求是:

  • Python 2.7
  • Python 3.2 / 3.3 / 3.4 / 3.5
  • pypy/pypy3

若需要绘图功能,还需要额外的要求:

  • Matplotlib >= 1.4.1
    其他版本可能也可以,但这是用于开发的版本

注意:在撰写本文时,Matplotlib 不支持 pypy/pypy3

BackTrader 中文文档(一)(2)https://developer.aliyun.com/article/1489209

相关文章
|
5月前
|
索引
BackTrader 中文文档(六)(2)
BackTrader 中文文档(六)
79 0
|
5月前
|
Unix 索引 Python
BackTrader 中文文档(一)(2)
BackTrader 中文文档(一)
114 0
|
5月前
|
存储 编解码 API
BackTrader 中文文档(四)(1)
BackTrader 中文文档(四)
64 1
|
5月前
|
索引 Python
BackTrader 中文文档(五)(3)
BackTrader 中文文档(五)
64 0
|
5月前
|
存储 数据库连接 数据库
BackTrader 中文文档(三)(2)
BackTrader 中文文档(三)
78 0
|
5月前
|
存储 算法 索引
BackTrader 中文文档(三)(1)
BackTrader 中文文档(三)
101 0
|
5月前
|
Python
BackTrader 中文文档(一)(3)
BackTrader 中文文档(一)
54 0
|
5月前
BackTrader 中文文档(五)(2)
BackTrader 中文文档(五)
72 0
|
5月前
|
Python
BackTrader 中文文档(六)(4)
BackTrader 中文文档(六)
81 0
|
5月前
|
存储 DataX Python
BackTrader 中文文档(五)(1)
BackTrader 中文文档(五)
91 0