你平时写代码的时候是否会因调参这个问题所困扰
比如,当一个策略参数很多时,调参很麻烦。
这个问题让一些像我一样记性不好的程序员,粗心大意的策略研究员来说非常苦逼。
那么今天我想给大家分享一个方便调参的方法
我用Dual Thrust feat. ATR这个例子来说明
Dual Thrust还有ATR 他俩相信大家都非常熟悉,从无论什么券商为了滥竽充数捞点稿费都出过关于他俩的研报。
在此还是简单说一下
Dual Thrust

其实就是为了算N日前的最大振幅range,然后用一个系数来调节他,结合单日的开盘价做买卖的轨道
下图对这个range有一个比较直观的解释。

ATR
至于ATR,其实是算一个某一项时间的TR的移动平均
先算TR,网上给的方法是

然后对N日的TR算移动平均
这个N一般取14天,除此之外还可以去10,20,60等,这个就看你怎么调参了
Dual Thrust feat. ATR
现在他俩要结合在一起是什么意思呢?
ATR本来是算这一项的平均振幅,而Dual Thrust是根据振幅来交易。
而对于市场来说振幅太小,显然这个市场上没肉。如果使用Dual Thrust去做交易,就是鸡脚杆上刮油,油水不多冷不防还要挨一刀亏手续费,这样费力不讨好。
那么我可以先判断今天振幅怎么样,如果今天振幅指标够了我在开仓这样就可以避免挨很多不必要的飞刀岂不美哉。
于是我ATR除以个昨天的close,得到ATR波动率。
只要ATR大于0.01的我才来交易,这样就避免了那种小幅震荡的酱油日。
对于止损止盈
止盈我用动态的,也就是回撤百分之40我出场
止损我用静态的,如果价格小于进场时周期的最低价就拜拜。
来了来了,重点来了
当我写完代码跑了一圈,发现不行,想换个品种换个参数试一下的时候突然发现了这个问题。

圈儿里的参数都是要修改的。
足足有八个。
而且他们隔得很远,只要稍微一走神忘改了一下程序要么出错要么跑的结果不对。
这就是说我每次改参数都得注意这八个。对于这种忘性大的人来说怎么得了。

不过在这个平台上天无绝人之路。
我偶尔在编程程序的页面上看到了另一个按钮。

打开一看啥也没有,啃爹

不过耐心的我去API文档里面找了找,居然发现新大陆了!!!!!!

我突然发现这个地方可以使调参变得更方便,
他是这样操作
比如我设置了一个合约和它所在市场的参数。原来我想换合约我得去代码里面找合约的位子
Like that

But现在不用了
我现在直接在参数这个页面里设置一个参数

再把原来位置的代码换成
context.param['Market']
context.param['contract']
如图所示

这样的话山河改观
我把全部的参数都设置了

最后要改什么参数时,只要翻到参数页面一目了然了

这样就可以随心所欲的调整参数跑策略了yeah

虽然调了几下参数,结果还是这么差强人意, 但是调参的过程方便了。我再也不用面对代码页面了,而是非常人性化的UI页面
Come on