如何使用交易开拓者(TB)开发数字货币策略

更多精彩内容,欢迎关注公众号:数量技术宅。想要获取本期分享的完整策略代码,请加技术宅微信:sljsz01
为何使用交易开拓者(TB)作为回测工具
交易开拓者(后文以TB简称)是一个支持国内期货市场K线数据回测、交易的第三方交易平台。TB自带回测框架,投资者在开发量化策略时,只需关注实现策略主逻辑,它的自带编程语言相比较C++、Python也更简单,适合编程零基础的投资者快速上手。TB自带的基于K线的回测框架,在期货市场已经经过许多交易员多年实盘的检验,结果稳定可靠。
尽管TB回测框架完善、语法简单。但其内置的数据局限于期货市场的历史数据,如果我们需要测试其他类别的资产,比如数字货币,就需要通过外部导入数据的方式。
本次分享,我们将带着大家学习从数字货币历史K线数据的获取、转换为TB支持的数据格式导入、在TB中利用导入的历史数据测试数字货币的交易策略、最终得到策略回测结果的这一全过程。
数字货币K线数据的获取
本次测试,我们将采用数字货币的大周期K线数据。我们曾经在前文的分享中提到过数字货币免费数据的获取途径,对于大周期K线数据,可以从CryptoData网站下载数据。这次我们将下载币安交易所的历史数据,该网站币安交易所能获取到的数字货币品种更为丰富。

我们选择币安交易所 BTC/USD 1小时K线数据下载,下载得到的原始数据,打开字段如下。

数据转换格式、导入TB
请大家注意,下载数据虽然包含了K线所需的全部字段:日期时间、开、高、低、收、成交量、成交额,但这个数据是无法直接导入TB的。导入TB的数据,我们需要和TB本身支持的数据字段格式,完全一致。我们先从TB下载其内置的期货数据,看一下内置数据的字段格式,我们以沪银期货,同样是1小时周期的K线为例。

通过对比TB内置的数据格式,与我们现有数字货币的数据格式,有以下几个地方需要预处理:一是,日期时间的格式需要转换;二是,Symbol列不需要,将其去除;三是,成交量(VolumeBTC、VolumeUSDT)保留一列即可。

我们使用Python,按照上述三点规则,对数据进行预处理,并存为新的CSV文件。以上是部分代码,完整代码请联系小编。打开保存的csv文件,查看数据字段格式是否成功转换。需要特别注意,保存的文件不能有列名,否则TB会产生导入错误。
紧接着,我们就将处理好的数据导入TB。选择数据管理,由于没有数字货币对应的交易所,此处随机选择一个交易所即可,点击自定义商品。

填写该品种的基本属性数据。其中的重要字段:(1)报价精度,根据原始数据精度填写;(2)最小变动,1即为1个报价精度单位;(3)交易时间段:数字货币24小时不间断交易。

再选择数据维护栏,商品选择刚才新建的品种名称,由于我们导入的是1小时K线,周期选择1小时。

点击导入数据,选项按默认设置即可,选择我们刚才用Python预处理好并保存的csv文件。此时TB提示导入成功,下方数据栏显示正确的K线数据,就说明我们自定义的数据,已经成功导入。


数字货币交易策略的开发、回测
成功导入数字货币BTC/USD的1小时K线数据后,接下来就进入最激动人心的一步:量化策略的回测。我们首先新建一个超级图表,该图表正常显示btcusdt这个新定义品种的K线数据,于是我们可以基于这个超级图表,来做接下来的回测。

我们将在期货市场开发的一个交易策略,移植到数字货币市场,不需要修改任何代码,直接进行测试。

TB轻松完成了我们导入品种的回测,可以看到,测试的效果让人惊喜,以btc为代表的数字货币市场,策略表现不错。
如果你想要本次的完整代码,欢迎加小编微信,与我交流。


