如何使用交易开拓者(TB)开发数字货币策略
更多精彩内容,欢迎关注公众号:数量技术宅。想要获取本期分享的完整策略代码,请加技术宅微信:sljsz01
交易开拓者(后文以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爬虫分享
【数量技术宅|金融数据分析系列分享】如何正确抄底商品期货、大宗商品