干货丨多周期模型开发实战(二):如何在恒盈开发平台写策略

 

小编已经在交易开拓者(TB)、金字塔,还有我们自己的恒盈量化交易平台上研究过多周期模型的实现。...



小编已经在交易开拓者(TB)、金字塔,还有我们自己的恒盈量化交易平台上研究过多周期模型的实现。在此分别介绍一下。

在交易开拓者和金字塔中开发该模型,由于要实现跨周期的数据交互(最终的交易信号需要同时参考在各个周期中的MACD指标),而他们的系统是无法实现跨周期的数据共享的,因此只能通过再编写一个函数,先将小周期合并成大周期,再进行计算。由于涉及合并,因此最小的周期必须要能够整除另外的大周期。而如果想要在M3、M5、M15、M30上计算来进行交易,也需要将程序写在M1上,否则由于M3无法转换成M5,会导致一系列问题。

在恒盈的模型开发平台上,我们提供了一个“全局数据”,可以利用它来实现在多个周期之间的数据共享,也就是说,只需要将在其他周期上的MACD判断结果放在“全局数据”中,共享给进行交易判断的周期,就能很方便地做到多个周期共同来决定是否进行交易。

好了,我们来看一下在恒盈模型开发平台中怎么编写策略吧!



按照官方网站上的《模型开发手册》中的步骤,可以打开我们的模型开发平台。在此我们可以看到三个函数:OnBarOpen、OnBarUpdate和OnBarClose,这三个函数分别会在新K线出现、每过一个Tick(0.5秒)和新K线出现时候触发。需要注意的是,OnBarClose也是在新K线出现时候才会认为旧K线结束,并进行触发的。另外,还有两个区域:参数和内部属性,参数是暂时指定的,在进行策略回测的时候可以优化的数据,而内部属性则不可以再进行优化。

如果我们需要用到“某个计算过程”很多次,恒盈是支持自己编写函数的,可以写在任意处,只要不与OnBarOpen、OnBarUpdate和OnBarClose产生嵌套就行。在上一篇我们讲过,MACD是基于EMA的,也就是说需要对移动平均线进行平滑处理,那么就可以将平滑指数α的计算过程写成一个函数,α=2/(N+1),因此可以这样写:

public static double weightFactor(int length)
{
return 2.0 / (length + 1);
}

其中length表示了传入该函数的参数(平滑指数周期),int表示该参数的类型是整形(也就是整数),所以这个函数表示:传入一个整数length,返回2.0 / (length + 1)的值(double值,也就是可以带有小数的)。细心的读者一定发现了这边用了2.0,而不是2,这是为什么呢?如果用2,系统会判断除号两边都是整数(length也是整数),因此返回的值也是整数,这样就会导致返回值有误。

编写完计算α的函数之后,就可以在上面的策略编写中进行调用了。下一篇,我们将会实现完整的多周期模型,从中可以看到如果调用自己写的函数,并且如何实现全局数据的共享。

恒盈官网:hengying. hengtiansoft.com 或扫描二维码关注恒盈。

恒天软件出品|恒盈

微信ID:hengyingjiaoyi

长按二维码关注恒盈


    关注 恒天软件


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册