程序库: MT4Orders - 页 81 1...747576777879808182838485868788...95 新评论 Stanislav Korotky 2023.02.05 22:00 #801 如果启用 #define MT4ORDERS_FASTHISTORY_OFF 指令,则无法编译 - 会产生大量错误。 早些时候,我不得不启用该指令,因为如果不启用该指令,文章中使用的某些功能(在此 讨论)就无法使用。如果功能仍有缩减,最好进行修正。 Библиотеки: MT4Orders - Попробуйте отключить этот медленный режим. Выделенная ссылка отвечает за игнорирование закрытых позиций по CloseBy, а поиск соответствующего выхода 2019.09.27www.mql5.com что такой простой код не работал корректно в MT5 со старой версией библиотеки. Было бы очень желательно указать как минимум в шапке комменатриев исходника. а поиск соответствующего выхода как раз обложен условной компиляцией на MT4ORDERS fxsaber 2023.02.05 22:08 #802 Stanislav Korotky #:如果启用 #define MT4ORDERS_FASTHISTORY_OFF 指令,则无法编译 - 会产生大量错误。 这是我无法消除的历史遗留问题。 MQ 带来了太多令人头疼的问题,只有经过改装的变体才值得使用。 尽管错误报告少得奇怪,但还是应该对程序库进行重大更新。现在还没准备好。 fxsaber 2023.03.01 19:48 #803 OrderSelect(i, SELECT_BY_POS) 在此操作中,低指数上总是有未结头寸,而高指数上总是有挂单。 借助这一事实,您可以在一定程度上加快搜索必要的 MT4 订单。 fxsaber 2023.03.01 20:11 #804 我想知道是否有可能在速度上击败测试者,而在速度上是不可能的?我编写了一个 "没有机会 "的智能交易系统,最大限度地优化了速度。#include <MT4Orders.mqh> //https://www.mql5.com/zh/code/16006 input int inAmountMagics = 50; // 要模拟多少个 TC // 为每个 TS 开立仓位和订单。MT4 代码简洁明了。 void OnInit() { MqlTick Tick; if (SymbolInfoTick(_Symbol, Tick)) for (int i = 0; i < inAmountMagics; i++) { OrderSend(_Symbol, OP_BUY, 1, Tick.ask, 0, 0, 0, NULL, i); OrderSend(_Symbol, OP_BUYLIMIT, 1, Tick.ask - 1 e4*_Point, 0, 0, 0, NULL, i); } } // 从正确的仓位/订单中收集信息。最快速的 MT5 代码。 double CountOrders( const int Type, const int Magic ) { double Res = 0; if (Type <= OP_SELL) { for (int i = PositionsTotal() - 1; i >= 0; i--) if (PositionGetTicket(i) && (PositionGetInteger(POSITION_TYPE) == Type) && PositionGetInteger(POSITION_MAGIC) == Magic) Res += PositionGetDouble(POSITION_PRICE_OPEN) + PositionGetDouble(POSITION_PRICE_CURRENT) + PositionGetDouble(POSITION_TP) + PositionGetDouble(POSITION_SL); } else for (int i = OrdersTotal(true) - 1; i >= 0; i--) if (OrderGetTicket(i) && (OrderGetInteger(ORDER_TYPE) == Type) && OrderGetInteger(ORDER_MAGIC) == Magic) Res += OrderGetDouble(ORDER_PRICE_OPEN) + OrderGetDouble(ORDER_PRICE_CURRENT) + OrderGetDouble(ORDER_TP) + OrderGetDouble(ORDER_SL); return(Res); } // 用于控制替代实现的正确性的编号。 double OnTesterValue = 0; double OnTester() { return(OnTesterValue); } void OnTick() { // 模拟所有 TC 的运行。 for (int i = 0; i < inAmountMagics; i++) OnTesterValue += CountOrders(POSITION_TYPE_BUY, i) + CountOrders(POSITION_TYPE_SELL, i) + CountOrders(ORDER_TYPE_BUY_LIMIT, i) + CountOrders(ORDER_TYPE_SELL_LIMIT, i); }从代码上看,你可以说它写得很慢。但代码模拟了许多 "TS "的工作。许多 "TS "的工作方式完全相同--首先,它们要找到自己的仓位/订单。OnTester result 54790620.97344553 EURCAD,M1: 192394 ticks, 1440 bars generated. Environment synchronized in 0:00:00.023. Test passed in 0:01:21.775 (including ticks preprocessing 0:00:00.016). 执行时间为 81 秒。对于一天真正的滴答声来说,这是非常重要的。但是有什么呢? fxsaber 2023.03.01 20:37 #805 fxsaber #:81 秒完成。对于一天的实际时间来说,这已经是个不小的数字了。但什么是 "多 "呢? 交易、自动交易系统和交易策略测试论坛 图书馆:虚拟 fxsaber, 2023.03.01 20:36 OnTester result 54790620.97344553 EURCAD,M1: 192394 ticks, 1440 bars generated. Environment synchronized in 0:00:00.023. Test passed in 0:00:46.653 (including ticks preprocessing 0:00:00.016). 校验和匹配。我设法加速了近两倍。 虽然不容易,但还是成功了。 fxsaber 2023.03.31 11:42 #806 fxsaber #:编写了一个 "没有机会 "的 EA - 最大限度地优化了速度。 加速的简单方法 fxsaber 2023.05.10 20:48 #807 关于交易、自动交易系统和测试交易策略的论坛 库: MT4Orders fxsaber, 2022.07.20 00:39 // 更改列表: // 20.07.2022 // 添加:已添加 OrderLotsOpen() - 关闭/删除前的全部仓位/订单量。仅在 ByPass 模式下正常工作。 使用相同的示例(开仓 1 手,逐步平仓 0.1、0.2、0.3 和 0.4 手),但可视化效果不同。 图片顶部红色框中的OrderLotsOpen()。 Cuong Le Van 2023.05.19 06:23 #808 您好, 订单票据(OrderTicket)好像有一个错误。 MT5 历史记录中的订单不正确 这是我的代码: bool isCopyHistory2(string u_symbol, int master_ticket) { int ticket_copy; bool is_exists = false; // 从交易历史中检索信息 for(int i = 0; i < OrdersHistoryTotal(); i++) { //---- 检查选择结果 if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) == false) { Print("Access to history failed with error (", GetLastError(), ")"); continue; } // 在顺序方面做了一些工作 ticket_copy = (int)extract_master_ticket(OrderComment()); if(ticket_copy == master_ticket) { //print-for-debug Print("c ticket: ", OrderTicket()); // ==> 这不是 MT5 上的正确票据 is_exists = true; break; } } //--- if(!is_exists) Print("New Signal #" + (string)master_ticket); return(is_exists); } fxsaber 2023.05.19 07:27 #809 Cuong Le Van #:订单票据() 看起来有一个错误MT5 历史记录中的订单不正确 显然您想获得它。 // 更改列表: // 13.03.2019 // 添加:已添加OrderTicketID() - PositionID of an MT5 transaction or MT5 position, and the ticket of a pending MT4 order. 原因详见此处。 Cuong Le Van 2023.05.19 10:18 #810 fxsaber #:显然你想得到它。原因详见此处。 非常感谢。 可以 订单票号() 1...747576777879808182838485868788...95 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
如果启用 #define MT4ORDERS_FASTHISTORY_OFF 指令,则无法编译 - 会产生大量错误。
早些时候,我不得不启用该指令,因为如果不启用该指令,文章中使用的某些功能(在此 讨论)就无法使用。如果功能仍有缩减,最好进行修正。
如果启用 #define MT4ORDERS_FASTHISTORY_OFF 指令,则无法编译 - 会产生大量错误。
这是我无法消除的历史遗留问题。
MQ 带来了太多令人头疼的问题,只有经过改装的变体才值得使用。
尽管错误报告少得奇怪,但还是应该对程序库进行重大更新。现在还没准备好。
OrderSelect(i, SELECT_BY_POS)在此操作中,低指数上总是有未结头寸,而高指数上总是有挂单。
借助这一事实,您可以在一定程度上加快搜索必要的 MT4 订单。
我想知道是否有可能在速度上击败测试者,而在速度上是不可能的?
我编写了一个 "没有机会 "的智能交易系统,最大限度地优化了速度。
从代码上看,你可以说它写得很慢。但代码模拟了许多 "TS "的工作。许多 "TS "的工作方式完全相同--首先,它们要找到自己的仓位/订单。
执行时间为 81 秒。对于一天真正的滴答声来说,这是非常重要的。但是有什么呢?81 秒完成。对于一天的实际时间来说,这已经是个不小的数字了。但什么是 "多 "呢?
交易、自动交易系统和交易策略测试论坛
图书馆:虚拟
fxsaber, 2023.03.01 20:36
校验和匹配。我设法加速了近两倍。
虽然不容易,但还是成功了。
编写了一个 "没有机会 "的 EA - 最大限度地优化了速度。
关于交易、自动交易系统和测试交易策略的论坛
库: MT4Orders
fxsaber, 2022.07.20 00:39
使用相同的示例(开仓 1 手,逐步平仓 0.1、0.2、0.3 和 0.4 手),但可视化效果不同。

图片顶部红色框中的OrderLotsOpen()。您好,
订单票据(OrderTicket)好像有一个错误。
MT5 历史记录中的订单不正确
这是我的代码:
订单票据() 看起来有一个错误
MT5 历史记录中的订单不正确
显然您想获得它。
原因详见此处。
显然你想得到它。
原因详见此处。
非常感谢。
可以
订单票号()