新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 572 1...565566567568569570571572573574575576577578579...1953 新评论 Taras Slobodyanik 2018.06.18 08:24 #5711 PolarSeaman:对不起,我不明白你为什么不能。你可以,但它不会完全是一个定时器 if (IsTesting()) OnTimer(); Taras Slobodyanik 2018.06.18 08:25 #5712 PolarSeaman:这就对了...如果虱子没来怎么办? 你需要在没有虱子的情况下 "开始"。第一个刻度是用于同步的,如果开始的刻度没有到来,市场就会关闭,没有什么可做的。 YanSay 2018.06.19 16:57 #5713 晚上好! 我不得不再次请求帮助。 必须在一定的时间范围内开出一个订单,如果在过去30分钟内已经用这个魔法开出了一个订单,就不必再开了。像这样写。 if (TimeCurrent()>StrToTime("00:01") && TimeCurrent()<StrToTime("00:30")) { //1я часть for (int i = OrdersTotal() - 1; i >= 0; i--) { if (!OrderSelect(i, SELECT_BY_POS)) continue; if (OrderSymbol() != Symbol()) continue; if (OrderMagicNumber() != MagicNumber1) continue; if (TimeDayOfWeek(OrderOpenTime()) != TimeDayOfWeek (TimeCurrent())) continue; ++nCnt1; { if (nCnt1>0) return; } } //2ая часть for (int i = OrdersTotal() - 1; i >= 0; i--) { if (!OrderSelect(i, SELECT_BY_POS,MODE_HISTORY)) continue; if (OrderSymbol() != Symbol()) continue; if (OrderMagicNumber() != MagicNumber1) continue; if ( TimeToStr(TimeCurrent()-OrderOpenTime(),TIME_MINUTES) <= TimeToStr(D'00:30',TIME_MINUTES)) continue; ++nCnt1; { if (nCnt1>0) return; } } //Открытие ордера } 如果你只留下第一部分,问题是,如果在这半小时内关闭了一个止损/止盈头寸,另一个就会打开。因此,我增加了第二部分,进入订单历史,如果在过去30分钟内已经有一个订单是这个磁带,那么就不要打开它。但第二部分出了问题--它仍然打开。 请指教! Taras Slobodyanik 2018.06.19 17:29 #5714 你必须以秒计算。 if ( TimeCurrent()-OrderOpenTime() <= 30*60 ) YanSay 2018.06.19 17:52 #5715 Taras Slobodyanik:你必须以秒计算。 不幸的是,这并不奏效。 又试了一下,也没有。 if ( TimeToStr(TimeCurrent()-OrderOpenTime(),TIME_SECONDS) <= TimeToStr(30*60,TIME_SECONDS)) Ihor Herasko 2018.06.19 18:20 #5716 YanSay:不幸的是,这并不奏效。 我又试了一下,但也没有成功。 你为什么要比较所有的线路?塔拉斯说得很对--以秒计算。他的版本不起作用,因为你仍然没有进入账户历史。 //2ая часть for (int i = OrdersTotal() - 1; i >= 0; i--)这是一个工作订单的循环。如果我们看一下历史,循环会是这样的。 //2ая часть for (int i = OrdersHistoryTotal() - 1; i >= 0; i--) 那么,我们应该在循环中采用订单的关闭时间,而不是其打开时间。 YanSay 2018.06.19 21:14 #5717 Ihor Herasko:你为什么要比较所有的线路?塔拉斯说的没错,他说以秒计算。他的版本并不符合,因为你从未接触过账户历史。 这是一个工作订单的循环。如果我们看一下历史,循环会是这样的。 然后在循环中,我们应该取订单的收盘时间,而不是其开盘时间。 if (TimeCurrent()>StrToTime("00:01") && TimeCurrent()<StrToTime("00:30")) { //1я часть for (int i = OrdersTotal() - 1; i >= 0; i--) { if (!OrderSelect(i, SELECT_BY_POS)) continue; if (OrderSymbol() != Symbol()) continue; if (OrderMagicNumber() != MagicNumber1) continue; if (TimeDayOfWeek(OrderOpenTime()) != TimeDayOfWeek (TimeCurrent())) continue; ++nCnt1; { if (nCnt1>0) return; } } //2ая часть for (int i = OrdersHistoryTotal() - 1; i >= 0; i--) { if (!OrderSelect(i, SELECT_BY_POS)) continue; if (OrderSymbol() != Symbol()) continue; if (OrderMagicNumber() != MagicNumber1) continue; if ( TimeCurrent() -OrderCloseTime() <= 30*60 ) continue; ++nCnt1; { if (nCnt1>0) return; } } //Открытие ордера } 如果我理解正确的话,你是指TimeToStr,也就是说,你已经把它翻译成了文字? 纠正了,但仍然是。 对不起,如果我是完全愚蠢的。 lil_lil 2018.06.20 06:10 #5718 YanSay: 如果我理解正确,你是指TimeToStr--即翻译成文字? 纠正了,但还是。 如果我是完全愚蠢的,我很抱歉。大声说出你的情况,你就会知道发生了什么事)。 if ( TimeCurrent() -OrderCloseTime() <= 30*60 ) Roman Sharanov 2018.06.20 06:35 #5719 如果以前的一个指标缓冲值被分配为空值,它是否会被从图表中删除? 还是在缓冲区内有一个空值,而绘图将保留在图表上? Ihor Herasko 2018.06.20 06:47 #5720 YanSay: 如果我理解正确,你是指TimeToStr--即翻译成文字? 是的,将时间 转换为字符串 是没有意义的,因为时间是一个秒的数字。这个数字比字符串更容易和更快地工作。 纠正了,但还是。 如果我完全是愚蠢的,请原谅。你纠正了一件事,破坏了另一件事)。 在第二部分,而不是。 if (!OrderSelect(i, SELECT_BY_POS)) continue; 把它带回来。 if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue; 在你之前的尝试中,你的这一行是正确的。 1...565566567568569570571572573574575576577578579...1953 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
对不起,我不明白你为什么不能。
你可以,但它不会完全是一个定时器
这就对了...如果虱子没来怎么办? 你需要在没有虱子的情况下 "开始"。
第一个刻度是用于同步的,如果开始的刻度没有到来,市场就会关闭,没有什么可做的。
晚上好!
我不得不再次请求帮助。
必须在一定的时间范围内开出一个订单,如果在过去30分钟内已经用这个魔法开出了一个订单,就不必再开了。像这样写。
如果你只留下第一部分,问题是,如果在这半小时内关闭了一个止损/止盈头寸,另一个就会打开。因此,我增加了第二部分,进入订单历史,如果在过去30分钟内已经有一个订单是这个磁带,那么就不要打开它。但第二部分出了问题--它仍然打开。
请指教!
你必须以秒计算。
你必须以秒计算。
不幸的是,这并不奏效。
又试了一下,也没有。
不幸的是,这并不奏效。
我又试了一下,但也没有成功。
你为什么要比较所有的线路?塔拉斯说得很对--以秒计算。他的版本不起作用,因为你仍然没有进入账户历史。
这是一个工作订单的循环。如果我们看一下历史,循环会是这样的。
那么,我们应该在循环中采用订单的关闭时间,而不是其打开时间。
你为什么要比较所有的线路?塔拉斯说的没错,他说以秒计算。他的版本并不符合,因为你从未接触过账户历史。
这是一个工作订单的循环。如果我们看一下历史,循环会是这样的。
然后在循环中,我们应该取订单的收盘时间,而不是其开盘时间。
如果我理解正确的话,你是指TimeToStr,也就是说,你已经把它翻译成了文字?
纠正了,但仍然是。
对不起,如果我是完全愚蠢的。
如果我理解正确,你是指TimeToStr--即翻译成文字?
纠正了,但还是。
如果我是完全愚蠢的,我很抱歉。
大声说出你的情况,你就会知道发生了什么事)。
如果以前的一个指标缓冲值被分配为空值,它是否会被从图表中删除?
还是在缓冲区内有一个空值,而绘图将保留在图表上?
如果我理解正确,你是指TimeToStr--即翻译成文字?
是的,将时间 转换为字符串 是没有意义的,因为时间是一个秒的数字。这个数字比字符串更容易和更快地工作。
纠正了,但还是。
如果我完全是愚蠢的,请原谅。
你纠正了一件事,破坏了另一件事)。
在第二部分,而不是。
把它带回来。
在你之前的尝试中,你的这一行是正确的。