Bibliotheken: MT4Orders - Seite 89

 
hini #:
Es gibt ein Problem mit MT4ORDERS_LIBRARY. Asynchrone OrderCloseAsync-Funktionen scheinen nicht wie erwartet zu funktionieren. Das Schließen von Aufträgen ist langsam, wie bei der synchronen OrderClose-Funktion. Wenn Sie MT4ORDERS_LIBRARY deaktivieren (auskommentieren), erhöht sich die Geschwindigkeit beim Schließen mehrerer Aufträge erheblich.

Bitte liefern Sie Argumente für Ihre Worte.

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

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


Ergebnis.

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 verkaufen 2.61 AUDUSD 0.63547
2025.04.15 13:32:39.879 Trades  '160568384': market buy 2.61 AUDUSD, close #2326299399 verkaufen 2.61 AUDUSD 0.63546
2025.04.15 13:32:39.879 Trades  '160568384': market buy 2.61 AUDUSD, close #2326299398 verkaufen 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 verkaufen 2.61 AUDUSD 0.63547
2025.04.15 13:32:39.917 Trades  '160568384': accepted market buy 2.61 AUDUSD, close #2326299399 verkaufen 2.61 AUDUSD 0.63546
2025.04.15 13:32:39.918 Trades  '160568384': accepted market buy 2.61 AUDUSD, close #2326299398 verkaufen 2.61 AUDUSD 0.63547
2025.04.15 13:32:39.977 Trades  '160568384': deal #2314930857 buy 2.61 AUDUSD at 0.63553 done (basierend auf Auftrag #2326299404)
2025.04.15 13:32:39.977 Trades  '160568384': order #2326299404 buy 2.61 / 2.61 AUDUSD at 0.63553 erledigt in 98.354 ms
2025.04.15 13:32:39.978 Trades  '160568384': deal #2314930858 buy 2.61 AUDUSD at 0.63553 done (basierend auf Auftrag #2326299403)
2025.04.15 13:32:39.978 Trades  '160568384': order #2326299403 buy 2.61 / 2.61 AUDUSD at 0.63553 erledigt in 99.783 ms
2025.04.15 13:32:39.980 Trades  '160568384': deal #2314930859 buy 2.61 AUDUSD at 0.63553 done (basierend auf Auftrag #2326299405)
2025.04.15 13:32:39.982 Trades  '160568384': order #2326299405 buy 2.61 / 2.61 AUDUSD at 0.63553 erledigt in 103.313 ms


Die angegebene Funktion arbeitet korrekt.

 
hini #:
Warum haben sie die Bestellung gelöscht?

"Es ist einfach passiert."

 
fxsaber #:

Bitte liefern Sie Argumente für das, was Sie sagen.


Ergebnis.


Die angegebene Funktion arbeitet korrekt.

Tut mir leid, dann habe ich wohl einen Fehler gemacht.
 
 (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
 
Hallo,
in der Vergangenheit habe ich erfolgreich diese schöne und leistungsstarke Bibliothek verwendet, um ein MT4-Projekt in MT5 zu konvertieren. Heute nach dem erneuten Öffnen des gleichen Projekts bekam ich einige Kompilierungsfehler. Ich habe versucht, die Datei "MT4Orders.mqh" zu aktualisieren, sowohl in der englischen als auch in der russischen Version. Ich habe auch ein neues leeres Projekt nur mit der Datei "MT4Orders" erstellt, aber die Kompilierungsfehler sind nicht behoben. Was mache ich falsch? Vielen Dank
Dateien:
MT4Orders.png  127 kb
 

in den neuesten Builds des Terminals:

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

jetzt werden sign/unsign Typen nicht ineinander gecastet und MT4Orders werden nicht gesammelt




 

In der Tat, die Fehler


 
// Liste ändern:
// 03.06.2025
// Fix: Die Besonderheiten von MQL5_b5050 werden berücksichtigt.
 
Pegaso #:
Ich habe versucht, die Datei "MT4Orders.mqh" zu aktualisieren, sowohl in der englischen als auch in der russischen Version.

Bitte aktualisieren.