往期干货分享推荐阅读
【数量技术宅|量化投资策略系列分享】基于指数移动平均的股指期货交易策略
AMA指标原作者Perry Kaufman 100+套交易策略源码分享
【数量技术宅|金融数据系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单
【数量技术宅|量化投资策略系列分享】成熟交易者期货持仓跟随策略
【数量技术宅|金融数据分析系列分享】为什么中证500(IC)是最适合长期做多的指数
商品现货数据不好拿?商品季节性难跟踪?一键解决没烦恼的Python爬虫分享
【数量技术宅|金融数据分析系列分享】如何正确抄底商品期货、大宗商品
【数量技术宅|量化投资策略系列分享】股指期货IF分钟波动率统计策略
【数量技术宅 | Python爬虫系列分享】实时监控股市重大公告的Python爬虫
如何使用交易开拓者(TB)开发数字货币策略的更多相关文章
- 免费开源数字货币交易所——基于Java开发的比特币交易所 | BTC交易所 | ETH交易所 | 数字货币交易所
本项目是基于Java开发的比特币交易所 | BTC交易所 | ETH交易所 | 数字货币交易所 | 交易平台 | 撮合交易引擎.本项目基于SpringCloud微服务开发,可用来搭建和二次开发数字货币 ...
- [币严BIZZAN区块链]数字货币交易所钱包对接之比特币(BTC)
在币严BIZZAN开发数字货币交易所的过程中,一共有两大难点,一个是高速撮合交易引擎,另一个是钱包对接,这两者是我们团队以前没有接触过的.这个系列的文章主要介绍数字货币交易所钱包对接实现技术.第一个要 ...
- 基于Java的数字货币交易系统的架构设计与开发
前言 无论是股票交易系统,还是数字货币交易系统,都离不开撮合交易引擎,这是交易平台的心脏.同时,一个优秀的架构设计也会让交易平台的运维和持续开发更加容易.本文基于对开源项目的深入研究,总结了数字货币交 ...
- 神经网络与数字货币量化交易系列(1)——LSTM预测比特币价格
首发地址:https://www.fmz.com/digest-topic/4035 1.简单介绍 深度神经网络这些年越来越热门,在很多领域解决了过去无法解决的难题,体现了强大的能力.在时间序列的预测 ...
- 计量经济与时间序列_ACF自相关与PACF偏自相关算法解析(Python,TB(交易开拓者))
1 在时间序列中ACF图和PACF图是非常重要的两个概念,如果运用时间序列做建模.交易或者预测的话.这两个概念是必须的. 2 ACF和PACF分别为:自相关函数(系数)和偏自相关函数(系数). ...
- 一步步教你创建自己的数字货币(代币)进行ICO
本文从技术角度详细介绍如何基于以太坊ERC20创建代币的流程. 写在前面 本文所讲的代币是使用以太坊智能合约创建,阅读本文前,你应该对以太坊.智能合约有所了解,如果你还不了解,建议你先看以太坊是什么 ...
- [币严区块链]数字货币交易所之比特币(BTC)钱包对接 | 自建节点JSON-RPC访问
BTC钱包对接流程 一. 部署BTC钱包节点 二. 分析BTC钱包的API 三. 通过JSON-RPC访问BTC钱包API 四. 部署测试 一.部署钱包节点 交易平台对接BTC之前,要 ...
- [币严区块链]数字货币交易所之以太坊(ETH)钱包对接(四) 使用web3j对接以太坊钱包
本文给大家介绍了 Web3j Java 版本的框架的基本使用,大家可根据本文的内容进行扩展性的练习,对其他 API 的使用进行尝试. 使用web3j对接以太坊钱包 一.开发准备事项 启动 Geth 此 ...
- 央行辟谣未发行“DC/EP”和“DCEP” 法定数字货币仍在测试阶段
http://www.sohu.com/a/354709423_100157595 近期,中国央行再度就法定数字货币发布公告,指出目前系统仍处于研究测试过程中,市场上交易“DC/EP”或“DCEP”均 ...
随机推荐
- C语言设计模式(自我揣摩)
NBModule.h #ifndef _NBMODULEFRAME_H__ #define _NBMODULEFRAME_H__ #include "total.h" enum N ...
- IDEA 2019.3.3 + Pycharm 2020.2.1 安装包及破解步骤
IDEA IDEA的破解流程就不用再说了,免费试用,添加VMOptions参数,选择破解jar的路径,重启IDEA. 下载地址:链接:https://pan.baidu.com/s/1aTRATVTL ...
- 来吧,展示!SpringBoot OSS 整合全过程,没见过比这更详细的了
前言 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量.安全.低成本.高可靠的云存储服务.其数据设计持久性不低于 99.9999999999%(12 ...
- TCP接收窗口为什么变大了?
今天用wireshark抓取TCP连接时的报文发现客户端的Win变大了,这里是使用了Window Scale来扩张TCP接收窗口,使得接收窗口可以大于65535字节. 首先1号包是TCP第一次握手连接 ...
- LeetCode周赛#206
1583. 统计不开心的朋友 #模拟 #暴力 题目链接 题意 有n为朋友,对每位朋友i,preference[i]包含 按亲密度从大到小 的朋友编号. 朋友们会被分为若干对,配对情况由pairs数组给 ...
- 网络拓扑实例之交换机基于全局地址池作为DHCP服务器(七)
组网图形 DHCP服务器简介 通常用户希望网络中的每台终端能够动态获取IP地址.DNS服务器的IP地址.路由信息.网关信息等网络参数,不需要手动配置终端的IP地址等网络参数:另外,针对一些移动终端(手 ...
- VUE:组件总结
##### 组件化 //node.js里面 require("./index.js") 模块化就是将系统功能分离成独立的功能部分的方法,一般指的是单个的某一种东西,例如js.cs ...
- Apache Beam,批处理和流式处理的融合!
1. 概述 在本教程中,我们将介绍 Apache Beam 并探讨其基本概念. 我们将首先演示使用 Apache Beam 的用例和好处,然后介绍基本概念和术语.之后,我们将通过一个简单的例子来说明 ...
- rest-framework:权限组件
一 权限简介 只用超级用户才能访问指定的数据,普通用户不能访问,所以就要有权限组件对其限制 二 局部使用 from rest_framework.permissions import BasePerm ...
- celery异步发送短信
1.使用celery异步发送短信 1.1 在 celery_task/mian.py 中添加发送短信函数 # celery项目中的所有导包地址, 都是以CELERY_BASE_DIR为基准设定. # ...