手把手教你把「商品期货计划委托工具」改造成一个日内策略

CN
5 years ago

上一期文章中我们学习了「如何编写一个商品期货计划委托工具」,这是一个半手动的交易策略。那么我们如何实现一个自动的计划委托策略呢?这期文章我们就来一起实现,改造这个工具,改造成一个自动交易的策略。


策略思路

同样使用委托一个订单后,自动生成止损、止盈、反手委托任务的机制,只不过第一个委托订单,按照1分钟级别均线和当前价格的偏离程度来作为触发条件,做回归策略,收盘前平仓。策略并不复杂。


策略实现细节

策略轮询逻辑中的数据准备

获取这些数据用于之后的计算。


需要计算每天早上开盘后的均线,首先要判断出当前以日为单位,开盘时第一根K线的时间戳:

这段代码,就是倒序遍历K线数据,判断第一个符合ts % (1000 * 60 * 60 * 24) == 3600000的K线BAR,ts为K线的时间戳,ts和1000 * 60 * 60 * 24求余,得出一天中,已经渡过了多少毫秒。当这个数值等于3600000时即判断为新的开盘时间开始,因为是早晨9:00开盘,60 * 60 * 1000 = 3600000当时间渡过了3600000毫秒(1小时)时,正好是北京时间9:00。从而拿到每天开盘的第一根K线Bar的时间戳:oneDayBeginTS = ts


然后计算均线:


计算ATR

使用5日ATR指标作为偏离程度的参照,首先计算ATR:


收盘前平仓

oneDayBeginTS + 1000 * 60 * 60 * 69:00开盘时间往后推移6小时,即15:00,nowTs + 1000 * 60即提前一分钟时间,当nowTs + 1000 * 60 > oneDayBeginTS + 1000 * 60 * 60 * 6条件成立,即距离收盘的时间已经小于1分钟了,开始执行平仓。得意于「商品期货交易类库」的强大功能,直接调用全平函数p.CoverAll(),即可全部平仓。商品期货交易类库不熟悉的可以看下这个类库代码,代码是开源的。


触发委托条件

可以看到,和上一篇文章中的创建委托任务代码使用方式类似。由条件Math.abs(records[records.length - 1].Close - avg) > _Dis && !IsEntrust作为触发条件,只要当前的收盘价减去均线当前数值的绝对值大于_Dis这个浮动的触发距离,就创建委托任务。

该委托任务如果触发执行,会和上篇文章一样,自动创建一些列的止盈、止损、反手任务。


回测测试

回测配置:


回测结果:


回测日志:


回测收益并不是很高,但是交易频率相对较高,手续费如果有返还可能可以考虑下。

策略为教学策略,思路仅供参考,值得学习一下实现时的几个小细节,例如时间控制等。


策略地址:https://www.fmz.com/strategy/176022


免责声明:本文章仅代表作者个人观点,不代表本平台的立场和观点。本文章仅供信息分享,不构成对任何人的任何投资建议。用户与作者之间的任何争议,与本平台无关。如网页中刊载的文章或图片涉及侵权,请提供相关的权利证明和身份证明发送邮件到support@aicoin.com,本平台相关工作人员将会进行核查。

OKX:注册即返20%,全网最高返佣,不薅白不薅!
Ad
Share To
APP

X

Telegram

Facebook

Reddit

CopyLink