老师,我想判断MACD在 15分钟,60分钟,日 ,三个周期内同时收到金叉信号才进行交易,这个代码怎么写?
先单独编写一个指标A:
input:p(26,20,100,8),s(12,5,40,4),m(9,2,60,6);//参数设置
DIFF : =EMA(CLOSE,S) - EMA(CLOSE,P);
DEA := EMA(DIFF,M);
MACD1 := 2*(DIFF-DEA), COLORSTICK;
macdjc:cross(diff,dea);//macd金叉
macdsc:cross(dea,diff);
然后跨周期调用指标A的macdjc变量即可。
15min_jc:=STKINDI('','A.macdjc',0,3,0);
60min_jc:=STKINDI('','A.macdjc',0,5,0);
day_jc:=STKINDI('','A.macdjc',0,6,0);
cd:15min_jc and 60min_jc and day_jc;
if cd and holding=0 then
begin
//这里编写下单语句即可
end
A是新建的一个指标,字母A是指标名称。你要新建一个指标,把下面代码放进去。
input:p(26,20,100,8),s(12,5,40,4),m(9,2,60,6);//参数设置
DIFF : =EMA(CLOSE,S) - EMA(CLOSE,P);
DEA := EMA(DIFF,M);
MACD1 := 2*(DIFF-DEA), COLORSTICK;
macdjc:cross(diff,dea);//macd金叉
macdsc:cross(dea,diff);
//MACD
X1:CROSS(DIFF,DEA);
X2:CROSS(DEA,DIFF);
//条件1
X3:MA1>MA2 AND MA2>MA3 AND MA3>MA4 AND MA4>MA5 AND MA5>MA6 AND MA1>REF(MA1,1) AND MA2>REF(MA2,1) AND MA3>REF(MA3,1) AND MA4>REF(MA4,1) AND MA5>REF(MA5,1) AND MA6>REF(MA6,1);
X4:MA1<MA2 AND MA2<MA3 AND MA3<MA4 AND MA4<MA5 AND MA5<MA6 AND MA1<REF(MA1,1) AND MA2<REF(MA2,1) AND MA3<REF(MA3,1) AND MA4<REF(MA4,1) AND MA5<REF(MA5,1) AND MA6<REF(MA6,1);
X5:X1 AND X3;
X6:X2 AND X4;
15min_jc:=STKINDI('','X5',0,3,0);
60min_jc:=STKINDI('','X5',0,5,0);
day_jc:=STKINDI('','X5',0,6,0);
KDCL:15min_jc and 60min_jc and day_jc;
回测没有数据,错在哪里呢?
是否由于公式是 5、60、日,而公式测试里的开仓条件只能是日,所以无法返回数据?
1.你上面代码里面都没有下单语句吗 还是只是没帖出来?
2.你跨周期代码写的不对 。首先macd金叉的代码要单独放在一个指标下。
然后红色部分格式也不对。 是 “公式名.被调用的变量”
15min_jc:=STKINDI('','X5',0,3,0);
参考下图的做法:
此主题相关图片如下:temp.png

这是2个指标,macd单独在一个指标里面。
3.跨周期的调用是不会自动补充数据的。你要补充5分钟和日线数据。
单个品种得话 你可以在K线上切换到相应周期然后用键盘上下箭 就能自动触发历史数据的补充。
此主题相关图片如下:a20191127161814.jpg

//条件汇总
15min_jc:=STKINDI('','MADC_T.macdjc',0,3,0);
60min_jc:=STKINDI('','MADC_T.macdjc',0,5,0);
day_jc:=STKINDI('','MADC_T.macdjc',0,6,0);
15min_ga:=STKINDI('','GMMA-T.X3',0,3,0);
60min_ga:=STKINDI('','GMMA-T.X3',0,5,0);
day_ga:=STKINDI('','GMMA-T.X3',0,6,0);
KDCL:15min_jc and 60min_jc and day_jc and 15min_ga and 60min_ga and day_ga;
老师,我按例子重新修改了,X3如下
指标名称:GMMA-T
X3:MA1>MA2 AND MA2>MA3 AND MA3>MA4 AND MA4>MA5 AND MA5>MA6 AND MA1>REF(MA1,1) AND MA2>REF(MA2,1) AND MA3>REF(MA3,1) AND MA4>REF(MA4,1) AND MA5>REF(MA5,1) AND MA6>REF(MA6,1);
同时也补充了 15 分钟 60分钟,日数据,还是出不了结果?
下单的语句先不写了,万一真的下单了,就比较危险,所以先做好预警,只是3个周期MACD的条件,也出不了数据?