程序库: MT4Orders - 页 89

 
hini #:
MT4ORDERS_LIBRARY 存在问题。异步 OrderCloseAsync 函数似乎无法按预期运行。 关闭订单的速度很慢,同步 OrderClose 函数也是如此。如果禁用 MT4ORDERS_LIBRARY(注释),关闭多个订单的速度会显著提高。

请为您的话提供论据。

#define  MT4ORDERS_LIBRARY // library-mode: #import "MT4Orders.ex5".
#include <MT4Orders.mqh> //https://www.mql5.com/zh/code/16006

void OnStart()
{
  for (uint i = OrdersTotal(); (bool)i--;)
    if (OrderSelect(i, SELECT_BY_POS))
      OrderCloseAsync(OrderTicket(), OrderLots(), OrderClosePrice(), 0);
}


结果。

2025.04.15 13:32:39.830 Scripts script Test7 (AUDUSD,M1) loaded successfully
2025.04.15 13:32:39.879 Trades  '160568384': market buy 2.61 AUDUSD, close #2326299400 卖出 2.61 澳元兑美元 0.63547
2025.04.15 13:32:39.879 Trades  '160568384': market buy 2.61 AUDUSD, close #2326299399 卖出 2.61 澳元兑美元 0.63546
2025.04.15 13:32:39.879 Trades  '160568384': market buy 2.61 AUDUSD, close #2326299398 卖出 2.61 澳元兑美元 0.63547
2025.04.15 13:32:39.879 Scripts script Test7 (AUDUSD,M1) removed
2025.04.15 13:32:39.916 Trades  '160568384': accepted market buy 2.61 AUDUSD, close #2326299400 卖出 2.61 澳元兑美元 0.63547
2025.04.15 13:32:39.917 Trades  '160568384': accepted market buy 2.61 AUDUSD, close #2326299399 卖出 2.61 澳元兑美元 0.63546
2025.04.15 13:32:39.918 Trades  '160568384': accepted market buy 2.61 AUDUSD, close #2326299398 卖出 2.61 澳元兑美元 0.63547
2025.04.15 13:32:39.977 Trades  '160568384': deal #2314930857 以 0.63553 的价格买入 2.61 澳元兑美元,成交(基于订单 #2326299404)
2025.04.15 13:32:39.977 Trades  '160568384': order #2326299404 以 0.63553 的价格买入 2.61 / 2.61 澳元兑美元,耗时 98.354 毫秒
2025.04.15 13:32:39.978 Trades  '160568384': deal #2314930858 以 0.63553 的价格买入 2.61 澳元兑美元,成交(基于订单 #2326299403)
2025.04.15 13:32:39.978 Trades  '160568384': order #2326299403 以 0.63553 的价格买入 2.61 / 2.61 澳元兑美元,耗时 99.783 毫秒
2025.04.15 13:32:39.980 Trades  '160568384': deal #2314930859 以 0.63553 的价格买入 2.61 澳元兑美元,成交(基于订单 #2326299405)
2025.04.15 13:32:39.982 Trades  '160568384': order #2326299405 以 0.63553 的价格买入 2.61 / 2.61 澳元兑美元,耗时 103.313 毫秒


指定函数正常工作。

 
hini #:
他们为什么要删除订单?

"就这么发生了"

 
fxsaber #:

请为你所说的话提供论据。


结果


指定功能正常运行。

