手把手教你移植一个麦语言策略,进阶篇

手把手教你移植一个麦语言策略,进阶篇

免责声明:本文旨在传递更多市场信息,不构成任何投资建议。文章仅代表作者观点,不代表火星财经官方立场。

小编:记得关注哦

来源:发明者量化

上一篇文章手把手教你写策略–移植一个my语言策略中,对于一个简单的麦语言策略做了移植测试,如果是一个稍微复杂一点的麦语言,如何移植成JavaScript语言的策略呢?这里面有哪些技巧呢?

我们首先看下这次要移植的策略:


这个麦语言策略开头的部分是回测设置的配置代码,为了方便对比,设定一个统一的回测配置。这个策略也是随机找的一个策略,也并不算太复杂(相对上次文章中的复杂一些),是比较有代表性的策略。移植一个麦语言策略,首先要通篇看下策略内容,麦语言策略代码比较简练,基本上看下来可以对策略全局有一定的认识,这个策略我们看到使用到了几种指标函数,:

先造个轮子

EMA

该指标函数,在FMZ平台用JavaScript语言编写策略时直接有现成的指标库函数。即:

SMA

需要我们动手的是这个指标,我们发现在FMZ的TA库中没有支持SMA这个指标函数,在talib库中SMA指标和麦语言中的也有差别:

手把手教你移植一个麦语言策略,进阶篇

可以看到,参数部分除了周期参数,还有一个权重参数。

FMZ API文档中talib库中SMA指标函数的描述为:

手把手教你移植一个麦语言策略,进阶篇

可见是一个简单移动平均指标。

这样就只能动手自己实现一个了,作为使用JavsScript语言编写策略的开发者,这也是必备技能之一,毕竟如果没有现成的轮子,车还是要开的,造一个就是了。

说实话,对于指标之类的研究不多,一般都是不懂的就搜索,查资料。对于SMA查到这些:

手把手教你移植一个麦语言策略,进阶篇

感觉这个说的算法过程挺靠谱,实现一下:


编写填充部分

策略框架使用手把手教你写策略–移植一个my语言策略文章中相同的框架,主要填充两个部分:

手把手教你移植一个麦语言策略,进阶篇

首先,做行情数据处理、指标计算。

手把手教你移植一个麦语言策略,进阶篇

我们把麦语言这部分一句一句的功能逐个处理:

  • 1、

    这句可以理解为,要把K线数据中的每根BAR的最高价、最低价、收盘价相加再除以3,计算平均值,然后存为一个数组,和每个BAR一一对应。可以这样处理:

    
    

    在主循环OnTick函数中调用这个函数就可以了,例如:

    
    
  • 2、AP计算完成以后,接着计算:

    这里要使用上一步算出的AP这个数据,计算ESA,其实这个ESA就是AP的「指数移动平均」,即EMA指标,所以我们就用AP作为数据,N1作为EMA指标的参数,计算EMA指标就可以了。

    
    
  • 3、

    使用计算出的、计算数据。

    此处代码注释可以看下,有些指标计算的技巧。

    
    
  • 4、

    这个计算方式和步骤1类似,直接放出代码。

    
    
  • TCI:=EMA(CI,N2);只是计算CI数组的EMA指标。

    
    
  • WT2:SMA(WT1,4,1);

    最后这步骤,用到了我们之前造好的轮子函数。

    
    
  • 交易信号的移植就非常简单了。

    
    

    阅读这几句麦语言代码,可知,就是对于WT1、WT2这两条指标线的金叉、死叉判断作为开仓条件,需要注意的是,使用的是前一个交叉信号。

    直接用该麦语言策略回测,我们观察下:

    手把手教你移植一个麦语言策略,进阶篇

    通过麦语言策略实际运行观察可知,在开仓点检测到信号时,实际是检测开仓点这个BAR往前数2个BAR的位置是否是金叉。上图可以明显看出:

    手把手教你移植一个麦语言策略,进阶篇 手把手教你移植一个麦语言策略,进阶篇

    信号检测部分的填充代码可以写为:

    
    

    这里可以思考下,为什么麦语言的SPK、BPK指令可以用以上代码实现。

    回测

    回测配置:

    手把手教你移植一个麦语言策略,进阶篇

    麦语言版本回测:

    手把手教你移植一个麦语言策略,进阶篇

    JavaScript版本回测:

    手把手教你移植一个麦语言策略,进阶篇 手把手教你移植一个麦语言策略,进阶篇

    OnTick函数开头部分的代码,用来让回测速度快一点,是让策略以收盘价模型来运行,有兴趣可以详细分析下。

    
    

    完整的教学策略代码:

    https://www.fmz.com/strategy/174457

    感谢阅读

    来源:MarsBit

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2019年11月10日
    下一篇 2019年11月10日

    相关推荐