更多精彩内容,欢迎关注公众号:数量技术宅。想要获取本期分享的完整策略代码,请加技术宅微信: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为代表的数字货币市场,策略表现不错。

如果你想要本次的完整代码,欢迎加小编微信,与我交流。


往期干货分享推荐阅读

股指期货高频数据机器学习预测

如何使用TradingView(TV)回测数字货币交易策略

如何投资股票型基金?什么时间买?买什么?

【数量技术宅|量化投资策略系列分享】基于指数移动平均的股指期货交易策略

AMA指标原作者Perry Kaufman 100+套交易策略源码分享

【 数量技术宅 | 期权系列分享】期权策略的“独孤九剑”

【数量技术宅|金融数据系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单

【数量技术宅|量化投资策略系列分享】成熟交易者期货持仓跟随策略

如何获取免费的数字货币历史数据

【数量技术宅|量化投资策略系列分享】多周期共振交易策略

【数量技术宅|金融数据分析系列分享】为什么中证500(IC)是最适合长期做多的指数

商品现货数据不好拿?商品季节性难跟踪?一键解决没烦恼的Python爬虫分享

【数量技术宅|金融数据分析系列分享】如何正确抄底商品期货、大宗商品

【数量技术宅|量化投资策略系列分享】股指期货IF分钟波动率统计策略

【数量技术宅 | Python爬虫系列分享】实时监控股市重大公告的Python爬虫

如何使用交易开拓者(TB)开发数字货币策略的更多相关文章

  1. 免费开源数字货币交易所——基于Java开发的比特币交易所 | BTC交易所 | ETH交易所 | 数字货币交易所

    本项目是基于Java开发的比特币交易所 | BTC交易所 | ETH交易所 | 数字货币交易所 | 交易平台 | 撮合交易引擎.本项目基于SpringCloud微服务开发,可用来搭建和二次开发数字货币 ...

  2. [币严BIZZAN区块链]数字货币交易所钱包对接之比特币(BTC)

    在币严BIZZAN开发数字货币交易所的过程中,一共有两大难点,一个是高速撮合交易引擎,另一个是钱包对接,这两者是我们团队以前没有接触过的.这个系列的文章主要介绍数字货币交易所钱包对接实现技术.第一个要 ...

  3. 基于Java的数字货币交易系统的架构设计与开发

    前言 无论是股票交易系统,还是数字货币交易系统,都离不开撮合交易引擎,这是交易平台的心脏.同时,一个优秀的架构设计也会让交易平台的运维和持续开发更加容易.本文基于对开源项目的深入研究,总结了数字货币交 ...

  4. 神经网络与数字货币量化交易系列(1)——LSTM预测比特币价格

    首发地址:https://www.fmz.com/digest-topic/4035 1.简单介绍 深度神经网络这些年越来越热门,在很多领域解决了过去无法解决的难题,体现了强大的能力.在时间序列的预测 ...

  5. 计量经济与时间序列_ACF自相关与PACF偏自相关算法解析(Python,TB(交易开拓者))

    1   在时间序列中ACF图和PACF图是非常重要的两个概念,如果运用时间序列做建模.交易或者预测的话.这两个概念是必须的. 2   ACF和PACF分别为:自相关函数(系数)和偏自相关函数(系数). ...

  6. 一步步教你创建自己的数字货币(代币)进行ICO

    本文从技术角度详细介绍如何基于以太坊ERC20创建代币的流程. 写在前面 本文所讲的代币是使用以太坊智能合约创建,阅读本文前,你应该对以太坊.智能合约有所了解,如果你还不了解,建议你先看以太坊是什么 ...

  7. [币严区块链]数字货币交易所之比特币(BTC)钱包对接 | 自建节点JSON-RPC访问

    BTC钱包对接流程 一.   部署BTC钱包节点 二.   分析BTC钱包的API 三.   通过JSON-RPC访问BTC钱包API 四.   部署测试 一.部署钱包节点 交易平台对接BTC之前,要 ...

  8. [币严区块链]数字货币交易所之以太坊(ETH)钱包对接(四) 使用web3j对接以太坊钱包

    本文给大家介绍了 Web3j Java 版本的框架的基本使用,大家可根据本文的内容进行扩展性的练习,对其他 API 的使用进行尝试. 使用web3j对接以太坊钱包 一.开发准备事项 启动 Geth 此 ...

  9. 央行辟谣未发行“DC/EP”和“DCEP” 法定数字货币仍在测试阶段

    http://www.sohu.com/a/354709423_100157595 近期,中国央行再度就法定数字货币发布公告,指出目前系统仍处于研究测试过程中,市场上交易“DC/EP”或“DCEP”均 ...

随机推荐

  1. a^b(取模运算)

    a^b(sdtbu oj 1222) Description 对于任意两个正整数a,b(0 <= a, b < 10000)计算ab各位数字的和的各位数字的和的各位数字的和的各位数字的和. ...

  2. VScode,code::blocksC语言编译运行出现不支持的16位应用程序解决方法

    最近,莫名其妙c代码就是编译运行不了,老是提示不支持的16位应用程序 然后网上找了各种教程 只有这个成功了(害得我还升了下系统) 实现进入Windows设置 然后点更新和安全--恢复 然后点高级启动- ...

  3. CTF-WEB-XTCTF-Web_php_unserialize

    题目来源 XTCTF-Web_php_unserialize 题目考点:PHP代码审计.PHP正则.PHP序列化与反序列化 解题思路 题目源码 <?php class Demo { privat ...

  4. redhat-NFS服务的配置与应用

    ---恢复内容开始--- 1.NFS服务简述 NFS实现Windows系统中资源共享的功能.NFS采用客户/服务器工作模式,客户端将服务器中的共享目录挂载到自己的某个目录下,这个目录可以与其他客户机的 ...

  5. 深度分析ReentrantLock源码及AQS源码,从入门到入坟,建议先收藏!

    一.ReentrantLock与AQS简介 在Java5.0之前,在协调对共享对象的访问时可以使用的机制只有synchronized和volatile.Java5.0增加了一种新的机制:Reentra ...

  6. [大雾雾雾雾] 告别该死的 EFCore Fluent API (续)

    朋友们好啊, 我是 .NET 打工人 玩双截棍的熊猫 刚才有个朋友问我 猫猫发生什么事了 我说 怎么回事? 给我发了一张截图 我一看!嗷!原来是zuo天有两个数据库, 一个四十多岁,一个三十多岁 它们 ...

  7. Camtasia如何给视频添加测试题

    Camtasia是一款专门录制屏幕动作的工具,除此之外,它还具有即时播放和编 辑压缩的功能,可对视频片段进行剪接.添加转场效果.给视频添加测试题自然也不在话下了. 今天笔者就向大家展示一下如何使用Ca ...

  8. docker和k8s的概念-IaaS、PaaS、SaaS 的区别

    docker和k8s 参考: 什么是Docker? Kubernetes概述 openstack,docker,mesos,k8s什么关系? IaaS.PaaS.SaaS的概念 SaaS:软件服务,S ...

  9. kafka 消息存储分析

    kafka 可以支持海量数据发送,轻轻松松QPS过十万,如果JVM内存存储这一块如果不够优秀,根本无法支持这么庞大的QPS. 存储架构(这里这是落地数据,并木有涉及到序列化发送数据到broker) R ...

  10. mysql-查询不同列的数量合计

    车辆违规信息表testmodel_test 表结构: 表字段:cra_id(车牌号),if_weigui(该次行驶是否违规,0是正常,1是违规) 目的: 查询表中共有几辆车,违规的有几辆车: 方法1 ...