对不起,我可能搞错了。
 
 (XAUUSDcent,M1)        Before ::HistoryOrderSelect(Result.order):
 (XAUUSDcent,M1)        MT4ORDERS::OrderSendBug = 27180
 (XAUUSDcent,M1)        Result.deal = 0
 (XAUUSDcent,M1)        
 (XAUUSDcent,M1)        Line = 1822
 (XAUUSDcent,M1)        Before MT4ORDERS::HistoryDealSelect(Result):
 (XAUUSDcent,M1)        MT4ORDERS::OrderSendBug = 27180
 (XAUUSDcent,M1)        Result.deal = 0
 (XAUUSDcent,M1)        
 (XAUUSDcent,M1)        Alert: OrderSend(42689505) - BUG!
 (XAUUSDcent,M1)        Alert: Please send the logs to the coauthor - https://www.mql5.com/en/users/fxsaber
 (XAUUSDcent,M1)        Alert: C:\Program Files\Mohicans Markets MT5 Terminal\MQL5\Logs\20250428.log
 (XAUUSDcent,M1)        MT4Orders.mqh
 (XAUUSDcent,M1)        Version = 2025.04.09
 (XAUUSDcent,M1)        Compiler = 4885 X64 Regular Release.
 (XAUUSDcent,M1)        __DATE__ = 2025.04.27 00:00:00
 (XAUUSDcent,M1)        ::AccountInfoString(ACCOUNT_SERVER) = MohicansMarkets-Live
 (XAUUSDcent,M1)        (ENUM_ACCOUNT_TRADE_MODE)::AccountInfoInteger(ACCOUNT_TRADE_MODE) = ACCOUNT_TRADE_MODE_REAL (2)
 (XAUUSDcent,M1)        (bool)::TerminalInfoInteger(TERMINAL_CONNECTED) = true
 (XAUUSDcent,M1)        ::TerminalInfoInteger(TERMINAL_PING_LAST) = 224789
 (XAUUSDcent,M1)        ::TerminalInfoDouble(TERMINAL_RETRANSMISSION) = 0.08792420146452849
 (XAUUSDcent,M1)        ::TerminalInfoInteger(TERMINAL_BUILD) = 4885
 (XAUUSDcent,M1)        (bool)::TerminalInfoInteger(TERMINAL_X64) = true
 (XAUUSDcent,M1)        ::TerminalInfoString(TERMINAL_CPU_NAME) = Intel Xeon Gold 6133  @ 2.50 GHz
 (XAUUSDcent,M1)        ::TerminalInfoInteger(TERMINAL_CPU_CORES) = 2
 (XAUUSDcent,M1)        TerminalInfoString(TERMINAL_CPU_ARCHITECTURE) = AVX2 + FMA3
 (XAUUSDcent,M1)        (bool)::TerminalInfoInteger(TERMINAL_VPS) = false
 (XAUUSDcent,M1)        (ENUM_PROGRAM_TYPE)::MQLInfoInteger(MQL_PROGRAM_TYPE) = PROGRAM_EXPERT (2)
 (XAUUSDcent,M1)        ::TimeCurrent() = 2025.04.28 05:27:28
 (XAUUSDcent,M1)        ::TimeTradeServer() = 2025.04.28 05:27:29
 (XAUUSDcent,M1)        MT4ORDERS::TimeToString(MT4ORDERS::GetTimeCurrent()) = 2025.04.28 05:27:28.531
 (XAUUSDcent,M1)        MT4ORDERS::TimeToString(PrevTimeCurrent) = 2025.04.28 05:27:28.531
 (XAUUSDcent,M1)        PrevTick = Symb = XAUUSDcent time = 2025.04.28 05:27:28.531 bid = 3275.34 ask = 3275.63 last = 0.00 volume = 0 1030 TICK_FLAG_BID TICK_FLAG_ASK FLAG_UNKNOWN (1024)
 (XAUUSDcent,M1)        CurrentTick = ::SymbolInfoTick(Symb, Tick) = true Symb = XAUUSDcent time = 2025.04.28 05:27:28.531 bid = 3275.34 ask = 3275.63 last = 0.00 volume = 0 1030 TICK_FLAG_BID TICK_FLAG_ASK FLAG_UNKNOWN (1024)
 (XAUUSDcent,M1)        ::SymbolInfoString(Request.symbol, SYMBOL_PATH) = Metal_Cent\XAUUSDcent
 (XAUUSDcent,M1)        ::SymbolInfoString(Request.symbol, SYMBOL_DESCRIPTION) = Gold vs US Dollar
 (XAUUSDcent,M1)        ::PositionsTotal() = 6
 (XAUUSDcent,M1)        ::OrdersTotal() = 0
 (XAUUSDcent,M1)        ::HistorySelect(0, INT_MAX) = true
 (XAUUSDcent,M1)        ::HistoryDealsTotal() = 184
 (XAUUSDcent,M1)        ::HistoryOrdersTotal() = 182
 (XAUUSDcent,M1)        ::HistoryDealGetTicket(::HistoryDealsTotal() - 1) = 39031651
 (XAUUSDcent,M1)        DEAL_ORDER = 42689505
 (XAUUSDcent,M1)        DEAL_TIME_MSC = 2025.04.28 05:27:28.763
 (XAUUSDcent,M1)        ::HistoryOrderGetTicket(::HistoryOrdersTotal() - 1) = 42689505
 (XAUUSDcent,M1)        ORDER_TIME_DONE_MSC = 2025.04.28 05:27:28.763
 (XAUUSDcent,M1)        MT4ORDERS::GetFirstOrderTicket() = 42588472
 (XAUUSDcent,M1)        ::TerminalInfoInteger(TERMINAL_MEMORY_AVAILABLE) = 3377
 (XAUUSDcent,M1)        ::TerminalInfoInteger(TERMINAL_MEMORY_PHYSICAL) = 2047
 (XAUUSDcent,M1)        ::TerminalInfoInteger(TERMINAL_MEMORY_TOTAL) = 4094
 (XAUUSDcent,M1)        ::TerminalInfoInteger(TERMINAL_MEMORY_USED) = 717
 (XAUUSDcent,M1)        ::MQLInfoInteger(MQL_HANDLES_USED) = 109
 (XAUUSDcent,M1)        ::MQLInfoInteger(MQL_MEMORY_LIMIT) = 8388608
 (XAUUSDcent,M1)        ::MQLInfoInteger(MQL_MEMORY_USED) = 4
 (XAUUSDcent,M1)        MT4ORDERS::IsHedging = true
 (XAUUSDcent,M1)        Res = true
 (XAUUSDcent,M1)        MT4ORDERS::OrderSendBug = 27180
 (XAUUSDcent,M1)        Request.action = TRADE_ACTION_DEAL (1)
 (XAUUSDcent,M1)        Request.magic = 228
 (XAUUSDcent,M1)        Request.order = 0
 (XAUUSDcent,M1)        Request.symbol = XAUUSDcent
 (XAUUSDcent,M1)        Request.volume = 0.01
 (XAUUSDcent,M1)        Request.price = 3275.63
 (XAUUSDcent,M1)        Request.stoplimit = 0.0
 (XAUUSDcent,M1)        Request.sl = 0.0
 (XAUUSDcent,M1)        Request.tp = 0.0
 (XAUUSDcent,M1)        Request.deviation = 99
 (XAUUSDcent,M1)        Request.type = ORDER_TYPE_BUY (0)
 (XAUUSDcent,M1)        Request.type_filling = ORDER_FILLING_FOK (0)
 (XAUUSDcent,M1)        Request.type_time = ORDER_TIME_GTC (0)
 (XAUUSDcent,M1)        Request.expiration = 1970.01.01 00:00:00
 (XAUUSDcent,M1)        Request.comment = XAUUSDcent 首单  组 6
 (XAUUSDcent,M1)        Request.position = 0
 (XAUUSDcent,M1)        Request.position_by = 0
 (XAUUSDcent,M1)        Result.retcode = 10009
 (XAUUSDcent,M1)        Result.deal = 39031651
 (XAUUSDcent,M1)        Result.order = 42689505
 (XAUUSDcent,M1)        Result.volume = 0.01
 (XAUUSDcent,M1)        Result.price = 3275.63
 (XAUUSDcent,M1)        Result.bid = 0.0
 (XAUUSDcent,M1)        Result.ask = 0.0
 (XAUUSDcent,M1)        Result.comment = Request executed 253.856 + 11.577 (27180) ms.
 (XAUUSDcent,M1)        Result.request_id = 3625362990
 (XAUUSDcent,M1)        Result.retcode_external = 0
 (XAUUSDcent,M1)        MT4ORDERS::ByPass: Amount = 0/22912 = 0.00%, Time(mcs) = 0/202546 = 0.00%, TimeAvg = 8 mcs, MaxInterval = 30019 mcs., Bugs = 1
 (XAUUSDcent,M1)        MT4ORDERS::OrderSend_MaxPause = 1000000
 
您好、
过去,我曾成功使用这个漂亮而强大的库将 MT4项目 转换为 MT5。今天,在重新打开同一个项目后,我发现了一些编译错误。我尝试更新英文版和俄文版的 "MT4Orders.mqh "文件。我还创建了一个新的空项目,其中只有 "MT4Orders "文件,但编译错误仍未解决。我到底做错了什么?谢谢
附加的文件:
MT4Orders.png  127 kb
 

在最新版本的终端中:

parameter convertion type 'const int' to 'const uint &' is not allowed MT4Orders.mqh 1866 44

   long MT4HISTORY::operator[](const uint&) MT4Orders.mqh 768 8

parameter convertion type 'const long' to 'const ulong &' is not allowed MT4Orders.mqh 1867 37

   bool MT4ORDERS::HistorySelectDeal(const ulong&) MT4Orders.mqh 828 15

现在,签署/未签署类型不能相互转换,MT4Orders 无法收集




 

事实上,这些错误


 
// 更改列表:
// 03.06.2025
// 修复:考虑到 MQL5_b5050 的特殊性。
 
Pegaso #:
我尝试更新英文版俄文版 的 "MT4Orders.mqh "文件。

请更新。