真心求助公式代码错误在哪? - 页 5 12345 新评论 okwh 2013.03.31 06:42 #41 1) if(LineCrossedLine(buffer1,buffer2) 2) LineCrossedLine(double ExtBuffer1[],double ExtBuffer2[]) 3) iMAOnArray(ExtBuffer1,0,0,0 既然用iMAOnArray,为什么参数都是0?? 看来你不明白我问的什么,那就把3)的问法换换。后来想是不是要用当前周期(??),才改的0。似乎你不知道iMAOnArray的period参数是什么意思? 似乎你也根本不注意1) 2)指什么。 虽然你说是数组,可你定义和传入参数用的都是值 不是数组,iMAOnArray就更毫无意义了 okwh 2013.03.31 06:49 #42 在MT中时间周期的对应英文是timeframe, 可不是 period. MT中的peroid大致对应中文说的 用来计算的点数或坐标单位数,如5点移动平均这个5. 网上文字交流,大家如果说的根本不是一个意思,就没法交流的 比如你把 1) 2)和你原来的代码比较一下,大概你就知道问题在哪里了 wgaga 2013.03.31 08:23 #43 哦,我明白了。 #property indicator_chart_window #property indicator_buffers 2 double buffer1[]; double buffer2[]; int init() { SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,buffer1); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,buffer2); return(0); } int deinit() { return(0); } int start() { for(int i=0;i<4;i++) { buffer1[i]=iMA(NULL,0,5,0,MODE_SMMA,PRICE_MEDIAN,i); buffer2[i]=iMA(NULL,0,8,0,MODE_SMMA,PRICE_MEDIAN,i); } if(LineCrossedLine(buffer1,buffer2)) {Print("穿过"); Alert("穿穿"); } return(0); } //+------------------------------------------------------------------+ bool LineCrossedLine(double ExtBuffer1[],double ExtBuffer2[]) //均线Buffer1上穿均线Buffer2(这个上穿是确定性的穿过) { double ma1=iMAOnArray(ExtBuffer1,0,1,0,MODE_LWMA,0); double ma2=iMAOnArray(ExtBuffer2,0,1,0,MODE_LWMA,0); double ma3=iMAOnArray(ExtBuffer1,0,1,0,MODE_LWMA,1); double ma4=iMAOnArray(ExtBuffer2,0,1,0,MODE_LWMA,1); if(ma3<ma4 && ma1>=ma2) return(true); else return(false); },对吗? DxdCn老师,你在吗?还是不行啊! 示例: 使用 MetaTrader 4客户端初学者的常见错误 测试者: 在 MetaTrader 4 wgaga 2013.03.31 08:43 #44 我真不知道MT中的peroid是什么意思,我完全是靠看别人的程序来理解的。我不想让它移动平均,我是否可以用1呢?就像均线的意思是这点的值是在它之前的5个收盘价的平均值,下一个点是向后错一位的5个收盘价的平均值,这个理解对吗?我给出的已经是均线了,如果再平均,那就不是我要的数值了,iMAOnArray(ExtBuffer,0,1,0,MODE_LWMA,i)这样对吗?也就是说,0代表当前值,还是1代表当前值,就它一个值的移动平均,应该是它本身了吧? wgaga 2013.04.01 19:49 #45 DxdCn老师,非常感谢。出来了。接下来就是看如何把它用到ea里了。我看了好多ea好像都没有用存储器的,不知道能否用。我会去试试的。再次感谢您,您让我从中学到了好多东西。谢谢! wgaga 2013.04.02 04:59 #46 DxdCn老师,还是不对,print 没有出来,Alert 出来了,但是时间对不上,图上的Moving Average明显交叉了,可就是没有print 图上没交叉Alert 出来了,我要的结果和程序的结果不一致。 wgaga 2013.04.02 05:22 #47 我在 bool LineCrossedLine(double ExtBuffer1[],double ExtBuffer2[]) //均线Buffer1上穿均线Buffer2(这个上穿是确定性的穿过) { double ma1=iMAOnArray(ExtBuffer1,0,1,0,MODE_LWMA,0); double ma2=iMAOnArray(ExtBuffer2,0,1,0,MODE_LWMA,0); double ma3=iMAOnArray(ExtBuffer1,0,1,0,MODE_LWMA,1); double ma4=iMAOnArray(ExtBuffer2,0,1,0,MODE_LWMA,1); Print("ma1=",ma1," ","ma2=",ma2," ","ma3=",ma3," ","ma4=",ma4," ",);if(ma3<ma4 && ma1>=ma2) return(true); else return(false); }, 中间if前加了 Print("ma1=",ma1," ","ma2=",ma2," ","ma3=",ma3," ","ma4=",ma4," ",);但是看不到print 出来。 wgaga 2013.04.02 19:13 #48 DxdCn老师,还是不对啊。Alert 有,但提示的时间不对,print没有,说明什么呢? 是不是编写方法有问题呢?不应该用iMAOnArray? wgaga 2013.04.03 05:24 #49 DxdCn老师,你在吗?还是不行啊! 12345 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
1) if(LineCrossedLine(buffer1,buffer2)
2) LineCrossedLine(double ExtBuffer1[],double ExtBuffer2[])
3) iMAOnArray(ExtBuffer1,0,0,0 既然用iMAOnArray,为什么参数都是0??
看来你不明白我问的什么,那就把3)的问法换换。后来想是不是要用当前周期(??),才改的0。似乎你不知道iMAOnArray的period参数是什么意思?
似乎你也根本不注意1) 2)指什么。 虽然你说是数组,可你定义和传入参数用的都是值 不是数组,iMAOnArray就更毫无意义了
在MT中时间周期的对应英文是timeframe, 可不是 period.
MT中的peroid大致对应中文说的 用来计算的点数或坐标单位数,如5点移动平均这个5.
网上文字交流,大家如果说的根本不是一个意思,就没法交流的
比如你把 1) 2)和你原来的代码比较一下,大概你就知道问题在哪里了