程序库: MT4Orders - 页 64 1...575859606162636465666768697071...95 新评论 mktr8591 2021.06.18 18:55 #631 fxsaber:我曾遇到过订单达到八百张的情况。在活跃的交易中,这种情况 经常发生在新建立的订单 中。 在这种情况下,您应该对几百个订单进行哈希映射。 但这种情况不会每 15 分钟就发生一次,不是吗? fxsaber 2021.06.18 20:41 #632 mktr8591: 但并不是每 15 分钟就会发生一次,不是吗? 是的 fxsaber 2021.06.30 15:56 #633 为使用此捆绑包的用户提供 交易、自动交易系统和交易策略测试论坛 库:MT4Orders fxsaber, 2021.05.12 21:58 #define MT4ORDERS_BYPASS_MAXTIME 1000000 // 等待交易环境同步的最长时间(微秒 #include <MT4Orders.mqh> //https://www.mql5.com/zh/code/16006 我建议更新同步器。 关于交易、自动交易系统和测试交易策略的论坛。 库:TradesID fxsaber, 2021.06.30 15:53 ByPass.mqh 已更新。在删除部分执行订单的情况下工作正常。添加了问题发生时的日志记录。 在修复 之前,我建议使用b2958。 mktr8591 2021.07.09 13:58 #634 fxsaber: 请澄清 MT4Orders.mqh 代码(2021.06.01 起)中的几个问题: 1. 第 1413 行 HistoryDealSelect2(): else if (::HistoryDealGetInteger(DealTicket, DEAL_TIME_MSC) < OrderTimeFill) break; 此处,如果交易时间小于订单时间,历史周期就会中断。 在实际操作中,难道不会出现 mqh 中的交易时间小于订单时间的情况吗? 2. 第 2259 行 MT4OrderSend():return((arrow_color == INT_MAX) ? (MT4ORDERS::NewOrderCheck() ? 0 : -1) : ((((int)arrow_color != INT_MIN) || MT4ORDERS::NewOrderCheck()) && MT4ORDERS::OrderSend(MT4ORDERS::LastTradeRequest, MT4ORDERS::LastTradeResult) #ifdef MT4ORDERS_BYPASS_MAXTIME && (!MT4ORDERS::IsHedging || _B2(MT4ORDERS::ByPass += MT4ORDERS::LastTradeResult.order)) #endif // #ifdef MT4ORDERS_BYPASS_MAXTIME ? (MT4ORDERS::IsHedging ? (long)MT4ORDERS::LastTradeResult.order : // PositionID == Result.order - MT5-Hedge功能 ((MT4ORDERS::LastTradeRequest.action == TRADE_ACTION_DEAL) ? (MT4ORDERS::IsTester ? (_B2(::PositionSelect(MT4ORDERS::LastTradeRequest.symbol)) ? PositionGetInteger(POSITION_TICKET) : 0) : // MT4ORDERS::OrderSend 中的 HistoryDealSelect ::HistoryDealGetInteger(MT4ORDERS::LastTradeResult.deal, DEAL_POSITION_ID)) : (long)MT4ORDERS::LastTradeResult.order)) : -1));为什么不将净额结算订单添加到 MT4ORDERS::ByPass+= 中?3: 在某些函数中使用 WHILE(A) 宏:第 1088 行#define WHILE(A) while ((!(Res = (A))) && MT4ORDERS::Waiting())为什么不检查 IsStopped()? 为了优化时间? 如果用户将 OrderSend_MaxPause 设置为几秒呢?4.我注意到在OrderSend(LastTradeRequest, LastTradeResult) 之前没有清除 LastTradeResult。这是由函数本身完成的吗?是一个未注明的功能吗? fxsaber 2021.07.09 14:15 #635 mktr8591:请澄清 MT4Orders.mqh 代码(2021.06.01 起)中的几个问题: 1. 第 1413 行 HistoryDealSelect2(): 此处,如果交易时间小于订单时间,历史周期就会中断。 在实际操作中,难道不会出现 mqh 中的交易时间小于订单时间的情况吗? 这完全是断章取义。看看HistoryDealSelect2 被调用的位置。Result.deal(结果.交易)位于该处,而完全执行的Result.order(结果.订单)为空。保存是有时间限制的。可能在一个大型历史问题上测试过。我已经不记得了。我自己不使用OrderSend 中的内置同步器,因为我使用的是空 MT4ORDERS::OrderSend_MaxPause。 fxsaber 2021.07.09 14:17 #636 mktr8591:2. 第 2259 行 MT4OrderSend():为什么订单没有添加到 MT4ORDERS::ByPass+= 中? 我没有想到 ByPass 可用于净额结算。我自己写的。 fxsaber 2021.07.09 14:19 #637 mktr8591:3. 在某些函数中使用宏 WHILE(A) : 第 1088 行为什么不检查 IsStopped()? 为了优化时间? 如果用户将 OrderSend_MaxPause 设置为几秒怎么办? 在实践中,我看不出有什么问题。我没有添加它绝对不是因为健忘。 fxsaber 2021.07.09 14:20 #638 mktr8591:4.我注意到在OrderSend(LastTradeRequest, LastTradeResult) 之前,您没有清除 LastTradeResult。这是由函数本身完成的吗?是一个未注明的功能吗? 似乎所有 MqlTradeResult 字段都会被 OrderSend 填满,因此我可以省去清理的步骤。 mktr8591 2021.07.09 14:29 #639 fxsaber: 谢谢! 图书馆很棒。 mktr8591 2021.07.09 14:34 #640 fxsaber: 我设计 ByPass 并不是为了织网。我是为自己编写的。 我从网状结构的角度研究了 ByPass 代码--一切都应该运行正常。(当然,您应该进行测试)。 1...575859606162636465666768697071...95 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我曾遇到过订单达到八百张的情况。在活跃的交易中,这种情况 经常发生在新建立的订单 中。 在这种情况下,您应该对几百个订单进行哈希映射。
但并不是每 15 分钟就会发生一次,不是吗?
是的
为使用此捆绑包的用户提供
交易、自动交易系统和交易策略测试论坛
库:MT4Orders
fxsaber, 2021.05.12 21:58
我建议更新同步器。
关于交易、自动交易系统和测试交易策略的论坛。
库:TradesID
fxsaber, 2021.06.30 15:53
ByPass.mqh 已更新。在删除部分执行订单的情况下工作正常。添加了问题发生时的日志记录。
在修复 之前,我建议使用b2958。
请澄清 MT4Orders.mqh 代码(2021.06.01 起)中的几个问题:
1. 第 1413 行 HistoryDealSelect2():此处,如果交易时间小于订单时间,历史周期就会中断。
在实际操作中,难道不会出现 mqh 中的交易时间小于订单时间的情况吗?
2. 第 2259 行 MT4OrderSend():
为什么不将净额结算订单添加到 MT4ORDERS::ByPass+= 中?
3: 在某些函数中使用 WHILE(A) 宏:第 1088 行
为什么不检查 IsStopped()? 为了优化时间? 如果用户将 OrderSend_MaxPause 设置为几秒呢?
4.我注意到在OrderSend(LastTradeRequest, LastTradeResult) 之前没有清除 LastTradeResult。这是由函数本身完成的吗?是一个未注明的功能吗?
请澄清 MT4Orders.mqh 代码(2021.06.01 起)中的几个问题:
1. 第 1413 行 HistoryDealSelect2():此处,如果交易时间小于订单时间,历史周期就会中断。
在实际操作中,难道不会出现 mqh 中的交易时间小于订单时间的情况吗?
这完全是断章取义。看看HistoryDealSelect2 被调用的位置。Result.deal(结果.交易)位于该处,而完全执行的Result.order(结果.订单)为空。保存是有时间限制的。可能在一个大型历史问题上测试过。我已经不记得了。我自己不使用OrderSend 中的内置同步器,因为我使用的是空 MT4ORDERS::OrderSend_MaxPause。
2. 第 2259 行 MT4OrderSend():
为什么订单没有添加到 MT4ORDERS::ByPass+= 中?
3. 在某些函数中使用宏 WHILE(A) : 第 1088 行
为什么不检查 IsStopped()? 为了优化时间? 如果用户将 OrderSend_MaxPause 设置为几秒怎么办?
在实践中,我看不出有什么问题。我没有添加它绝对不是因为健忘。
4.我注意到在OrderSend(LastTradeRequest, LastTradeResult) 之前,您没有清除 LastTradeResult。这是由函数本身完成的吗?是一个未注明的功能吗?
似乎所有 MqlTradeResult 字段都会被 OrderSend 填满,因此我可以省去清理的步骤。
谢谢!
图书馆很棒。
我设计 ByPass 并不是为了织网。我是为自己编写的。