RefreshRates()的更新内容 - 页 2 123456789...12 新评论 Mikhail Nazarenko 2021.02.15 10:05 #11 iClose: 零 - 错误。该函数没有给出一个错误。它给出了一个目前已经过时的值。 Mikhail Nazarenko 2021.02.15 10:33 #12 我在这里读到,"iClose() 从经纪人的服务器上获取数值",如果这些函数的数据是由诚实的经纪人产生的,那么一切都会水到渠成。))事实证明,我们只能相信当前的蜱虫。 Alexey Viktorov 2021.02.15 10:58 #13 Artyom Trishkin: 不,它不是。在函数帮助中,关于返回值是怎么写的? 关闭 返回的值 相应图表的条形收盘价(由shift参数指定)的值,如果有错误,则为0。调用GetLastError()来获取更多的错误信息。 它说,如果不是0,那么就没有错误。但这个值也没有变化......,所以没有RefreshRates();也不会更新,这让我很吃惊。 Alexey Viktorov 2021.02.15 11:01 #14 Mikhail Nazarenko:而如果你把时间框架改成与当前不同的时间框架,即使使用RefreshRates(),数据也不会及时更新。所以MT4中的iClose等基本功能产生了不相关的废话。我确信80%的信息都没有考虑到MT4的这些独特功能。如何生活?) 改变时间框架不会有任何作用。当前的iClose值等于Bid值,与图表周期 无关。 Mikhail Nazarenko 2021.02.15 11:40 #15 Alexey Viktorov: 变化关闭不会带来任何好处。无论图表周期 如何,iClose的当前值等于Bid值。 我做了一个EA,在M5上运行了一天。在小时变化时,它为每个数值画出水平线:iClose(symbol,PERIOD_H1,1),iClose(symbol,PERIOD_M5,1),iClose(symbol,PERIOD_ M1,1 ),Close[1],Bid iClose(symbol, PERIOD_ M5,1 ),Close[1] - 它显示与图表上完全一样。 出价很接近,这是下一个刻度 iClose(symbol,PERIOD_H1,1),iClose(symbol,PERIOD_M1,1) - 有时它们是一样的,有时,特别是在晚上的时候,它们显示的完全是狗屎,甚至在RefreshRates()被连接之后。 向开发商提问。如果 MQL4中的iClose 函数不能提供正确的信息,也没有办法更新它的数据,那么我们为什么还需要它呢? Alexey Viktorov 2021.02.15 12:22 #16 Mikhail Nazarenko:我做了一个EA,在M5上运行了一天。在小时变化时,它为每个数值画出水平线:iClose(symbol,PERIOD_H1,1),iClose(symbol,PERIOD_M5,1),iClose(symbol,PERIOD_ M1,1 ),Close[1],Bid iClose(symbol, PERIOD_ M5,1 ),Close[1] - 它显示与图表上完全一样。 出价很接近,这是下一个刻度 iClose(symbol,PERIOD_H1,1),iClose(symbol,PERIOD_M1,1) - 有时它们是一样的,有时,特别是在晚上的时候,它们显示的完全是狗屎,甚至在RefreshRates()被连接之后。 向开发商提问。为什么MQL4需要iClose 函数,如果它们不能提供可靠的信息,也没有办法更新它们的数据?这是无稽之谈。RefreshRates()的调用只有在执行因任何原因被延迟时才是必要的。如长周期或只是在发送订单的瞬间更新价格的情况下开出订单。在你的变体中不应该有任何问题。最好贴出一个将价格值弄得如此错误的代码例子。我现在正在运行以下代码double close_H1, close_M1; /*******************Expert initialization function*******************/ int OnInit() { return(INIT_SUCCEEDED); }/*******************************************************************/ /************************Expert tick function************************/ void OnTick() { if(NewBar(PERIOD_M5)) { close_H1 = iClose(_Symbol, PERIOD_M5, 1); close_M1 = iClose(_Symbol, PERIOD_M1, 1); if(close_H1 != close_M1) Print(close_H1, " != ", close_M1); } Comment(close_H1, "\n", close_M1, "\n" ); }/******************************************************************/ /**********************Expert OnDeinit function**********************/ void OnDeinit(const int reason) { Comment(""); }/******************************************************************/ bool NewBar(ENUM_TIMEFRAMES tf) { static datetime nt = 0; datetime tm = iTime(_Symbol, tf, 0); if(tm == 0) return false; if(tm != nt) { nt = tm; return true; } return false; }/******************************************************************/ 事实上,分钟闭合应该与图表上的 任何高点时期 相吻合。我稍后会检查一下,看看日志中是否有什么记载。 Ihor Herasko 2021.02.15 13:11 #17 Mikhail Nazarenko:而且,如果你把时间框架改成与当前不同的时间框架,数据将停止及时更新,即使使用RefreshRates()。 是否有任何测试代码来证实这一说法?我自己没有注意到这一点。切换TF时,我们只需等待历史被调换,然后工作。 所以,iClose和MT4的其他基本功能产生了不相关的废话。 这个断言太响亮了。有时是有可能的,但这就是错误代码 的作用。如果你不检查它们,你将永远不知道你是否能使用你得到的结果。 我确信80%的信息产品都没有考虑到MT4的这些独特功能。如何生活?) 我还要说:几乎所有的程序都没有考虑到这些特点。这就是为什么他们的新版本会被发布。一旦一个产品不再被支持,它就无法使用。 Документация по MQL5: Константы, перечисления и структуры / Коды ошибок и предупреждений www.mql5.com Коды ошибок и предупреждений - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 Mikhail Nazarenko 2021.02.15 13:28 #18 Alexey Viktorov:这是无稽之谈。只有在执行过程中由于某种原因出现了延迟时,才有必要调用RefreshRates()。像长周期或只是在发送订单时更新价格的情况下开单。在你的变体中不应该有任何问题。最好贴出一个将价格值弄得如此错误的代码例子。我现在正在运行这样的代码 从本质上讲,分钟收盘价应该与图表上的 任何高点时期 相吻合。稍后我将看看日志中是否有什么内容。 我的代码与此类似。在OnTick中出现了一个错误。 close_H1 = iClose(_Symbol, PERIOD_M5, 1); 它应该是 close_H1 = iClose(_Symbol, PERIOD_H1, 1); close_M5 = Close[1]; if(close_H1 != close_M5) Print(close_H1, " != ", close_M5); if(close_M1 != close_M5) Print(close_M1, " != ", close_M5); 如果我们有当前的时间框架M5,我们应该将M5与H1和M1进行比较。 当前的时间框架M5显示正确。问题出在H1和M1上。 我在Alpari real EURCHF M5上检查了一下,但我没有用Print,而是在每个级别上画了横杠。 Mikhail Nazarenko 2021.02.15 13:56 #19 Ihor Herasko:是否有任何测试代码来支持这种说法?我自己没有注意到这一点。当切换TF时,我们只需等待历史的交换,然后工作。这句话太响亮了。在某些情况下这是可能的,但这就是错误代码 的作用。如果你不检查它们,你将永远不知道你是否能使用你得到的结果。让我多说一句:几乎所有的程序都没有考虑到一些问题。这就是为什么他们的新版本会被发布。一旦一个产品不再被支持,它就无法被使用。 这是代码,把它放进去看看。我并不是每根蜡烛都有火柴。Alpari real EURCHF M5。 double close_H1,close_M5, close_M1; /*******************Expert initialization function*******************/ int OnInit() { return(INIT_SUCCEEDED); }/*******************************************************************/ /************************Expert tick function************************/ void OnTick() { if(NewBar(PERIOD_M5)) { close_H1 = iClose(_Symbol, PERIOD_H1, 1); close_M1 = iClose(_Symbol, PERIOD_M1, 1); close_M5 = Close[1]; if(close_H1 != close_M5) Print(close_H1, " H1 != M5 ", close_M5); if(close_M1 != close_M5) Print(close_M1, " M1 != M5 ", close_M5); Comment( close_H1, " H1\n", close_M1, " M1\n", close_M5, " M5\n" ); } }/******************************************************************/ /**********************Expert OnDeinit function**********************/ void OnDeinit(const int reason) { Comment(""); }/******************************************************************/ bool NewBar(ENUM_TIMEFRAMES tf) { static datetime nt = 0; datetime tm = iTime(_Symbol, tf, 0); if(tm == 0) return false; if(tm != nt) { nt = tm; return true; } return false; }/******************************************************************/ Artyom Trishkin 2021.02.15 14:00 #20 Mikhail Nazarenko: iClose: 零 - 错误。该函数不报告错误。输出一个目前已经过时的值。 如果你怀疑iXXXXXXX函数中有错误,请使用SymbolInfoXXXX函数 123456789...12 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
不,它不是。在函数帮助中,关于返回值是怎么写的?
返回的值
相应图表的条形收盘价(由shift参数指定)的值,如果有错误,则为0。调用GetLastError()来获取更多的错误信息。
而如果你把时间框架改成与当前不同的时间框架,即使使用RefreshRates(),数据也不会及时更新。所以MT4中的iClose等基本功能产生了不相关的废话。我确信80%的信息都没有考虑到MT4的这些独特功能。如何生活?)
变化关闭不会带来任何好处。无论图表周期 如何,iClose的当前值等于Bid值。
我做了一个EA,在M5上运行了一天。在小时变化时,它为每个数值画出水平线:iClose(symbol,PERIOD_H1,1),iClose(symbol,PERIOD_M5,1),iClose(symbol,PERIOD_ M1,1 ),Close[1],Bid
向开发商提问。如果 MQL4中的iClose 函数不能提供正确的信息,也没有办法更新它的数据,那么我们为什么还需要它呢?
我做了一个EA,在M5上运行了一天。在小时变化时,它为每个数值画出水平线:iClose(symbol,PERIOD_H1,1),iClose(symbol,PERIOD_M5,1),iClose(symbol,PERIOD_ M1,1 ),Close[1],Bid
向开发商提问。为什么MQL4需要iClose 函数,如果它们不能提供可靠的信息,也没有办法更新它们的数据?
这是无稽之谈。RefreshRates()的调用只有在执行因任何原因被延迟时才是必要的。如长周期或只是在发送订单的瞬间更新价格的情况下开出订单。在你的变体中不应该有任何问题。最好贴出一个将价格值弄得如此错误的代码例子。
我现在正在运行以下代码
事实上,分钟闭合应该与图表上的 任何高点时期 相吻合。我稍后会检查一下,看看日志中是否有什么记载。而且,如果你把时间框架改成与当前不同的时间框架,数据将停止及时更新,即使使用RefreshRates()。
是否有任何测试代码来证实这一说法?我自己没有注意到这一点。切换TF时,我们只需等待历史被调换,然后工作。
所以,iClose和MT4的其他基本功能产生了不相关的废话。
这个断言太响亮了。有时是有可能的,但这就是错误代码 的作用。如果你不检查它们,你将永远不知道你是否能使用你得到的结果。
我确信80%的信息产品都没有考虑到MT4的这些独特功能。如何生活?)
我还要说:几乎所有的程序都没有考虑到这些特点。这就是为什么他们的新版本会被发布。一旦一个产品不再被支持,它就无法使用。
这是无稽之谈。只有在执行过程中由于某种原因出现了延迟时,才有必要调用RefreshRates()。像长周期或只是在发送订单时更新价格的情况下开单。在你的变体中不应该有任何问题。最好贴出一个将价格值弄得如此错误的代码例子。
我现在正在运行这样的代码
从本质上讲,分钟收盘价应该与图表上的 任何高点时期 相吻合。稍后我将看看日志中是否有什么内容。我的代码与此类似。在OnTick中出现了一个错误。
它应该是
如果我们有当前的时间框架M5,我们应该将M5与H1和M1进行比较。
当前的时间框架M5显示正确。问题出在H1和M1上。
我在Alpari real EURCHF M5上检查了一下,但我没有用Print,而是在每个级别上画了横杠。
是否有任何测试代码来支持这种说法?我自己没有注意到这一点。当切换TF时,我们只需等待历史的交换,然后工作。
这句话太响亮了。在某些情况下这是可能的,但这就是错误代码 的作用。如果你不检查它们,你将永远不知道你是否能使用你得到的结果。
让我多说一句:几乎所有的程序都没有考虑到一些问题。这就是为什么他们的新版本会被发布。一旦一个产品不再被支持,它就无法被使用。
这是代码,把它放进去看看。我并不是每根蜡烛都有火柴。Alpari real EURCHF M5。
iClose: 零 - 错误。该函数不报告错误。输出一个目前已经过时的值。
如果你怀疑iXXXXXXX函数中有错误,请使用SymbolInfoXXXX函数