等级: 管理员
- 注册:
- 2021-5-18
- 曾用名:
|
跨周期引用在日常的策略编写中是经常需要使用的,可以在本策略运行的周期上,引用到另外一个周期上的指标值,来作为本策略的开平仓条件。下面分别对大周期引用小周期和小周期引用大周期的指标编写进行示范。
被引用指标公式MA指标,代码如下:
[PEL] 复制代码
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分钟周期上的指标值):
[PEL] 复制代码 //交易策略策略,运行周期为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线上的信号发生变化,从而引起信号闪烁,所以在引用时建议往前偏移一根,保证引用的值是相对固定的。
[PEL] 复制代码 //交易策略,运行周期为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
|
|