MT5和速度在行动 - 页 7 1234567891011121314...94 新评论 A100 2020.05.31 23:21 #61 fxsaber: 你什么都不懂。当我们真的返回时,我们正在进入生成队列的On-functions。这可能会导致暂停,使第一个OrderSend无法发送正确的第二个。 暂停/延迟的时间是多少?在复制3个结构? OnTradeTransaction( параметры ) { поместить параметры в очередь OnMain(); } 你建议通过保存所有返回后的On-functions来积累 队列,等待On-function,这将表示第一个OrderSend已经完成。然后只发送第二个OrderSend。 没有必要 积累所有的事件。不要等待下一个事件的复制--你可以在返回前处理事件,并在前提条件到达后立即发送第二个OrderSend,这样做 你也没有意识到,在第一个OrderSend期间可以执行持仓,但它的OnTradeTransaction将 比第一个OrderSend的最终OnTradeTransaction更晚进入队列(在同一个微秒内,但更晚)。 那么在这种情况下,它是如何帮助你的呢? bool HandleNextEvent(ENUM_EVENT_TYPE); 在这里和在那里都将是最后一次 Алексей Тарабанов 2020.05.31 23:22 #62 fxsaber: 你什么都不懂。当我们真的返回时,我们正在进入生成队列的On-functions。这可能会导致暂停,使第一个OrderSend无法在第一个订单后立即发送正确的第二个订单。 你建议通过在返回后保存所有的On-functions来积累队列,等待On-function,其中会有一个关于第一个OrderSend结束的消息。然后只发送第二个OrderSend。 同时,你不明白,在第一个OrderSend期间可以执行持仓,但它的OnTradeTransaction将比第一个OrderSend的OnTradeTransaction完成时间更晚(在同一微秒内,但更晚)进入队伍。 没有排队。新事件将在当前事件之后被处理,在此期间发生的所有事件将被忽略。 Алексей Тарабанов 2020.05.31 23:31 #63 队列或堆栈是由你形成的,MQ不做这个。 Maksim Emeliashin 2020.05.31 23:35 #64 在我看来,解决问题的方法是能够 "订阅 "一个订单。也就是说,当一个订单的交易发生时,终端要产生一个事件。 但这应该由开发商来实施,而不是由我们。我们所有的解决方案,或多或少都会回归到交易的历史。我没有这种微秒级的关键性,但这真的是 但是,写复杂的自行车来发现交易是否通过,水平是否被触发,或者是否有人在终端纠正了头寸,这真的很烦人。 尽管这似乎是一件简单的事情--一个关于仓位交易的事件--一切都会变得更加容易。 A100 2020.05.31 23:48 #65 Maksim Emeliashin: 但这要由开发商来实现,而不是我们。 开发者应该只提供工具。MQL本质上是一种低级别的编程语言(就像C++)。你不是在任务方面而是在计算方面使用它。而你自己做所有的高层决策。你可能缺乏工具,但不缺乏现成的解决方案 fxsaber 2020.05.31 23:48 #66 A100: What's the pause\delay?在复制3个结构? 在处理各种事件的队列中。 在这种情况下,它将如何帮助你? 这将是这里或那里的最后一个。 我将会注意到收货时的情况。 fxsaber 2020.05.31 23:49 #67 Алексей Тарабанов: 没有排队。新事件将在当前事件之后被处理,在此期间发生的所有事件将被忽略。 无能。 A100 2020.06.01 00:21 #68 fxsaber: 在处理过程中,队列中有各种事件。 我会注意到发球台上的关闭。 让我们停在我真的(没有HandleNextEvent 的代码) 不理解基本的东西。 最后,建议的HandleNextEvent 和我写的不同之处在于,它是通过递归,而我是通过一个循环。此外,队列最初形成,你可以管理它......你一次处理一些事件,把它们推迟到其他时间,你有完全的自由。 fxsaber 2020.06.01 09:43 #69 这个EA不报警的原因是什么? const MqlTick GetMarketWatchTick( void ) { MqlTick Tick = {0}; ::SymbolInfoTick(_Symbol, Tick); return(Tick); } const MqlTick GetLastHistoryTick() { MqlTick Tick[1]; ::CopyTicks(_Symbol, Tick, COPY_TICKS_ALL, 0, 1); return(Tick[0]); } void OnTick() { if (GetMarketWatchTick().time_msc > GetLastHistoryTick().time_msc) // Тик из Обзора рынка свежее, чем последний тик из истории. Alert("Hello!"); }同时,同样的检查,缝在同一个终端上的战斗交易顾问,警报。可能的原因是什么? fxsaber 2020.06.03 09:37 #70 关于交易、自动交易系统和交易策略测试的论坛 MT5和速度在行动 安东, 2020.05.29 16:21 用于测试最大和平均时间的脚本。 2474. Last tick time. Selected orders: 0; max time: 0.187 ms; avr time: 0.022 ms; 100000 iterations Last 3 days. Selected orders: 1956; max time: 1.832 ms; avr time: 0.301 ms; 100000 iterations Orders total: 56561 它已经变得非常好。如果你已经改变了它--谢谢你。我将继续关注战斗模式下的表现。 PS 在战斗模式下,当进行交易时,它几乎总是滞后(只输出大于5毫秒的情况)。 2020.06.03 13:57:27.895 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 14 ms. 2020.06.03 13:57:47.780 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 5 ms. 2020.06.03 14:03:49.844 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 9 ms. 2020.06.03 14:03:51.063 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 8 ms. 2020.06.03 14:03:55.115 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 12 ms. 2020.06.03 14:03:56.935 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 6 ms. 否则似乎比2470好得多。 1234567891011121314...94 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你什么都不懂。当我们真的返回时,我们正在进入生成队列的On-functions。这可能会导致暂停,使第一个OrderSend无法发送正确的第二个。
暂停/延迟的时间是多少?在复制3个结构?
你建议通过保存所有返回后的On-functions来积累 队列,等待On-function,这将表示第一个OrderSend已经完成。然后只发送第二个OrderSend。
没有必要 积累所有的事件。不要等待下一个事件的复制--你可以在返回前处理事件,并在前提条件到达后立即发送第二个OrderSend,这样做
你也没有意识到,在第一个OrderSend期间可以执行持仓,但它的OnTradeTransaction将 比第一个OrderSend的最终OnTradeTransaction更晚进入队列(在同一个微秒内,但更晚)。
那么在这种情况下,它是如何帮助你的呢?
bool HandleNextEvent(ENUM_EVENT_TYPE);
在这里和在那里都将是最后一次
你什么都不懂。当我们真的返回时,我们正在进入生成队列的On-functions。这可能会导致暂停,使第一个OrderSend无法在第一个订单后立即发送正确的第二个订单。
你建议通过在返回后保存所有的On-functions来积累队列,等待On-function,其中会有一个关于第一个OrderSend结束的消息。然后只发送第二个OrderSend。
同时,你不明白,在第一个OrderSend期间可以执行持仓,但它的OnTradeTransaction将比第一个OrderSend的OnTradeTransaction完成时间更晚(在同一微秒内,但更晚)进入队伍。
没有排队。新事件将在当前事件之后被处理,在此期间发生的所有事件将被忽略。
在我看来,解决问题的方法是能够 "订阅 "一个订单。也就是说,当一个订单的交易发生时,终端要产生一个事件。
但这应该由开发商来实施,而不是由我们。我们所有的解决方案,或多或少都会回归到交易的历史。我没有这种微秒级的关键性,但这真的是
但是,写复杂的自行车来发现交易是否通过,水平是否被触发,或者是否有人在终端纠正了头寸,这真的很烦人。
尽管这似乎是一件简单的事情--一个关于仓位交易的事件--一切都会变得更加容易。
但这要由开发商来实现,而不是我们。
开发者应该只提供工具。MQL本质上是一种低级别的编程语言(就像C++)。你不是在任务方面而是在计算方面使用它。而你自己做所有的高层决策。你可能缺乏工具,但不缺乏现成的解决方案
What's the pause\delay?在复制3个结构?
在处理各种事件的队列中。
在这种情况下,它将如何帮助你?
这将是这里或那里的最后一个。
我将会注意到收货时的情况。
没有排队。新事件将在当前事件之后被处理,在此期间发生的所有事件将被忽略。
无能。
在处理过程中,队列中有各种事件。
我会注意到发球台上的关闭。
让我们停在我真的(没有HandleNextEvent 的代码) 不理解基本的东西。
最后,建议的HandleNextEvent 和我写的不同之处在于,它是通过递归,而我是通过一个循环。此外,队列最初形成,你可以管理它......你一次处理一些事件,把它们推迟到其他时间,你有完全的自由。
同时,同样的检查,缝在同一个终端上的战斗交易顾问,警报。可能的原因是什么?
关于交易、自动交易系统和交易策略测试的论坛
MT5和速度在行动
安东, 2020.05.29 16:21
用于测试最大和平均时间的脚本。
2474.
它已经变得非常好。如果你已经改变了它--谢谢你。我将继续关注战斗模式下的表现。
PS 在战斗模式下,当进行交易时,它几乎总是滞后(只输出大于5毫秒的情况)。
否则似乎比2470好得多。