程序库: MT4Orders - 页 87 1...80818283848586878889909192939495 新评论 hini 2025.02.16 07:49 #861 fxsaber #:在 Tester 中,MT5-OrderSend/OrderSendAsync 的 首次成功执行 总是MqlTradeResult.request_id == 0。我认为这种行为是 MQ 的缺陷,因为request_id 应该以 1 开头。这也是 MT4Orders 没有为 Tester 实现 OrderSendAsync 的原因之一。还有一个不太好的原因(来自书中)。感谢您提供的补充信息! mbjen 2025.03.02 08:52 #862 很抱歉,我没有读完整篇文章。要获得无订单未平仓头寸的 数量,OrdersTotal() 是否有某种重载,或者我是否每次都要编写这样的代码: int GetOpenTradesCount() { int count = 0; for (int i = 0; i < OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) // 按位置选择顺序 { if (OrderType() == OP_BUY || OrderType() == OP_SELL) // 只计算市场订单 { count++; } } } return count; } fxsaber 2025.03.02 09:02 #863 mbjen 未 平仓合约的数量,是否有 OrdersTotal() 的重载功能,还是每次都要编写类似的代码? #include <MT4Orders.mqh> int GetOpenTradesCount1() { return(PositionsTotal()); } int GetOpenTradesCount2() { return(OrdersTotal() - OrdersTotal(false)); } 您原来的代码更好,因为它将 MT5 开仓订单算作未结头寸。而GetOpenTradesCount1 不会这样做。 您的源变体更好,因为它不会将MT5 订单算作平仓。GetOpenTradesCount2 不会这样做。 mbjen 2025.03.02 09:09 #864 fxsaber #: OrdersTotal(false) OrdersTotal' - 错误的参数计数 fxsaber 2025.03.02 09:10 #865 mbjen #:订单总数(false)OrdersTotal' - 错误的参数计数 #include <MT4Orders.mqh> mbjen 2025.03.02 09:14 #866 fxsaber #: aa 包含在代码中。谢谢。 mbjen 2025.03.02 09:38 #867 fxsaber #:您的原始变体更好,因为它将 MT5 开仓订单算作未结头寸。而GetOpenTradesCount1 不会这样做。您的源变体更好,因为它不会将MT5 订单算作平仓。GetOpenTradesCount2 不会这样做。 如果还连接了虚拟库,则在 OrdersTotal(false) 时会失败。 fxsaber 2025.03.26 10:50 #868 // 更改列表: // 26.03.2025 // 修复:OrderType 可更好地处理余额交易类型。 // 修复:在旁路模式下处理交易历史时,调用 HistorySelect 的次数减少。 // 添加:MT4ORDERS_LIBRARY 宏启用库模式:#import "MT4Orders.ex5"。 fxsaber 2025.03.26 11:16 #869 关于交易、自动交易系统和测试交易策略的论坛 图书馆:MT4Orders fxsaber, 2025.03.26 10:50 pm. // 更改列表: // 26.03.2025 // 修复:OrderType 可更好地处理余额交易类型。 // 修复:在旁路模式下处理交易历史时,调用 HistorySelect 的次数减少。 // 添加:MT4ORDERS_LIBRARY 宏启用库模式:#import "MT4Orders.ex5"。 有公平的评论 称,该库导致编译速度严重减慢。因此,我们以导入 EX5 库的 形式添加了另一种全库模式。 编译速度。 以下跨平台脚本在 MT4/5 上的编译速度测量(MT5 - 最大 X64_Regular 优化)。 关于交易、自动交易系统和测试交易策略的论坛。 您是如何学习 MQL4/5 的? fxsaber, 2024.12.03 14:30 #define MT4ORDERS_LIBRARY // library-mode: #import "MT4Orders.ex5". #include <MT4Orders.mqh> //https://www.mql5.com/zh/code/16006 bool Buy( const double Lots = 0.1, const string Symb = NULL, const string Comm = NULL ) { return(OrderSend(Symb, OP_BUY, Lots, SymbolInfoDouble(Symb, SYMBOL_ASK), 0, 0, 0, Comm) != -1); } bool Sell( const double Lots = 0.1, const string Symb = NULL, const string Comm = NULL ) { return(OrderSend(Symb, OP_SELL, Lots, SymbolInfoDouble(Symb, SYMBOL_BID), 0, 0, 0, Comm) != -1); } void OnStart() { Buy(); Sell(); } MT4_b1440 MT5_b4885 + MT4Orders MT5_b4885 +MT4Orders_library 90 毫秒 5050 毫秒 255 毫秒 6.0 KB 字节 125.4 KB 字节 13.3 KB 字节 在 MT5 中编译新模式代码的速度与 MT4 相似。编译速度比使用 CTrade 等更快。这是因为所有交易函数都是类比导入的,就像在 MT4 中一样,编译器不会在这些函数上浪费时间。 EX5 的大小也会受到相应影响。 如何启用。 您只需创建一个两行的MQL5\Libraries\MT4Orders.mq5 文件并编译一次。 #property library // #define MT4ORDERS_BYPASS_MAXTIME 1000000 // 等待交易环境同步的最长时间(以 µs 为单位)。 // #define MT4ORDERS_AUTO_VALIDATION // 仅在正确性检查成功的情况下发送交易订单 // #define MT4ORDERS_ORDERS_SORT // MT4 订单历史记录按关闭/删除时间排序。 #include <MT4Orders.mqh> //https://www.mql5.com/zh/code/16006 然后在启用 MT4Orders 之前,在代码中编写一个宏。 #define MT4ORDERS_LIBRARY // library-mode: #import "MT4Orders.ex5". #include <MT4Orders.mqh> //https://www.mql5.com/zh/code/16006 而库将不再影响编译的持续时间。 模式的外部标志。 启动程序时,您可以在 "依赖项 "选项卡中看到 MT4Orders 调用。 不使用 DLL,使用开放源代码。 Учебник по MQL5: Расширенные средства языка / Разработка и подключение библиотек двоичных форматов / Создание ex5-библиотек и export функций www.mql5.com Для описания библиотеки следует добавить в исходный код главного (компилируемого) модуля директиву #property library (обычно, в начало файла)... Maxim Kuznetsov 2025.03.26 11:54 #870 fxsaber #: 有评论 认为,该库导致编译速度严重减慢。因此,我们以导入 EX5 库的 形式添加了另一种完整库模式。 编译速度。 以下跨平台脚本在 MT4/5 上的编译速度测量(MT5 - 最大 X64_Regular 优化)。 MT4_b1440 MT5_b4885 + MT4Orders MT5_b4885 +MT4Orders_library 90 毫秒 5391 毫秒 255 毫秒 新模式下的代码在 MT5 中的编译速度与在 MT4 中类似。编译速度比使用 CTrade 等更快。因为所有交易函数都是通过类比方式导入的,就像在 MT4 中一样,编译器不会在这些函数上浪费时间。如何启用。 您只需创建一个两行的MQL5\Libraries\MT4Orders.mq5 文件并编译一次。然后在启用 MT4Orders 之前,在代码中编写一个宏。这样,库将不再影响编译时间。模式的外部标志。 运行程序时,您可以在 "依赖关系 "选项卡中看到 MT4Orders 调用。未使用 DLL,为开放源代码。 这是一个糟糕的选择......是地上的耙子。 ex5 经常被宣布为 "过时",#import 指令也是如此。 1...80818283848586878889909192939495 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
在 Tester 中,MT5-OrderSend/OrderSendAsync 的 首次成功执行 总是MqlTradeResult.request_id == 0。
我认为这种行为是 MQ 的缺陷,因为request_id 应该以 1 开头。
这也是 MT4Orders 没有为 Tester 实现 OrderSendAsync 的原因之一。还有一个不太好的原因(来自书中)。
很抱歉,我没有读完整篇文章。要获得无订单未平仓头寸的 数量,OrdersTotal() 是否有某种重载,或者我是否每次都要编写这样的代码:
您原来的代码更好,因为它将 MT5 开仓订单算作未结头寸。而GetOpenTradesCount1 不会这样做。
您的源变体更好,因为它不会将MT5 订单算作平仓。GetOpenTradesCount2 不会这样做。
OrdersTotal(false)
OrdersTotal' - 错误的参数计数
订单总数(false)
OrdersTotal' - 错误的参数计数
#include <MT4Orders.mqh>您的原始变体更好,因为它将 MT5 开仓订单算作未结头寸。而GetOpenTradesCount1 不会这样做。
您的源变体更好,因为它不会将MT5 订单算作平仓。GetOpenTradesCount2 不会这样做。
如果还连接了虚拟库,则在 OrdersTotal(false) 时会失败。
关于交易、自动交易系统和测试交易策略的论坛
图书馆:MT4Orders
fxsaber, 2025.03.26 10:50 pm.
有公平的评论 称,该库导致编译速度严重减慢。因此,我们以导入 EX5 库的 形式添加了另一种全库模式。
编译速度。
以下跨平台脚本在 MT4/5 上的编译速度测量(MT5 - 最大 X64_Regular 优化)。
关于交易、自动交易系统和测试交易策略的论坛。
您是如何学习 MQL4/5 的?
fxsaber, 2024.12.03 14:30
在 MT5 中编译新模式代码的速度与 MT4 相似。编译速度比使用 CTrade 等更快。这是因为所有交易函数都是类比导入的,就像在 MT4 中一样,编译器不会在这些函数上浪费时间。
EX5 的大小也会受到相应影响。
如何启用。
您只需创建一个两行的MQL5\Libraries\MT4Orders.mq5 文件并编译一次。
然后在启用 MT4Orders 之前,在代码中编写一个宏。
而库将不再影响编译的持续时间。
模式的外部标志。
启动程序时,您可以在 "依赖项 "选项卡中看到 MT4Orders 调用。
不使用 DLL,使用开放源代码。
有评论 认为,该库导致编译速度严重减慢。因此,我们以导入 EX5 库的 形式添加了另一种完整库模式。
编译速度。
以下跨平台脚本在 MT4/5 上的编译速度测量(MT5 - 最大 X64_Regular 优化)。
新模式下的代码在 MT5 中的编译速度与在 MT4 中类似。编译速度比使用 CTrade 等更快。因为所有交易函数都是通过类比方式导入的,就像在 MT4 中一样,编译器不会在这些函数上浪费时间。
如何启用。
您只需创建一个两行的MQL5\Libraries\MT4Orders.mq5 文件并编译一次。
然后在启用 MT4Orders 之前,在代码中编写一个宏。
这样,库将不再影响编译时间。
模式的外部标志。
运行程序时,您可以在 "依赖关系 "选项卡中看到 MT4Orders 调用。
未使用 DLL,为开放源代码。
这是一个糟糕的选择......是地上的耙子。
ex5 经常被宣布为 "过时",#import 指令也是如此。