随着数字货币市场的不断成熟,这一领域的量化项目也越来越多。因为数字货币交易的门槛比较低,交易也很灵活,越来越多的交易者或开发者开始尝试自己做量化交易,本篇博文将给大家介绍一个比较易于入门的组合backtrader和ccxt
其实在量化领域,有大量可用框架,比如vnpy,就已经集成了很多数字货币的交易所,可以直接进行回测和在线交易。在这里之所以没有用vnpy,纯粹是因为vnpy对mac用户相当不友好,一个python的框架居然在mac上需要繁琐的安装步骤,甚至很难正常运行。backtrader和ccxt的组合能解决以下问题:
-
对于bitmex(期货交易首选,无他)上无法提取历史数据的问题,ccxt能提供了从2017年开始的所有的ohlcv数据
-
ccxt直接支持python、php、javascript,在开发环境上给了我们更多的选择,更易于在UI上获得更好的用户体验。
-
backtrader则是直接集成了ccxt
因为这些用户体验的原因,我选择了backtrader+ccxt,但不代表这是最好的选择,如果有更好的方案,欢迎大家多交流,给我留言
python官网对于ccxt的介绍是:
A library for cryptocurrency trading and e-commerce with support for many bitcoin/ether/altcoin exchange markets and merchant APIs
即一个封装了诸多数字货币交易平台的api的开源库。
支持python、php、javascript三种语言,github上可以下载源码。
ccxt结构明确,易于使用,所有api被封装成统一格式的接口,返回数据被封装成统一格式的字典,基本省去了api开发时间。
其安装很简单:
pip3 install ccxt
backtrader是一个量化策略的回测分析平台,与其他的框架一样,事件响应机制,支持股票和各种期货交易。项目的地址:https://github.com/backtrader/backtrader
安装方式:
pip3 install backtrader
当然,我们说过选择backtrader的原因是它集成了ccxt。但官方版本是没有集成ccxt的。而是在分支上:https://github.com/bartosh/backtrader/tree/ccxt
因此,我们得通过以下方式安装:
pip install --upgrade git+https://github.com/bartosh/backtrader.git@ccxt
环境安装如此简单,趁热打铁就是赶紧跑以下:
from __future__ import(absolute_import, division, print_function, unicode_literals)
from datetime import datetime, timedelta
import backtrader as bt
from backtrader import cerebro
import time
def connect_broker():
config = {'urls': {'api': 'https://api.sandbox.gemini.com'},
'apiKey': 'XXXXX',
'secret': 'XXXXX',
'nonce': lambda: str(int(time.time() * 1000))
broker = bt.brokers.CCXTBroker(exchange='gemini',
currency='USD', config=config)
cerebro.setbroker(broker)
data_ticks = bt.feeds.CCXT(exchange='geminy', symbol='BTC/USD',
name="btc_usd_tick",
timeframe=bt.TimeFrame.Ticks,
compression=1, config=config)
cerebro.adddata(data_ticks)
class TestStrategy(bt.Strategy):
def next(self):
print('*' * 5, 'NEXT:', bt.num2date(self.data.datetime[0]), self.data._name, self.data.open[0], self.data.high[0],
self.data.low[0], self.data.close[0], self.data.volume[0],
bt.TimeFrame.getname(self.data._timeframe), len(self.data))
if __name__ == '__main__':
cerebro = bt.Cerebro()
hist_start_date = datetime.utcnow() - timedelta(minutes=10)
data_min = bt.feeds.CCXT(exchange='bitmex', symbol="BTC/USD", name="btc_usd_min", fromdate=hist_start_date,
timeframe=bt.TimeFrame.Minutes)
cerebro.adddata(data_min)
cerebro.addstrategy(TestStrategy)
cerebro.run()
connect_broker 函数只是一个连接交易所的栗子,在上面的代码中没有调用。真正的展示只有几行代码:
data_min = bt.feeds.CCXT(exchange='bitmex', symbol="BTC/USD", name="btc_usd_min", fromdate=hist_start_date,
timeframe=bt.TimeFrame.Minutes)
cerebro.adddata(data_min)
cerebro.addstrategy(TestStrategy)
cerebro.run()
其中bt.feeds.CCXT代表着我们直接将CCXT上的数据喂到backtrader的实例当中,使得接下来的回测或者实盘可以直接通过CCXT进行。
这里分享一个社区讨论:
https://community.backtrader.com/topic/623/anyone-use-backtrader-to-do-live-trading-on-bitcoin-exchange/226
课程内容从讲解机器学习中用到的交叉验证和为什么金融时序要使用前向分析(WorkForward)开始,
详细讲解了前向分析框架的每一个函数,每一个参数的用途,并使用边实际运行代码边讲解的方法,通透的讲述了前向分析框架使用到的各个部分,为同学们透彻理解前向分析框架的代码提供了十分方便的途径。
浏览器打开
python官网对于ccxt的介绍是:
A library for cryptocurrency trading and e-commerce with support for many bitcoin/ether/altcoin exchange markets
and merchant APIs
即一个封装了诸多数字货币交易平台的api的开源库。
支持python、php、jav
浏览器打开
1引言目前基于Python的量化回测框架有很多,开源框架有zipline、vnpy、pyalgotrader和backtrader等,而量化平台有Quantopian(国外)、聚宽、万...
浏览器打开
Samaritan 是一个开箱即用的数字货币量化交易框架,可以非常方便地部署属于自己的量化交易平台,目前已适配了 okcoin 中国、火币网、Poloniex、BTCC、中国比特币、okcoin 期货
浏览器打开
《从编程小白到量化宗师之路》系列课程是一套综合性实战课程,涵盖股票,期货,虚拟货币等的交易方法和策略手段。
《BackTrader从数据采集到实盘交易》是本系列的第一个C类初级课程。本网站的课程宗旨是缩短个人或小型投资者与大型机构投资者之间的的差距。
课程内容从python环境的安装开始使用,到股票数据采集,BackTrader开源回测软件的应用,并包含一套机构常用策略的讲解和实现。
与市面上的其他理论课程不同,本课程注重实战,学员上课后,将可以达到自动化更新每日股票数据,自动化选股,自动化提示股票交易时机的目标。
在3000多种股票的中国市场,您将有获得现代化高科技力量的强力支持。
《从编程小白到量化宗师之路C02---BackTrader基础》是从上述课程中拆分出来的细分课程,便于同学有针对性的选择学习。
这是《从编程小白到量化宗师之路》系列的第二个高级课程。本课程宗旨是缩短个人和小型结构投资者和大型机构投资者的差距。
课程内容从C++环境的安装开始使用,到期货数据采集,完美实现一套期货交易高频软件开发(也可做虚拟货币交易)。
课程注重实战,学员上课后,可以达到:日常进行的高频交易,自定添加新的股票接口,添加新的虚拟货币交易所。
BackTrader 软件使用介绍 backtrader中文文档主要功能本框架主要有两个设计目标运行此回测框架的基础知识
backtrader中文文档
<文档由 BackTrader.cn 聘请专业人员进行翻译,转载请注明出处>
本文档来自 网站 BackTrader.cn
Backtrader 是一个基于 Python 的回测交易开发框架,使用它可以方便的编写技术指标和交易策略。
浏览器打开