Bibliotecas: MT4Orders - página 89

 
hini #:
Há um problema com o MT4ORDERS_LIBRARY. As funções assíncronas OrderCloseAsync parecem não funcionar como esperado. O fechamento de ordens é lento, como ocorre com a função OrderClose síncrona. Se você desativar o MT4ORDERS_LIBRARY (comentar), a velocidade de fechamento de várias ordens aumentará significativamente.

Forneça argumentos para suas palavras.

#define  MT4ORDERS_LIBRARY // modo de biblioteca: #importar "MT4Orders.ex5".
#include <MT4Orders.mqh> // https://www.mql5.com/pt/code/16006

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


Resultado.

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 sell 2.61 AUDUSD 0.63547
2025.04.15 13:32:39.879 Trades  '160568384': market buy 2.61 AUDUSD, close #2326299399 sell 2.61 AUDUSD 0.63546
2025.04.15 13:32:39.879 Trades  '160568384': market buy 2.61 AUDUSD, close #2326299398 sell 2.61 AUDUSD 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 sell 2.61 AUDUSD 0.63547
2025.04.15 13:32:39.917 Trades  '160568384': accepted market buy 2.61 AUDUSD, close #2326299399 sell 2.61 AUDUSD 0.63546
2025.04.15 13:32:39.918 Trades  '160568384': accepted market buy 2.61 AUDUSD, close #2326299398 sell 2.61 AUDUSD 0.63547
2025.04.15 13:32:39.977 Trades  '160568384': deal #2314930857 comprar 2,61 AUDUSD a 0,63553 feito (com base na ordem #2326299404)
2025.04.15 13:32:39.977 Trades  '160568384': order #2326299404 comprar 2.61 / 2.61 AUDUSD a 0.63553 feito em 98.354 ms
2025.04.15 13:32:39.978 Trades  '160568384': deal #2314930858 comprar 2,61 AUDUSD a 0,63553 feito (com base na ordem #2326299403)
2025.04.15 13:32:39.978 Trades  '160568384': order #2326299403 comprar 2.61 / 2.61 AUDUSD a 0.63553 feito em 99.783 ms
2025.04.15 13:32:39.980 Trades  '160568384': deal #2314930859 comprar 2,61 AUDUSD a 0,63553 feito (com base na ordem #2326299405)
2025.04.15 13:32:39.982 Trades  '160568384': order #2326299405 comprar 2.61 / 2.61 AUDUSD em 0.63553 feito em 103.313 ms


A função especificada funciona corretamente.

 
hini #:
Por que eles excluíram o pedido?

"Simplesmente aconteceu."

 
fxsaber #:

Forneça argumentos para suas afirmações.


Resultado.


A função especificada funciona corretamente.

Desculpe, talvez eu tenha cometido um erro.
 
 (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
 
Olá,
No passado, usei com sucesso essa biblioteca bonita e poderosa para converter um projeto MT4 em MT5. Hoje, depois de reabrir o mesmo projeto, recebi alguns erros de compilação. Tentei atualizar o arquivo "MT4Orders.mqh", nas versões em inglês e russo. Também criei um novo projeto vazio com apenas o arquivo "MT4Orders", mas os erros de compilação não foram resolvidos. O que estou fazendo de errado? Obrigado pela atenção
Arquivos anexados:
MT4Orders.png  127 kb
 

nas versões mais recentes do terminal:

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

agora os tipos sign/unsign não se fundem uns com os outros e os MT4Orders não são coletados




 

De fato, os erros


 
// Lista de modificações:
// 03.06.2025
// Correção: as peculiaridades da MQL5_b5050 são levadas em consideração.
 
Pegaso #:
Tentei atualizar o arquivo "MT4Orders.mqh", nas versões em inglês e russo.

Atualize, por favor.