程序库: MT4Orders - 页 77 1...707172737475767778798081828384...95 新评论 fxsaber 2022.07.20 08:24 #761 Aleksey Vyazmikin 在研究了 GetLastError 之后,我认为对其进行补充是不合理的。 // 更改列表:// 08.02.2017:// 添加:变量 MT4ORDERS::LastTradeRequest 和MT4ORDERS::LastTradeResult содержат соответствующие данные MT5-OrderSend. 现在可以完整获取所有 MT5-OrderSend 数据。 Print(MT4ORDERS::LastTradeResult.retcode); // 操作返回代码 Print(MT4ORDERS::LastTradeResult.retcode_external); // 外部交易系统的返回代码 MT5 代码本身在这里。与MT4 代码 比较。 请注意,在 MT5 中,GetLastError() 不会返回交易错误。因此,如果要像 MT4 中那样操作,需要通过SetUserError 生成自己的相应错误。但即使是ERR_USER_ERROR_FIRST, 也不会提供 MT4 版本的错误信息。 fxsaber 2022.07.20 09:00 #762 关于交易、自动交易系统和测试交易策略的论坛 库: MT4Orders fxsaber, 2022.07.20 00:39 // 更改列表: // 20.07.2022 // 添加:已添加 OrderLotsOpen() - 关闭/删除前的全部仓位/订单量。仅在 ByPass 模式下正常工作。 Example. #define MT4ORDERS_BYPASS_MAXTIME 1000000 // 等待交易环境同步的最长时间(以微秒为单位 #include <MT4Orders.mqh> #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) #define PRINT(A) Print(#A + " = " + (string)(A) + "\n") void OnStart() { const ulong Ticket = OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0); // 开仓一手。 for (int i = 1; i <= 4; i++) if (OrderSelect(Ticket, SELECT_BY_TICKET) && !OrderCloseTime()) { OrderClose(OrderTicket(), 0.1 * i, OrderClosePrice(), 0); // 在 0.1、0.2、0.3、......关闭。地段:0.1,0.2,0.3,... if (OrderSelect(OrdersHistoryTotal() - 1, SELECT_BY_POS, MODE_HISTORY)) { OrderPrint(); PRINT(OrderLotsOpen()); // 相应收盘前的持仓量。它取自交易历史记录。 } } } 结果。 #50167020751 2022.07.20 09:58:58.401 buy 0.10 EURUSD 1.02471 0.00000 0.00000 2022.07.20 09:58:58.457 1.02468 0.00 0.00 -0.29 0 OrderLotsOpen() = 1.0 #50167020753 2022.07.20 09:58:58.401 buy 0.20 EURUSD 1.02471 0.00000 0.00000 2022.07.20 09:58:58.512 1.02468 0.00 0.00 -0.59 0 OrderLotsOpen() = 0.9 #50167020754 2022.07.20 09:58:58.401 buy 0.30 EURUSD 1.02471 0.00000 0.00000 2022.07.20 09:58:58.567 1.02468 0.00 0.00 -0.88 0 OrderLotsOpen() = 0.7 #50167020755 2022.07.20 09:58:58.401 buy 0.40 EURUSD 1.02471 0.00000 0.00000 2022.07.20 09:58:58.622 1.02468 0.00 0.00 -1.17 0 OrderLotsOpen() = 0.4 fxsaber 2022.07.20 09:27 #763 与 MT5 相比,库显示平仓头寸 的特殊性。 交易情况。 BuyLimit 开仓 1 手。 买入限价在 12:00 部分执行 0.4 手。 0.4 手的头寸于 13:00 关闭。 限价买入的其余部分于 14:00 执行 - 0.6 手。 0.6 手头寸于 15:00 关闭。 MT5 将显示有一个仓位在 12:00 开仓,15:00 平仓。该仓位的开仓/平仓价格可能非常奇怪。 MT4Orders 将显示有两个仓位:一个在 12:00 开仓,13:00 平仓,另一个在 14:00-15:00 开仓。开仓/平仓价格将足够。 雪崩 另一个最新的EA,无可匹敌的结果(等待批评) 奇迹仍在继续! Aleksey Vyazmikin 2022.07.20 14:00 #764 fxsaber #:MT5-Market 的部分内容就是通过该库编写的。主要原因是易于使用。 是的,这是一项成就。但是,市场接受时的错误检查并不能重现所有情况。 fxsaber#: 关于错误的话题。MT5 代码本身在这里。与MT4 代码 比较。请注意,在 MT5 中,GetLastError() 不会返回交易错误。因此,如果要像 MT4 中那样操作,需要通过SetUserError 生成自己的相应错误。但即使是ERR_USER_ERROR_FIRST, 也不会提供 MT4 版本的错误信息。 感谢您提供的信息,我对这方面不是很在行。 我的理解是否正确? int er=GetLastError(); 替换为 int er=MT4ORDERS::LastTradeResult.retcode_external; 就可以处理新的错误代码? 顺便说一下,我还没有找到 MT5 的类似错误,在 MT4 中是 135、145、146:135, 145, 146 - 还有吗? fxsaber 2022.07.20 14:21 #765 Aleksey Vyazmikin #:是的,这是一项成就。但是,marquee 准入错误检查并不能重现所有情况。 遗憾的是,我对市场只有理论上的想法。我没有通过检查的实践经验。 我的理解是否正确,即只需替换和处理新的错误代码即可? 正确。只有重置代码。ResetLastError 的类似方案是相同的 - 赋值为零。 顺便说一下,我还没有找到 MT5 的类似错误,在 MT4 中是这样的:135、145、146 - 还有吗? 我完全不知道错误的类型,因为我没有在战斗中使用 Expert Advisors。也许您应该尝试在 MT4 中重现每个错误,然后清楚地了解它们的性质,并与 MT5 中的类似错误进行比较。也许某处已经有对应的表格。并非所有代码在其他平台上都有同名代码。 Aleksey Vyazmikin 2022.07.20 14:37 #766 fxsaber #:这就对了。只有重码。与 ResetLastError 类似的方案--赋值为零。 那么,错误重置能否以某种方式集成到你的类中?因为第四个类并不需要它。 还是只需调用上次错误的信息,然后立即重置,即交换你示例中的函数就可以了? fxsaber#: 我完全不知道错误的类型,因为我没有在战斗中使用 Expert Advisors。也许您应该尝试在 MT4 中重现每个错误,然后清楚地了解它们的性质,并与 MT5 中的类似错误进行比较。也许某处已经有对应的表格。并非所有代码在其他平台上都有同名代码。 我一直在寻找这样的表格,但没有找到。错误并不总是出在代码上,经纪中心方面也会出现问题。 我的理解是,如果订单工作出现任何问题,GetLastError(); 返回代码 4756,如果是这样,也不错。 fxsaber 2022.07.20 16:10 #767 Aleksey Vyazmikin #:那么,错误重置可以整合到你的课堂中吗?我的意思是,4 似乎并不需要它。或者,调用上次错误的信息,然后一次性重置,即交换你示例中的函数,这样就可以了吗? 我不认为有重置的必要。我说的是与 MT4 工作方式的额外兼容性。 Aleksey Vyazmikin 2022.07.20 17:16 #768 fxsaber #:我不认为有必要重置。说是为了与我认为的 MT4 工作方式更加兼容。 我仍然需要澄清,这些错误是在调用的代码下面吗? Print(MT4ORDERS::LastTradeResult.retcode); // 操作返回代码 因为类似的事情 - 我不明白需要什么 - 下面的相同代码从MqlTradeResult 结构返回错误? Print(MT4ORDERS::LastTradeResult.retcode_external); // 外部交易系统的返回代码 fxsaber 2022.07.20 22:25 #769 Aleksey Vyazmikin #:我还是要澄清一下,这些错误是下面所说的代码吗?因为类似的事情 - 需要什么我不明白 - 下面的相同代码从MqlTradeResult 结构返回错误? retcode - MT5 错误。retcode_external - 第三方桥接器开发人员可选择填写的字段。 Aleksey Vyazmikin 2022.07.20 23:43 #770 fxsaber #:retcode - MT5 错误。retcode_external - 可由第三方网桥开发人员选择填写的字段。 明白了,谢谢。我想现在用标准的就足够了。 1...707172737475767778798081828384...95 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
// 08.02.2017:
// 添加:变量 MT4ORDERS::LastTradeRequest 和MT4ORDERS::LastTradeResult содержат соответствующие данные MT5-OrderSend.
现在可以完整获取所有 MT5-OrderSend 数据。
MT5 代码本身在这里。与MT4 代码 比较。
请注意,在 MT5 中,GetLastError() 不会返回交易错误。因此,如果要像 MT4 中那样操作,需要通过SetUserError 生成自己的相应错误。但即使是ERR_USER_ERROR_FIRST, 也不会提供 MT4 版本的错误信息。
关于交易、自动交易系统和测试交易策略的论坛
库: MT4Orders
fxsaber, 2022.07.20 00:39
Example.
结果。
与 MT5 相比,库显示平仓头寸 的特殊性。
交易情况。
MT5 将显示有一个仓位在 12:00 开仓,15:00 平仓。该仓位的开仓/平仓价格可能非常奇怪。
MT4Orders 将显示有两个仓位:一个在 12:00 开仓,13:00 平仓,另一个在 14:00-15:00 开仓。开仓/平仓价格将足够。
MT5-Market 的部分内容就是通过该库编写的。主要原因是易于使用。
是的,这是一项成就。但是,市场接受时的错误检查并不能重现所有情况。
关于错误的话题。
MT5 代码本身在这里。与MT4 代码 比较。
请注意,在 MT5 中,GetLastError() 不会返回交易错误。因此,如果要像 MT4 中那样操作,需要通过SetUserError 生成自己的相应错误。但即使是ERR_USER_ERROR_FIRST, 也不会提供 MT4 版本的错误信息。
感谢您提供的信息,我对这方面不是很在行。
我的理解是否正确?
替换为
就可以处理新的错误代码?
顺便说一下,我还没有找到 MT5 的类似错误,在 MT4 中是 135、145、146:135, 145, 146 - 还有吗?
是的,这是一项成就。但是,marquee 准入错误检查并不能重现所有情况。
遗憾的是,我对市场只有理论上的想法。我没有通过检查的实践经验。
我的理解是否正确,即只需替换和处理新的错误代码即可?
正确。只有重置代码。ResetLastError 的类似方案是相同的 - 赋值为零。
顺便说一下,我还没有找到 MT5 的类似错误,在 MT4 中是这样的:135、145、146 - 还有吗?
我完全不知道错误的类型,因为我没有在战斗中使用 Expert Advisors。也许您应该尝试在 MT4 中重现每个错误,然后清楚地了解它们的性质,并与 MT5 中的类似错误进行比较。也许某处已经有对应的表格。并非所有代码在其他平台上都有同名代码。
这就对了。只有重码。与 ResetLastError 类似的方案--赋值为零。
那么,错误重置能否以某种方式集成到你的类中?因为第四个类并不需要它。
还是只需调用上次错误的信息,然后立即重置,即交换你示例中的函数就可以了?
我完全不知道错误的类型,因为我没有在战斗中使用 Expert Advisors。也许您应该尝试在 MT4 中重现每个错误,然后清楚地了解它们的性质,并与 MT5 中的类似错误进行比较。也许某处已经有对应的表格。并非所有代码在其他平台上都有同名代码。
我一直在寻找这样的表格,但没有找到。错误并不总是出在代码上,经纪中心方面也会出现问题。
我的理解是,如果订单工作出现任何问题,GetLastError(); 返回代码 4756,如果是这样,也不错。
那么,错误重置可以整合到你的课堂中吗?我的意思是,4 似乎并不需要它。
或者,调用上次错误的信息,然后一次性重置,即交换你示例中的函数,这样就可以了吗?
我不认为有重置的必要。我说的是与 MT4 工作方式的额外兼容性。
我不认为有必要重置。说是为了与我认为的 MT4 工作方式更加兼容。
我仍然需要澄清,这些错误是在调用的代码下面吗?
因为类似的事情 - 我不明白需要什么 - 下面的相同代码从MqlTradeResult 结构返回错误?
我还是要澄清一下,这些错误是下面所说的代码吗?
因为类似的事情 - 需要什么我不明白 - 下面的相同代码从MqlTradeResult 结构返回错误?
retcode - MT5 错误。retcode_external - 第三方桥接器开发人员可选择填写的字段。
retcode - MT5 错误。retcode_external - 可由第三方网桥开发人员选择填写的字段。
明白了,谢谢。我想现在用标准的就足够了。