【编写技巧】:wh8 跨周期编写方法介绍 (文华财经)

投资者咨询:【编写技巧】:wh8 跨周期编写方法介绍 (文华财经)
来源:文华财经  日期:2018-4-19 15:54


大家在做全自动交易通常需要多个周期一起来看研究。一是为了寻找合适的入场时机,二是可以实现多周期共振
 
文华中,wh8  支持编写专业的跨周期模型,实现上面多周期同时判断的交易思路


 
本帖主要从以下方面,为大家介绍跨周期模型:
 

1、编写方法

2、注意事项

3、编写案例

4、编写及使用时的常见问题
 

技术人员回复
日期:2018-4-19 16:04

在正式学习跨周期编写前,我们先做个比喻,方便更好的理解跨周期的编写格式:

比如:我需要完成一项工作。但工作的其中一小部分,需要A来辅助帮我。

也就是说,这项工作被分成2部分:我是这项工作的主要完成人,A是辅助人



跨周期模型也是这个道理,模型也是分成2部分的

如:我在日线上想引用30分钟中的MA数据。   那日线,相当于是主模型。30分钟,相当于辅助的指标。

所以,跨周期一定需要分别建立2个模型:一个是主模型,用于装载日线所需要的判断,另一个是辅助的指标,用于装载30分钟所需要的MA数据

编写时,在主模型中只需要把辅助的指标引用过来,实际使用时,加载主模型即可





一、编写方法:

_________________________________________________________________


1、跨周期模型函数介绍


                    #IMPORT [PERIOD,N,FORMULA] AS VAR


     函数中各项所表达的含义:

       ① #IMPORT [ , , ] AS :这部分是跨周期的函数名(固定格式),是编写跨周期主模型中必须要写的;

       ②  PERIOD     :表示我想要引用的K线周期级别,比如:我在日线上想引用30分钟,这里就编写MIN
            N             :表示我想要引用的具体K线周期数比如:我在日线上想引用30分钟,这里就编写30

            FORMULA 表示引用的辅助指标的名称,比如,我在日线上想引用30分钟MA,这里就是装载30分钟所需要的MA数据的指标名称

       ③ VAR    :引用的辅助的指标起一个新名字,比如,张三,李四,AA,BB 等

       ④ #IMPORT  函数是没有分号结尾的!


————————————————————————————————————————————————————————————

2、跨周期模型编写步骤


                     确定被引用内容 + 编写主模型


      第一步:建立被引用的模型,命名 AA

                 MA5:=MA(C,5); //定义MA5为5周期均线
                 MA10:=MA(C,10);  //定义MA10为10周期均线

      第二步:重新新建一个模型,即跨周期主模型
 
                #IMPORT [MIN,30,AA] AS VAR
                 MA5Y:VAR.MA5;  //跨周期引用,30分钟AA指标中的MA5函数
                 MA10Y:VAR.MA10;  //跨周期引用,30分钟AA指标中的MA10函数
                 CLOSE>MA5Y,BPK;  //当前周期最新价高于30分钟周期的MA5时,执行买平开指令
                 CLOSE<MA10Y,SPK;  //当前周期最新价低于30分钟周期的MA10时,执行卖平开指令
                 AUTOFILTER;  //启用一开一平信号过滤机制


按此在新窗口浏览图片
文件名:图片1.png


按此在新窗口浏览图片
文件名:图片2.jpg

 
                                                                       
技术人员回复
日期:2018-4-19 16:08
 
二、注意事项:

——————————————————————————————————————————————


               #IMPORT [PERIOD,N,FORMULA] AS VAR
 

   1、 PERIOD支持的周期类型很全面:

     支持:SEC(秒),MIN(分钟)、HOUR(小时),DAY(日),WEEK(周),MONTH(月),QUARTER(季),YEAR(年),和CUSHOUR(自定义周期)
 
 
   2、被引用的周期N,需要为大于等于1的整数。比如:3分钟,4小时
 
      【注】
 
       周,月,季,年,只能引用1个周期数据,比如:1周,1月,1季,1年

       这4个周期,编写超过1取1,比如: #IMPORT [WEEK,2,FORMULA] AS VAR //跨周期引用1周的数据
 
 
   3、FORMULA为被引用指标的名称,可以为英文字母,也可以是汉字。比如:AA ,  跨周期
      
       如果被引用指标命名为其他名称,比如AA 
  
       那么跨周期对应引用名称,也要随之修改为,#IMPORT [DAY,2,AA] AS VAR
 
 
   4、 VAR 名不能与函数名重复。比如: MA ,CLOSE,ABS,即 源码中标蓝的
 
          可以和被引用指标名称相同。比如:  引用AA指标 , #IMPORT [DAY,2,AA] AS AA
 
 
   5、 FORMULA  指标不需要加载,只将跨周期主模型加载到主图k线上
                                     
技术人员回复
日期:2018-4-19 16:27

    三、编写案例

——————————————————————————————————————————————


(1)跨周期引用指标函数


   例1: 在1分钟周期上引用30分钟周期的MA5和MA10指标

   首先,新建一个被引用周期的模型AA,保存需要加载的MA5和MA10指标

   MA5:MA(C,5);
   MA10:MA(C,10);

   其次,在引用模型模型中引用跨周期函数,之后建立好的跨周期模型加载到1分钟周期上

   #IMPORT [MIN,30,AA] AS VAR
   MA5Y:VAR.MA5;
   MA10Y:VAR.MA10;



   》》如果引用多个周期,则VAR需要定义不同的名称

   
   例2: 在1分钟周期上同时引用30分钟,1小时,1日周期的MA5和MA10指标

   AA指标不变,跨周期模型:

   #IMPORT [MIN,30,AA] AS VAR1  //无分号结尾
   MA5Y:VAR1.MA5;
   MA10Y:VAR1.MA10;
   #IMPORT [HOUR,1,AA] AS VAR2
   MA5X:VAR2.MA5;
   MA10X:VAR2.MA10;
   #IMPORT [DAY,1,AA] AS VAR3   //表示多人完成一项工作,从不同人处调取数据,进行汇总
   MA5S:VAR3.MA5;
   MA10S:VAR3.MA10;
                   
