抱歉,刚才把可以正常运行的第一段代码逐渐向上加一些代码,当在 int start() 中加入如下代码时,开始不能测试出任何结果:
int start() { ...... int counted_bars=IndicatorCounted(); int limit; if (counted_bars<0) return(-1); if (counted_bars>0) counted_bars--; limit=Bars-31; if(counted_bars>=31) limit=Bars-counted_bars-1; ...... }
加入这段代码是为了得到自定义函数的一系列值,这段代码以及自定义函数在指标代码中都能正常运行,能画出一条指标线,但这些代码加到EA里,不知道为什么就得不到正常的测试结果,一个开仓的订单都不会产生。
望各位高手指点。
谢谢。
EA和指标不同,最好不要在EA中做复杂指标计算,除非你很清楚指标和EA的不同。
IndicatorCounted()可能在EA中无效。 你print counted_bars试试。
DxdCn 写道 >>
EA和指标不同,最好不要在EA中做复杂指标计算,除非你很清楚指标和EA的不同。
IndicatorCounted()可能在EA中无效。 你print counted_bars试试。
谢谢。现在已经把计算指标的代码去掉了,在网上查出在EA中用自定义指标,需要用iCustom()函数调用自定义指标,可是用iCustom()函数调用自定义指标后出现了另外的问题。
int start() { ...... //---- 如果是空仓 if (total < 1) { if(MM(0)!= EMPTY_VALUE) //开多仓 if(GG(0) != EMPTY_VALUE) //开空仓 } //---- 如果有持仓 if( total >=1 ) { ...... if(MM(0)!= EMPTY_VALUE) //平空仓,开多仓 if(GG(0) != EMPTY_VALUE)) //平多仓,开空仓 } } //---- 自定义函数 ------------------------------------------+ double MM(int i) { double Y; Y = iCustom(NULL,timeCycle,"myTradTest",250,0,i); return(Y); } double GG(int i) { double Y; Y = iCustom(NULL,timeCycle,"myTradTest",250,1,i); return(Y); }
上述代码在EA测试中已经得出了测试结果,但开仓、平仓都不是按判断条件,而是不停地开仓平仓。
myTradTest是一个在主图上画买卖箭头的指标,只有当它的第一个数组不为 EMPTY_VALUE 时,才画做多的箭头,只有它的第二个数组不为EMPTY_VALUE时,才画做空的箭头。不知道在EA里用它做判断条件为什么不起作用,不论条件数组的值是否为EMPTY_VALUE,EA都在不停地开仓、平仓。
期待各位指点。
用Print(i," ", Y)调试呀,看你得到iCustom到底是什么??
编程第一就是要会调试。MT提供了Print调试手段。
自己做一个EA,代码如下:
以上代码在测试时完全正常,但是把开仓条件改成自定义函数,在测试时就没有任何订单会成交,测试结果是空白的。例如下面的代码:
以上两段代码只是换了一下判断条件,为什么用MT4自带的函数做为判断条件一切都正常,而用自定义的函数做为判断条件就得不到任何测试结果。
望各位高手指教。