新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 589 1...582583584585586587588589590591592593594595596...1953 新评论 Ghabo 2018.07.30 18:26 #5881 Alexey Viktorov:1.我说的是检查,而不是更换。如果没有分形,iFractals返回0。我不经常使用它,自然也不会用这种琐事来堵塞尚未干涸的记忆残片。 2.这个函数虽然写得很糟糕,但仍能正常工作。 3.最后一个值显示在注释中。将其替换为。 并看看它打印了多少次很多,但绝不是假的。仿佛条件总是得到满足。但它应该是假的。 Alexey Viktorov 2018.07.30 18:50 #5882 Ghabo:很多,但从不虚假。仿佛条件总是得到满足。但它应该是假的,在截图中,情况与条件相矛盾,但却是真的。 在截图中,第一个分形和第二个分形被标记出来。但根据条件,函数会进一步搜索,直到找到低于第一个的那个。而第四个分形比第一个分形要低...这就是条件中所说的。如果条件是辅以 if(f!=0) { fr2=NormalizeDouble(f, d); if(fr2<fr1) return(true); else break; } 它也会打印出错误。 Ghabo 2018.07.30 19:31 #5883 Alexey Viktorov:第一个分形和第二个分形在截图中被标记出来。但根据条件,该函数进一步搜索,直到找到第一个下面的那个。而第四个分形比第一个分形要低...这就是条件中所说的。如果加入条件 它也会打印出错误。 逆转了病情 if(fr2>fr1) return(true); else break;打印为假,但条件得到满足。 Ghabo 2018.07.30 20:06 #5884 第二个循环总是返回第一个循环中发现的分形的价格。 for(i=nf+ num_bar; i<k; i++) { fx=iFractals(sy,tf,MODE_UPPER,i); if(fx!=EMPTY_VALUE) { fr2=NormalizeDouble(fx, d); return(NormalizeDouble(fr2, d)); //if(fr2>fr1) return(true); //else break; } } Artyom Trishkin 2018.07.30 20:43 #5885 Ghabo:第二个循环总是返回第一个循环中发现的分形的价格。 你似乎在逻辑上有问题。 试着用简单的语言描述搜索的顺序。想一想你是否把所有东西都写正确了。然后做一个搜索功能,按序列号返回找到的分形的价格。一旦你这样做了,并且它返回了你用序列号指定的分形的正确价格,就开始做寻找下一个分形的价格的逻辑(这时你已经有一个返回其价格的函数)。然后剩下的就是比较这些价格。 而你一次就做了一堆的东西。 Ghabo 2018.07.30 20:48 #5886 也许我误解了它的工作原理? 首先,我找到了一个分形,即MA上面的第一个分形--(截图中标记为1号)。 int i,k=iBars(sy,tf),kf,num_bar; for(i=nf+2; i<k; i++) { f=iFractals(sy,tf,MODE_UPPER,i); MA=iMA(NULL,0,35,0,MODE_EMA,PRICE_CLOSE,i); if(f!=EMPTY_VALUE) { // kf++; if(f>MA) {num_bar=i; fr1=NormalizeDouble(f, d);break;} } } 我从它身上看去,进一步看向历史,第一个分形(截图中标有2号)。如果第2号分形大于第1号分形,我返回真。 for(i=nf+ num_bar; i<k; i++) { fx=iFractals(sy,tf,MODE_UPPER,i); if(fx!=EMPTY_VALUE) { fr2=NormalizeDouble(fx, d); if(fr2>fr1) return(true); else break; } } 都正确吗? Ghabo 2018.07.30 21:39 #5887 Artyom Trishkin:将返回根据序列号找到的分形的价格。不是通过数字,我通过条件搜索,即分形在MA之上,序号可以是任何。 在第一个循环中,这个分形的价格被正确写入变量 "fr1"。 问题出在第二个循环中,当然,如果我理解正确的话。为什么没有发现分形数2的价格,目前还不清楚。 Alexey Viktorov 2018.07.31 07:06 #5888 Ghabo:不是通过数字,我通过条件搜索,即分形在MA之上,序号可以是任何。 这个分形在第一个周期的价格被正确写入变量 "fr1"。 问题出在第二个循环中,当然,如果我理解正确的话。我不明白为什么找不到2号分形的价格。我必须向你复述整个逻辑。有什么是你自己能想到的吗? 1.在第一个循环中,我们发现MA上面的分形。酒吧的编号被写入num_bar变量(截图上的第11条)。 2.在第二个循环中,我们开始搜索满足条件的第二个分形。我们从num_bar开始搜索...即从第11条开始,因为nf为零。 3.分形体被发现了。该值等于前一个值。条件不会被满足,因为条件包含>然后<但不等于。如果我们设置==,同样的胡言乱语会发生,但是从另一边。 也许,我们应该从下一个条形num_bar+1甚至+2开始搜索第二个分形。 Ghabo 2018.08.01 22:09 #5889 Alexey Viktorov:所有的逻辑都要复述给你听。有什么是你自己能想到的吗?1.在第一个周期中,我们发现在MA的上方有一个分形。酒吧的编号被写入num_bar变量(截图上的第11条)。2.在第二个循环中,开始搜索满足条件的第二个分形。我们从num_bar开始搜索...即从酒吧#11,因为nf等于零。3.分形体被发现了。该值等于前一个值。条件不会被满足,因为在条件中>然后<但不等于。如果我们设定==,同样的垃圾也会发生,但是从另一边。也许,我们应该从下一个条形num_bar+1或甚至+2中寻找第二个分形。一般来说,前两段的行动,我已经表达出来了)。对于 "num_bar+1",谢谢。我找不到最低限度。条件未满足,箭头已设定,已满足未设定。条件如下:如果被MA交叉的蜡烛的最小值到iLowest的 最小值的距离大于或等于100,我就放箭头。 if(limit>60)limit=60; for(int i=limit; i>0; i--) { M11=iMA(NULL,0,period,shift_,method,price,i+1); if(open[i+1]>M11 && close[i+1]<M11){time_1=time[i+1];} indexS1=iBarShift(NULL,PERIOD_CURRENT,time_1,false); if(open[i+1]<M11 && close[i+1]>M11){time_2=time[i+1];} indexS2=iBarShift(NULL,PERIOD_CURRENT,time_2,false); // double val=0; //--- расчет минимального значения цены на indexS1 последовательных барах //--- с индекса indexS2 по индекс indexS1 включительно на текущем графике int val_index=iLowest(NULL,0,MODE_LOW,indexS1,i+indexS2); if(val_index!=-1) val=Low[val_index]; else PrintFormat("Ошибка вызова iLowest. Код ошибки=%d",GetLastError()); if(low[indexS1]-val>=100*Point) { BufferPointDn1[i]=high[i]; } // }从B到A,我发现C的最小值。 A-C=100点在B点,应该把箭头。 为什么不呢? Alexey Viktorov 2018.08.02 07:44 #5890 Ghabo:一般来说,前两段中的行动,我是这么说的) 关于第二点,有点错。你还没有定义我们从哪里开始寻找,什么时候能得到什么价值。而这也让你觉得你应该找得更远一点。 Ghabo。无法找到最小值。条件未得到满足,箭头已设定,条件未得到满足。条件是,如果从穿过MA的蜡烛的最小值到iLowest的最小值的距离在价格交叉点和MA之间大于或等于100,我把箭头。从B到A,我发现C的最小值。 A-C=100点在B点,应该把箭头。 它为什么不把它? 这段代码也有一些难以把握的逻辑。 我们至少需要知道变量 indexS1和indexS2的定义 位置和方式,以及它们是否在每个tick上被重置。 那么,如果МА的交叉点被夹在缝隙中,会发生什么? 还有一个问题:你知道如何使用调试器吗? 1...582583584585586587588589590591592593594595596...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
1.我说的是检查,而不是更换。如果没有分形,iFractals返回0。我不经常使用它,自然也不会用这种琐事来堵塞尚未干涸的记忆残片。
2.这个函数虽然写得很糟糕,但仍能正常工作。
3.最后一个值显示在注释中。将其替换为。
并看看它打印了多少次很多,但绝不是假的。仿佛条件总是得到满足。但它应该是假的。
很多,但从不虚假。仿佛条件总是得到满足。但它应该是假的,在截图中,情况与条件相矛盾,但却是真的。
在截图中,第一个分形和第二个分形被标记出来。但根据条件,函数会进一步搜索,直到找到低于第一个的那个。而第四个分形比第一个分形要低...这就是条件中所说的。
如果条件是辅以
它也会打印出错误。
第一个分形和第二个分形在截图中被标记出来。但根据条件,该函数进一步搜索,直到找到第一个下面的那个。而第四个分形比第一个分形要低...这就是条件中所说的。
如果加入条件
它也会打印出错误。
打印为假,但条件得到满足。
第二个循环总是返回第一个循环中发现的分形的价格。
第二个循环总是返回第一个循环中发现的分形的价格。
你似乎在逻辑上有问题。
试着用简单的语言描述搜索的顺序。想一想你是否把所有东西都写正确了。然后做一个搜索功能,按序列号返回找到的分形的价格。一旦你这样做了,并且它返回了你用序列号指定的分形的正确价格,就开始做寻找下一个分形的价格的逻辑(这时你已经有一个返回其价格的函数)。然后剩下的就是比较这些价格。
而你一次就做了一堆的东西。
也许我误解了它的工作原理?
首先,我找到了一个分形,即MA上面的第一个分形--(截图中标记为1号)。
我从它身上看去,进一步看向历史,第一个分形(截图中标有2号)。如果第2号分形大于第1号分形,我返回真。
都正确吗?
将返回根据序列号找到的分形的价格。
不是通过数字,我通过条件搜索,即分形在MA之上,序号可以是任何。 在第一个循环中,这个分形的价格被正确写入变量 "fr1"。
问题出在第二个循环中,当然,如果我理解正确的话。为什么没有发现分形数2的价格,目前还不清楚。
不是通过数字,我通过条件搜索,即分形在MA之上,序号可以是任何。 这个分形在第一个周期的价格被正确写入变量 "fr1"。
问题出在第二个循环中,当然,如果我理解正确的话。我不明白为什么找不到2号分形的价格。
我必须向你复述整个逻辑。有什么是你自己能想到的吗?
1.在第一个循环中,我们发现MA上面的分形。酒吧的编号被写入num_bar变量(截图上的第11条)。
2.在第二个循环中,我们开始搜索满足条件的第二个分形。我们从num_bar开始搜索...即从第11条开始,因为nf为零。
3.分形体被发现了。该值等于前一个值。条件不会被满足,因为条件包含>然后<但不等于。如果我们设置==,同样的胡言乱语会发生,但是从另一边。
也许,我们应该从下一个条形num_bar+1甚至+2开始搜索第二个分形。
所有的逻辑都要复述给你听。有什么是你自己能想到的吗?
1.在第一个周期中,我们发现在MA的上方有一个分形。酒吧的编号被写入num_bar变量(截图上的第11条)。
2.在第二个循环中,开始搜索满足条件的第二个分形。我们从num_bar开始搜索...即从酒吧#11,因为nf等于零。
3.分形体被发现了。该值等于前一个值。条件不会被满足,因为在条件中>然后<但不等于。如果我们设定==,同样的垃圾也会发生,但是从另一边。
也许,我们应该从下一个条形num_bar+1或甚至+2中寻找第二个分形。
一般来说,前两段的行动,我已经表达出来了)。
对于 "num_bar+1",谢谢。
我找不到最低限度。
条件未满足,箭头已设定,已满足未设定。
条件如下:如果被MA交叉的蜡烛的最小值到iLowest的 最小值的距离大于或等于100,我就放箭头。
从B到A,我发现C的最小值。
A-C=100点在B点,应该把箭头。
为什么不呢?
一般来说,前两段中的行动,我是这么说的)
关于第二点,有点错。你还没有定义我们从哪里开始寻找,什么时候能得到什么价值。而这也让你觉得你应该找得更远一点。
无法找到最小值。
条件未得到满足,箭头已设定,条件未得到满足。
条件是,如果从穿过MA的蜡烛的最小值到iLowest的最小值的距离在价格交叉点和MA之间大于或等于100,我把箭头。
从B到A,我发现C的最小值。
A-C=100点在B点,应该把箭头。
它为什么不把它?
这段代码也有一些难以把握的逻辑。
我们至少需要知道变量 indexS1和indexS2的定义 位置和方式,以及它们是否在每个tick上被重置。
那么,如果МА的交叉点被夹在缝隙中,会发生什么?
还有一个问题:你知道如何使用调试器吗?