以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  交易策略发布专区  (http://222.73.7.161/bbs/list.asp?boardid=10)
----  【趋势策略范例】跨周期引用编写示范  (http://222.73.7.161/bbs/dispbbs.asp?boardid=10&id=172991)

--  作者:gxx978
--  发布时间:2019/11/8 16:12:31
--  【趋势策略范例】跨周期引用编写示范

       跨周期引用在日常的策略编写中是经常需要使用的,可以在本策略运行的周期上,引用到另外一个周期上的指标值,来作为本策略的开平仓条件。下面分别对大周期引用小周期和小周期引用大周期的指标编写进行示范。

 

      被引用指标公式MA指标,代码如下:

       INPUT:N1(5,1,100,1),N2(10,1,100,1),N3(20,1,100,1),N4(30,1,100,1);   //定义参数N1,N2,N3,N4

      MA5:MA(C,N1);

      MA10:MA(C,N2);

      MA20:MA(C,N3);

      MA30:MA(C,N4);

      A:C>MA5 AND MA5>MA10 AND MA10>MA20 AND MA20>MA30;   //均线多头排列

      B:C<MA5 AND MA5<MA10 AND MA10<MA20 AND MA20<MA30;   //均线空头排列

 

一、大周期引用小周期范例(例如策略运行周期为30分钟,引用5分钟周期上的指标值):

 

//交易策略策略,运行周期为30分钟线

INPUT:N1(5,1,100,1),N2(10,1,100,1),N3(20,1,100,1),N4(30,1,100,1);   //定义参数N1,N2,N3,N4

INPUT:SS(1,1,100,1);                                     //定义下单手数,默认为1

 

MA5:MA(C,N1);      

MA10:MA(C,N2);

MA20:MA(C,N3);

MA30:MA(C,N4);     //定义当前周期的4根均线

 

A:C>MA5 AND MA5>MA10 AND MA10>MA20 AND MA20>MA30;   //定义当前周期均线多头排列

B:C<MA5 AND MA5<MA10 AND MA10<MA20 AND MA20<MA30;   //定义当前周期均线空头排列

 

A5:STKINDI(\'\',\'MA指标.A\',0,2,0);      //引用5分钟周期的均线多头排列

B5:STKINDI(\'\',\'MA指标.B\',0,2,0);      //引用5分钟周期的均线空头排列

 

CONPKKD:A AND A5;                  

CONPDKK:B AND B5;                     //5分钟和30分钟这2个周期上的均线共振

 

IF CONPKKD THEN BEGIN                 //2个周期上的均线对头排列,则平空开多

         SELLSHORT(HOLDING<0,HOLDING,MARKET);

         BUY(HOLDING=0,SS,MARKET);

         END

 

IF CONPDKK THEN BEGIN                //2个周期上的均线空头排列,则平多开空

         SELL(HOLDING>0,HOLDING,MARKET);

         BUYSHORT(HOLDING=0,SS,MARKET);

         END

 

 

二、小周期引用大周期范例(例如策略运行周期为5分钟,引用30分钟周期上的指标值):

      注意:在小周期引用大周期时,由于小周期K线结束时,大周期K线还没有结束,如果直接引用往往会造成历史K线上的信号发生变化,从而引起信号闪烁,所以在引用时建议往前偏移一根,保证引用的值是相对固定的。

 

 

//交易策略,运行周期为5分钟线

INPUT:N1(5,1,100,1),N2(10,1,100,1),N3(20,1,100,1),N4(30,1,100,1);  //定义参数N1,N2,N3,N4

INPUT:SS(1,1,100,1);                                   //定义下单手数,默认为1

 

MA5:MA(C,N1);      

MA10:MA(C,N2);

MA20:MA(C,N3);

MA30:MA(C,N4);     //定义当前周期的4根均线

 

A:C>MA5 AND MA5>MA10 AND MA10>MA20 AND MA20>MA30;   //定义当前周期均线多头排列

B:C<MA5 AND MA5<MA10 AND MA10<MA20 AND MA20<MA30;   //定义当前周期均线空头排列

 

A5:STKINDI(\'\',\'MA指标.A\',0,4,-1);      //引用上一根30分钟周期的均线多头排列

B5:STKINDI(\'\',\'MA指标.B\',0,4,-1);      //引用上一根30分钟周期的均线空头排列

 

CONPKKD:A AND A5;                  

CONPDKK:B AND B5;                  //5分钟和30分钟这2个周期上的均线共振

 

IF CONPKKD THEN BEGIN                 //2个周期上的均线多头排列,则平空开多

         SELLSHORT(HOLDING<0,HOLDING,MARKET);

         BUY(HOLDING=0,SS,MARKET);

         END

 

IF CONPDKK THEN BEGIN                //2个周期上的均线空头排列,则平多开空

         SELL(HOLDING>0,HOLDING,MARKET);

         BUYSHORT(HOLDING=0,SS,MARKET);

         END

 

[此贴子已经被作者于2020/4/3 13:40:40编辑过]

--  作者:洞庭风
--  发布时间:2019/11/20 8:56:10
--  
不行啊!我改成
A1:STKINDI(\'\',\'MA+C.JC\',0,4,-1);//引用上一根30分钟周期的均线多头排列
A2:STKINDI(\'\',\'MA+C.JX\',0,4,-1);//引用上一根30分钟周期的均线空头排列
VERTLINE(A1),COLORRED,LINETHICK2;
VERTLINE(A2),COLORGREEN,LINETHICK2;
然而变成了每根K线上都是线,怎么回事呢?请帮助?图片点击可在新窗口打开查看

--  作者:gxx978
--  发布时间:2019/11/22 10:56:45
--  

在每根K线上都会引用到相应的值的,那画线条件满足,则每根K线上都画了垂直线了。


--  作者:liuyong10086
--  发布时间:2020/9/28 20:19:19
--  
以下是引用gxx978在2019/11/22 10:56:45的发言:

在每根K线上都会引用到相应的值的,那画线条件满足,则每根K线上都画了垂直线了。



A1:STKINDIEX(\'\',\'MA+C.JC\',0,4,-1,20);//引用上一根30分钟周期的均线多头排列

这样写行不行,用STKINDIEX函数,限定数据20个?


--  作者:wode010
--  发布时间:2021/3/5 12:11:18
--  
新手小白求助大神,我复制粘贴过去,两个策略测试都没有任何成交,可能是什么问题?