自己分析一下先:我在调试时把打印字符语句分别放到主函数中调用自定义语句的前面和后面,发现是到调用自定义语句代码出错了。所以我分析可能是自己的自定义函数没弄好,另外,我这个程序也没有考虑对一根锤子线信号出现后就在下一根K线里不停地连续开仓的问题,这个问题接下来再解决。
// 分母不能为0
void sig1_Tduo(int & sig) { if( iClose(Symbol(),PERIOD_H1,0)!=iLow(Symbol(),PERIOD_H1,0) ) // 分母不能为0 { if((MathAbs(iClose(Symbol(),PERIOD_H1,0)-iOpen(Symbol(),PERIOD_H1,0))/MathAbs(iClose(Symbol(),PERIOD_H1,0)-iLow(Symbol(),PERIOD_H1,0)))<0.3)//如果这根K线是锤子线(空转多信号) sig++; if((iClose(Symbol(),PERIOD_H1,0)>iOpen(Symbol(),PERIOD_H1,0)) && (iClose(Symbol(),PERIOD_H1,0)>iClose(Symbol(),PERIOD_H1,1)))//如果这根锤子线 sig++; } }
Ziheng Zhuang:
// 分母不能为0
您好,按照您说的改了,我的确忽视了您说的分母为0的问题。不过改了之后测试一个月数据,没有产生订单,日志提示是这样的:
2016.02.17 16:21:57.312 EURUSD,H1: 2772822 tick events (1729 bars, 2773823 bar states) processed in 0:00:01.328 (total time 0:00:35.828)
2016.02.17 16:21:55.984 2016.01.01 00:00 K线交易1 inputs: sig1=0;
2016.02.17 16:21:55.937 TestGenerator: unmatched data error (high value 1.12344 at 2016.02.15 03:00 is not reached from the least timeframe, high price 1.12338 mismatches)
2016.02.17 16:21:48.984 History: download EURUSD,M1 [2016.02.02 02:36]
2016.02.17 16:21:43.984 History: download EURUSD,M1 [2016.02.02 11:08]
2016.02.17 16:21:41.484 History: download EURUSD,M1 [2016.02.02 19:40]
……
请问是哪里错了呢?
Ziheng Zhuang:
我又调整了一下,看来是忽略了自定义函数中的指针符号&。添加上了以后,执行有效,谢谢。
// 分母不能为0
我写了几行代码,是想在遇到锤子K线的时候买进,结果测试了一下,没有下任何订单,并且报错如下 :
2016.02.16 21:12:17.112 2016.01.01 00:00 K线交易1 test started
2016.02.16 21:12:17.118 2016.01.04 02:00 K线交易1 EURUSD,H1: zero divide in 'K线交易1.mq4' (58,74)
2016.02.16 21:12:17.118 2016.01.04 02:00 Testing pass stopped due to a critical error in the EA
2016.02.16 21:12:17.118 EURUSD,H1: 1 tick events (1710 bars, 2738817 bar states) processed in 0:00:00.000 (total time 0:00:02.277)
代码如下:
#property copyright "liuliang"}
请前辈指教,谢谢。