技术人员回复
日期:2018-4-19 16:32
 (2)跨周期引用条件判断


    例3: 在1分钟周期上引用30分钟周期的MA5和MA10金叉、死叉

    首先,新建一个被引用周期的模型AA,保存需要加载的MA5和MA10指标

    MA5:MA(C,5);
    MA10:MA(C,10);
    JC:CROSS(MA5,MA10);//5,10均线金叉
    SC:CROSSDOWN(MA5,MA10);//5,10均线死叉

    其次,在引用模型模型中引用跨周期函数,之后建立好的跨周期模型加载到1分钟周期上

    #IMPORT [MIN,30,AA] AS VAR
    JCY:VAR.JC;
    SCY:VAR.SC;
    JCY,BPK;
    SCY,SPK;
    AUTOFILTER;

    【注】

    跨周期引用条件时,需要在被引用指标中先定义条件,在主模型中直接引用条件

    在跨周期中引用函数在判断,与直接取条件判断值是不同的


       
技术人员回复
日期:2018-4-19 16:35
 
常见问题:

___________________________________________________________


1、怎么核对被引用周期是否满足条件?

2、跨周期编写中是否可以引用未来函数?

3、被引用指标中含有开平仓指令,是否可以直接引用交易价格呢?

4、加载模组运行时有时候弹出“ 跨周期不能超过72个数据源”是怎么回事?

5、含有跨周期的模型回测慢是为什么?

6、在5Min的K线上引用1小时K线的60均线,但是没有画线为什么?

7、小周期引用大周期时,历史k线大周期没有显示条件满足,但是小周期就出现信号了是为什么?

  
           
技术人员回复
日期:2018-4-19 16:44
 1、怎么核对被引用周期是否满足条件?

 


单击k线图》右键》对比跨周期/合约k线图 ( 快捷键Alt + Q )

 

可以跨周期模型与被引用指标进行对比查看,方便核对信号,以及判断条件等思路



按此在新窗口浏览图片
文件名:图片3.jpg



2、跨周期编写中是否可以引用未来函数?



不支持的


未来函数是向后调取数据计算的,存在一定的预测性,也可能会造成信号忽闪


一般都是在看盘指标画线时取点使用,交易模型中是不支持使用的,跨周期被引用指标中也不支持未来函数


因为交易模型中的信号必须要以真实准确为准,专业的程序化用户都不会使用未来函数来判断信号的




3、被引用指标中含有开平仓指令,是否可以直接引用交易价格呢?



不能的


被引用指标是不加载到主图k线上,所以无法取到对应的开平仓价格的


跨周期编写引用的是其他周期的函数,条件判断等,而不能引用未加载模型的交易价格


您这样的思路,可以通过引用满足条件的时候的收盘价来间接实现




4、加载模组运行时有时候弹出“ 跨周期不能超过72个数据源”是怎么回事?



弹出这个提示是因为软件中加载的跨周期模型超过了限制


72个数据源是指:整个软件中  主图、副图、模组、页面盒子等最大计算的数据源总量不超过72个  


假设一个模型中用了4个数据源,模型加载了5个模组,那么软件中就调用了20个数据源


跨周期、跨合约是需要计算很多次,较多的计算会占用很多内存和CPU,如果本地电脑配置不足,会拖慢运行速度,所以建议合理使用


如果需要加载的模组比较多,可以通过运行多个客户端来实现加载更多的模组,或者精简下模型的思路



附:


数据源,指加载一个模型,需要调用的周期数,一个周期就是一个数据源


如,楼上案例1,调用2个数据源,加载的周期1min,与调用周期30Min,


    楼上案例2,调用4个数据源,加载的周期1min,与调用周期30分钟,1小时,1日



   
技术人员回复
日期:2018-4-19 16:46
 5、含有跨周期的模型回测慢是为什么?



跨周期是需要计算很多次,较多的计算会占用很多内存和CPU,所以模型中引用过多数据源,加载的速度相对慢一些


如果您认为回测慢,可以调整信号计算起始时间,把时间设置的短一些


    
按此在新窗口浏览图片
文件名:图片4.png

 


65MinK线上引用1小时K线的60均线,但是没有画线,为什么?



跨周期是将基础数据合成之后引用的


不显示画线,说明本地的基础数据量不够合成均线数据


K线图右键》补充历史数据,选择1分钟基础数据,多补充一些就可以




7、小周期引用大周期时,历史k线大周期没有显示条件满足,但是小周期就出现信号了是为什么?


比如,大周期是阳线,小周期也是阳线的时候开仓,后续查看大周期是阴线,小周期就开仓了



这是正常的


因为跨周期是实时引用的, 不能用大周期收盘情况,来判断小周期盘中情况


大周期盘中可能是阳线收盘变为阴线了,所以盘中出信号那个时刻是满足大小周期都是阳线的


这种情况,可以考虑判读大周期上一根情况,因为大周期没收盘前当根k线情况不固定,但上根k线情况固定


         
技术人员回复
日期:2018-4-28 9:52
 请不要在此跟帖