Библиотеки: MT4Orders - страница 89

 
hini #:
Возникла проблема с MT4ORDERS_LIBRARY. Асинхронные функции OrderCloseAsync, похоже, не работают, как ожидается. Закрытие ордеров происходит медленно, как при использовании синхронной функции OrderClose. Если отключить MT4ORDERS_LIBRARY (закомментировать), скорость закрытия множества ордеров значительно возрастает.

Пожалуйста, приводите аргументы своим словам.

#define MT4ORDERS_LIBRARY // library-режим работы библиотеки: #import "MT4Orders.ex5".
#include <MT4Orders.mqh> // https://www.mql5.com/ru/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 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 buy 2.61 AUDUSD at 0.63553 done (based on order #2326299404)
2025.04.15 13:32:39.977 Trades  '160568384': order #2326299404 buy 2.61 / 2.61 AUDUSD at 0.63553 done in 98.354 ms
2025.04.15 13:32:39.978 Trades  '160568384': deal #2314930858 buy 2.61 AUDUSD at 0.63553 done (based on order #2326299403)
2025.04.15 13:32:39.978 Trades  '160568384': order #2326299403 buy 2.61 / 2.61 AUDUSD at 0.63553 done in 99.783 ms
2025.04.15 13:32:39.980 Trades  '160568384': deal #2314930859 buy 2.61 AUDUSD at 0.63553 done (based on order #2326299405)
2025.04.15 13:32:39.982 Trades  '160568384': order #2326299405 buy 2.61 / 2.61 AUDUSD at 0.63553 done in 103.313 ms


Указанная функция работает правильно.

 
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.50GHz
 (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
//   Fix: Учитываются особенности MQL5_b5050.
 
Pegaso #:
Я пытался обновить файл "MT4Orders.mqh", как в английской, так и в русской версии.

Обновите, пожалуйста.