RefreshRates()的更新内容 - 页 6 123456789101112 新评论 Vitaly Muzichenko 2021.02.18 20:48 #51 Mikhail Nazarenko:MT4是一个暗箱,我只能通过在真实条件下的测试来判断那里发生了什么。最初我根本没有使用睡眠,但当我在一些小时条上得到废话时,我加入了睡眠,问题消失了。我不知道MT4的时间序列是 以什么顺序和方式更新 的。我不知道该怎么做,我将把它作为一个机会来解决我的问题,并与其他人分享。 我自己也遇到了这个问题,在策略测试器中一切正常,但在真实市场上却什么都没有。 我从周一开始运行专家顾问,我很惊讶。 我曾开过几次有利可图的口子,然后又去买而不是卖,反之亦然。 关于交易、自动交易系统和策略测试的论坛 新手对MQL4和MQL5的任何问题,或对算法和代码的任何提示和讨论 Vitaly Muzichenko, 2021.02.15 21:48 我已经开始用MQL4工作,以检查我的算法。 我从来没有试过,我不会知道如何使用它,因为我已经工作了很多年,我仍然在使用它,正如我上面描述的那样。简单的代码,只有2个指标缓冲区 代码非常简单 double poi=Point(); for(int i = limit-2; i>0; i--) { if(open[i+0] > close[i+0] && MathAbs(open[i+0] - high[i+0]) < 0.1 * poi) Dn[i] = high[i+0] + 30 * poi; if(open[i+0] < close[i + 0] && MathAbs(open[i+0] - low[i+0]) < 0.1 * poi) Up[i] = low[i+0] - 30 * poi; } Mikhail Nazarenko 2021.02.18 21:06 #52 Vitaly Muzichenko:我自己也遇到过这种情况,在测试器中一切正常,但在真实的市场中却很糟糕。我从周一开始运行该EA,感到很惊讶。我很惊讶,有些开口是正确的,但之后我又是买入而不是卖出,反之亦然。 指标代码很简单。 这也是我在开始这个话题之前遇到的问题。我做了上面的isRefresh()函数。试试吧。对我来说,它工作得很好。 而且这不是滑坡吗? Taras Slobodyanik 2021.02.18 21:47 #53 Vitaly Muzichenko:该指标的代码很简单 该指标是否开放交易? 箭头是一样的--问题出在EA代码上。 Aleksey Mavrin 2021.02.18 22:42 #54 Mikhail Nazarenko:如果你开始教,那么就帮助,用代码、测试、论坛主题的链接或文档来确认。其他一切都只是大脑自慰。 请澄清仍然不清楚的地方。读完后,似乎主要问题已经解决了,唯一剩下的就是讨论4的过时程度了)。 在插入这样的时间框架后,我没有任何问题。 bool HistoryCheck(int TF) { int err=0; int i=0; datetime d1=0,d2=0; while(i<10) { if((d1=iTime(NULL,TF,0))==0 || (d2=iTime(NULL,TF,InpPeriod*2))==0) PrintFormat("itime=0, %s, %s", TimeToString(d1),TimeToString(d2)) ; err=GetLastError(); if(err==4066) { PrintFormat("Error=4066") ; Sleep(500); } else break; SleepA(100); i++; } // while if(i==10) { Comment("Update failed. Go to the next attempt."); return(false); } PrintFormat("HistoryCheck %d , %s, %s",i,TimeToString(d1),TimeToString(d2)) ; Comment(""); return(true); } 如果你需要很少和不定期地访问时间框架,你应该(但不一定是在图表打开的 情况下)在检查之前再次执行这个加载。 if((iTime(NULL,TF,0)+PeriodSeconds(TF))<TimeCurrent() || (iTime(NULL,TF,1)+PeriodSeconds(TF)*2)<TimeCurrent()) HistoryCheck(TF) Документация по MQL5: Операции с графиками / ChartOpen www.mql5.com ChartOpen - Операции с графиками - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 Vitaly Muzichenko 2021.02.19 00:19 #55 Mikhail Nazarenko:这也是我在开这个话题之前遇到的事情。由于某些原因,终端给出的是真实的过时数据,我在上面写了isRefresh()函数。试试吧。对我来说,它工作得很好。但这不是滑坡? 不,它是在一个新的0条上打开的,信号是在关闭的条上寻找的,也就是1。 这就是有时EA没有通过iCustom()获得预期的情况。还是那句话:有时,但不是经常。 这里有另一个--一个新鲜的例子。我根据信号正确地开了一个买入头寸,指标的下一个信号也是买入(下面的箭头)。 但是EA通过iCustom()收到了一个卖出信号,关闭了买入头寸,开了卖出头寸,尽管应该还有一个买入 头寸。 时间序列有问题,我还没有理解,这是4天前发现的,我可能不会尝试去改变它。我在测试器中没有看到任何问题 就在此时。 --- 而且我刚刚发现 Vitaly Muzichenko 2021.02.19 00:43 #56 还有,但已经不是卖出,而是买入了。正如我所说,这并不经常发生,但它发生了。 该指标的代码很简单--没有复杂的 "不 "字。 Alekseu Fedotov 2021.02.19 05:03 #57 Aleksey Mavrin:请澄清仍然不清楚的地方。看完之后,似乎主要的问题已经解决了,我们只剩下讨论4的过时程度了)在像这样插入时间框架加载后,我没有遇到问题如果你需要很少和不定期地访问一个时间框架,你应该(但不一定是在图表打开的 情况下)在检查前再次做这个加载,或者这样的检查将有助于 这是正确的。 这是帮助中的内容。 指标和时间序列数据的访问独立于所请求的数据已经准备好的事实(所谓的异步访问)。这对自定义指标的计算至关重要,所以如果没有要求的数据,像Copy...()这样的函数会立即返回一个错误。然而,当从专家顾问和脚本访问时,会多次尝试接收数据,并有一个小的停顿,目的是提供必要的时间来下载所需的时间序列或计算指标值。 如果要求从另一个图表中获取信息(工具名称和/或时间框架值与当前图表不同),可能会出现这样的情况,即客户终端没有打开合适的图表,必须从服务器中获取必要的数据。在这种情况下,错误ERR_HISTORY_WILL_UPDATED(4066 - 请求的历史数据处于更新状态)将被放在_Last_error变量中,请求必须在一段时间后重试(见ArrayCopySeries()例子)。 Mikhail Mishanin 2021.02.19 08:21 #58 Vitaly Muzichenko:还有,但已经不是卖出,而是买入了。正如我所说,这并不经常发生,但它发生了。该指标的代码很简单--没有任何错综复杂的问题。 最可靠的方法是写日志。在每个交易中,将关键变量的值写入文件中。根据经验:不严格的条件<=0而不是<0引入了一个可怕的曲率。 Evgeniy Chumakov 2021.02.19 08:24 #59 Vitaly Muzichenko:我自己也遇到过这种情况,在测试器中一切正常,但在真实的市场中却很糟糕。我从周一开始运行该EA,感到很惊讶。我很惊讶,有些开口是正确的,但之后我又是买入而不是卖出,反之亦然。 该指标的代码很简单 double poi=Point(); for(int i = limit-2; i>0; i--) { if(open[i+0] > close[i+0] && MathAbs(open[i+0] - high[i+0]) < 0.1 * poi) Dn[i] = high[i+0] + 30 * poi; if(open[i+0] < close[i + 0] && MathAbs(open[i+0] - low[i+0]) < 0.1 * poi) Up[i] = low[i+0] - 30 * poi; } 我为什么要在[i + 0]上加0? Mikhail Nazarenko 2021.02.19 08:58 #60 Aleksey Mavrin:请澄清仍然不清楚的地方。看完之后,似乎主要问题已经解决了,我们仍然需要讨论4的过时程度)在插入以这种方式加载的时间段后,我没有遇到任何问题如果你很少和不定期地需要参考时间框架,那么在检查之前应该(但不一定是在图表打开的 情况下)再次进行这种加载,或者这种检查会有帮助 谢谢你,这才是重点。在通过iTime访问一个未更新的时间序列后,终端真的会出现4066错误吗?我遇到过iClose给出未更新的信息而不是零。 123456789101112 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
MT4是一个暗箱,我只能通过在真实条件下的测试来判断那里发生了什么。最初我根本没有使用睡眠,但当我在一些小时条上得到废话时,我加入了睡眠,问题消失了。我不知道MT4的时间序列是 以什么顺序和方式更新 的。我不知道该怎么做,我将把它作为一个机会来解决我的问题,并与其他人分享。
我自己也遇到了这个问题,在策略测试器中一切正常,但在真实市场上却什么都没有。
我从周一开始运行专家顾问,我很惊讶。
我曾开过几次有利可图的口子,然后又去买而不是卖,反之亦然。
关于交易、自动交易系统和策略测试的论坛
新手对MQL4和MQL5的任何问题,或对算法和代码的任何提示和讨论
Vitaly Muzichenko, 2021.02.15 21:48
我已经开始用MQL4工作,以检查我的算法。
我从来没有试过,我不会知道如何使用它,因为我已经工作了很多年,我仍然在使用它,正如我上面描述的那样。简单的代码,只有2个指标缓冲区
代码非常简单
我自己也遇到过这种情况,在测试器中一切正常,但在真实的市场中却很糟糕。
我从周一开始运行该EA,感到很惊讶。
我很惊讶,有些开口是正确的,但之后我又是买入而不是卖出,反之亦然。
指标代码很简单。
这也是我在开始这个话题之前遇到的问题。我做了上面的isRefresh()函数。试试吧。对我来说,它工作得很好。
而且这不是滑坡吗?
该指标的代码很简单
该指标是否开放交易?
箭头是一样的--问题出在EA代码上。
如果你开始教,那么就帮助,用代码、测试、论坛主题的链接或文档来确认。其他一切都只是大脑自慰。
请澄清仍然不清楚的地方。读完后,似乎主要问题已经解决了,唯一剩下的就是讨论4的过时程度了)。
在插入这样的时间框架后,我没有任何问题。
如果你需要很少和不定期地访问时间框架,你应该(但不一定是在图表打开的 情况下)在检查之前再次执行这个加载。
这也是我在开这个话题之前遇到的事情。由于某些原因,终端给出的是真实的过时数据,我在上面写了isRefresh()函数。试试吧。对我来说,它工作得很好。
但这不是滑坡?
不,它是在一个新的0条上打开的,信号是在关闭的条上寻找的,也就是1。
这就是有时EA没有通过iCustom()获得预期的情况。还是那句话:有时,但不是经常。
这里有另一个--一个新鲜的例子。我根据信号正确地开了一个买入头寸,指标的下一个信号也是买入(下面的箭头)。 但是EA通过iCustom()收到了一个卖出信号,关闭了买入头寸,开了卖出头寸,尽管应该还有一个买入 头寸。
时间序列有问题,我还没有理解,这是4天前发现的,我可能不会尝试去改变它。我在测试器中没有看到任何问题
就在此时。
--- 而且我刚刚发现
还有,但已经不是卖出,而是买入了。正如我所说,这并不经常发生,但它发生了。
该指标的代码很简单--没有复杂的 "不 "字。
请澄清仍然不清楚的地方。看完之后,似乎主要的问题已经解决了,我们只剩下讨论4的过时程度了)
在像这样插入时间框架加载后,我没有遇到问题
如果你需要很少和不定期地访问一个时间框架,你应该(但不一定是在图表打开的 情况下)在检查前再次做这个加载,或者这样的检查将有助于
这是正确的。
这是帮助中的内容。
指标和时间序列数据的访问独立于所请求的数据已经准备好的事实(所谓的异步访问)。这对自定义指标的计算至关重要,所以如果没有要求的数据,像Copy...()这样的函数会立即返回一个错误。然而,当从专家顾问和脚本访问时,会多次尝试接收数据,并有一个小的停顿,目的是提供必要的时间来下载所需的时间序列或计算指标值。
如果要求从另一个图表中获取信息(工具名称和/或时间框架值与当前图表不同),可能会出现这样的情况,即客户终端没有打开合适的图表,必须从服务器中获取必要的数据。在这种情况下,错误ERR_HISTORY_WILL_UPDATED(4066 - 请求的历史数据处于更新状态)将被放在_Last_error变量中,请求必须在一段时间后重试(见ArrayCopySeries()例子)。
还有,但已经不是卖出,而是买入了。正如我所说,这并不经常发生,但它发生了。
该指标的代码很简单--没有任何错综复杂的问题。
最可靠的方法是写日志。在每个交易中,将关键变量的值写入文件中。根据经验:不严格的条件<=0而不是<0引入了一个可怕的曲率。
我自己也遇到过这种情况,在测试器中一切正常,但在真实的市场中却很糟糕。
我从周一开始运行该EA,感到很惊讶。
我很惊讶,有些开口是正确的,但之后我又是买入而不是卖出,反之亦然。
该指标的代码很简单
我为什么要在[i + 0]上加0?
请澄清仍然不清楚的地方。看完之后,似乎主要问题已经解决了,我们仍然需要讨论4的过时程度)
在插入以这种方式加载的时间段后,我没有遇到任何问题
如果你很少和不定期地需要参考时间框架,那么在检查之前应该(但不一定是在图表打开的 情况下)再次进行这种加载,或者这种检查会有帮助
谢谢你,这才是重点。在通过iTime访问一个未更新的时间序列后,终端真的会出现4066错误吗?我遇到过iClose给出未更新的信息而不是零。