Bibliotheken: MT4Orders - Seite 70

 

Technische Stresstestdaten der Bibliothek auf dem Live-Konto.

  • Ein Terminal MT5 b2958. Absicherung.
  • 16 Charts, auf denen jeweils ein Trading Advisor läuft.
  • Jeder Expert Advisor enthält im Durchschnitt mehr als 10 unabhängige TS (Logik und Magic).
  • Der Handel erfolgt über MT4Orders+ByPass+Virtual+Snapshot.
  • Kursdaten über CopyTicks+SymbolInfoTick.
  • Nicht-Kursdaten - Kalender über MQL.
  • Mehr als 160 TCs arbeiten parallel. Jeder von ihnen begleitet seine eigenen Positionen und Aufträge.
  • OrdersTotal + PositionsTotal > 300.
  • Kombinationen von Rejects, Teilfüllungen und CloseBy.
  • TERMINAL_MEMORY_USED = 4 Gb. Der Hauptverbrauch ist der automatische Zwischenspeicher der Handelsgeschichte, der bei jedem EX5-Lauf in das Terminal eingebaut wird: HistoryDealsTotal+HistoryOrdersTotal > 100K.
  • 35% der Weiterleitungen.
  • Täglicher Handelsumsatz > 50 Mio. $.
  • Tägliche HistoryDealsTotal > 1200, HistoryOrdersTotal > 1700.
  • Alle Terminaleinstellungen minimiert, Servicefenster geschlossen, Charts und Terminal minimiert.
  • CPU im normalen Modus ~ 1%. Auf dem aktiven Markt Spitzen bis zu zehn Prozent.
  • Handels-API - nur MT4Style.
  • Hot-swap EX5 (Update) direkt zur Laufzeit.
  • Ping 3 ms.
  • Alle Handelsaufträge sind synchron (nicht OrderSendAsync). OnTrade-Funktionen werden nicht verwendet.

In diesem Modus behandelte die Bibliothek alle MT5 Unsynchronisationen. Die MT4-Logik wurde nicht unterbrochen.


Es wurden Leistungsprobleme bei der Arbeit mit der Historie festgestellt, was der Grund für die Aktualisierung der Bibliothek war.

Nach dem Hot-Swapping von EX5 stellen sich die Synchronisationsdaten wie folgt dar.

MT4ORDERS::ByPass: Amount = 486/2336655 = 0.02%, Time(mcs) = 43175/51577570 = 0.08%, TimeAvg = 22 mcs, MaxInterval = 225711 mcs., Bugs = 0

Weniger als 0,1 % der Laufzeit wurde für die MT5-Synchronisierung aufgewendet. Die durchschnittliche Zeit beträgt 22 Mikrosekunden. Die maximale Zeit beträgt 225 Millisekunden. Von den 2,5 Stunden Arbeit wurden 51 Sekunden für Synchronisationsaufrufe verwendet (0,5 %).


Die Zuverlässigkeit der Bibliothek wird als recht hoch eingestuft. Sie kann empfohlen werden.

 
fxsaber #:

Die technischen Stresstestdaten der Bibliothek befinden sich auf dem Schlachtkonto.

  • Mehr als 160 TS sind parallel im Einsatz. Jeder von ihnen begleitet seine eigenen Positionen und Aufträge.
  • OrdersTotal + PositionsTotal > 300.

In diesem Modus kam die Bibliothek mit allen MT5 Unsynchronisationen zurecht. Die MT4-Logik wurde nicht unterbrochen.


Die Zuverlässigkeit der Bibliothek wird als recht hoch eingestuft. Sie kann empfohlen werden.

Die Bibliothek kann mit solch extremer Last umgehen, aber es gibt Schwierigkeiten. Es ist notwendig, irgendwie auf wundersame Weise einen Weg zu finden, die Last bei extremer Belastung zu entlasten.

 

@fxsaber bitte beraten mich, ich habe dieses Protokoll:

KE      0       15:00:03.865    MACD3 (MAGN,H1) Line = 1558
EG      0       15:00:03.865    MACD3 (MAGN,H1) ::OrderSelect(Result.order) = false
QR      0       15:00:03.865    MACD3 (MAGN,H1) 
OD      0       15:00:03.865    MACD3 (MAGN,H1) Alert: MT4ORDERS - not Sync with History!
RN      0       15:00:03.865    MACD3 (MAGN,H1) Alert: Please send the logs to the coauthor - https://www.mql5.com/en/users/fxsaber
IO      0       15:00:03.865    MACD3 (MAGN,H1) Alert: C:\Program Files\Открытие Брокер\MQL5\Logs\20220202.log
GP      0       15:00:03.896    MACD3 (MAGN,H1) MT4Orders.mqh
PL      0       15:00:03.896    MACD3 (MAGN,H1) Version = 2021.06.01
KJ      0       15:00:03.896    MACD3 (MAGN,H1) Compiler = 3180
NP      0       15:00:03.896    MACD3 (MAGN,H1) 2022.02.01 = 2022.02.01 00:00:00
LD      0       15:00:03.896    MACD3 (MAGN,H1) ::AccountInfoString(ACCOUNT_SERVER) = Open-Broker
QR      0       15:00:03.896    MACD3 (MAGN,H1) (ENUM_ACCOUNT_TRADE_MODE)::AccountInfoInteger(ACCOUNT_TRADE_MODE) = ACCOUNT_TRADE_MODE_REAL (2)
FK      0       15:00:03.896    MACD3 (MAGN,H1) (bool)::TerminalInfoInteger(TERMINAL_CONNECTED) = true
FP      0       15:00:03.896    MACD3 (MAGN,H1) ::TerminalInfoInteger(TERMINAL_PING_LAST) = 2630
HG      0       15:00:03.896    MACD3 (MAGN,H1) ::TerminalInfoDouble(TERMINAL_RETRANSMISSION) = 0.0
FJ      0       15:00:03.896    MACD3 (MAGN,H1) ::TerminalInfoInteger(TERMINAL_BUILD) = 3180
OQ      0       15:00:03.896    MACD3 (MAGN,H1) (bool)::TerminalInfoInteger(TERMINAL_X64) = true
CH      0       15:00:03.896    MACD3 (MAGN,H1) (bool)::TerminalInfoInteger(TERMINAL_VPS) = false
EO      0       15:00:03.896    MACD3 (MAGN,H1) (ENUM_PROGRAM_TYPE)::MQLInfoInteger(MQL_PROGRAM_TYPE) = PROGRAM_EXPERT (2)
FN      0       15:00:03.896    MACD3 (MAGN,H1) ::TimeCurrent() = 2022.02.02 15:00:03
NG      0       15:00:03.896    MACD3 (MAGN,H1) ::TimeTradeServer() = 2022.02.02 15:00:03
OD      0       15:00:03.896    MACD3 (MAGN,H1) MT4ORDERS::TimeToString(MT4ORDERS::GetTimeCurrent()) = 2022.02.02 15:00:03.742
NO      0       15:00:03.896    MACD3 (MAGN,H1) MT4ORDERS::TimeToString(PrevTimeCurrent) = 2022.02.02 15:00:02.827
FS      0       15:00:03.896    MACD3 (MAGN,H1) PrevTick = Symb = MAGN time = 2022.02.02 15:00:02.827 bid = 60.785 ask = 60.825 last = 60.790 volume = 1 4 TICK_FLAG_ASK
PL      0       15:00:03.896    MACD3 (MAGN,H1) CurrentTick = ::SymbolInfoTick(Symb,Tick) = true Symb = MAGN time = 2022.02.02 15:00:03.434 bid = 60.790 ask = 60.825 last = 60.825 volume = 82 0
NF      0       15:00:03.896    MACD3 (MAGN,H1) ::SymbolInfoString(Request.symbol,SYMBOL_PATH) = MOEX\Securities\TQBR\MAGN
NJ      0       15:00:03.896    MACD3 (MAGN,H1) ::SymbolInfoString(Request.symbol,SYMBOL_DESCRIPTION) = "Magnitogorsk.met.komb" ОАО ао
KG      0       15:00:03.896    MACD3 (MAGN,H1) ::PositionsTotal() = 4
JS      0       15:00:03.896    MACD3 (MAGN,H1) ::OrdersTotal() = 0
EE      0       15:00:03.896    MACD3 (MAGN,H1) ::HistorySelect(0,INT_MAX) = true
CQ      0       15:00:03.896    MACD3 (MAGN,H1) ::HistoryDealsTotal() = 852
KG      0       15:00:03.896    MACD3 (MAGN,H1) ::HistoryOrdersTotal() = 722
CQ      0       15:00:03.896    MACD3 (MAGN,H1) ::HistoryDealGetTicket(::HistoryDealsTotal()-1) = 108399547
MH      0       15:00:03.896    MACD3 (MAGN,H1) DEAL_ORDER = 195416657
NM      0       15:00:03.896    MACD3 (MAGN,H1) DEAL_TIME_MSC = 2022.02.02 15:00:02.848
QE      0       15:00:03.896    MACD3 (MAGN,H1) ::HistoryOrderGetTicket(::HistoryOrdersTotal()-1) = 195416657
QI      0       15:00:03.896    MACD3 (MAGN,H1) ORDER_TIME_DONE_MSC = 2022.02.02 15:00:02.848
OL      0       15:00:03.896    MACD3 (MAGN,H1) ::TerminalInfoInteger(TERMINAL_MEMORY_AVAILABLE) = 7489
GD      0       15:00:03.896    MACD3 (MAGN,H1) ::TerminalInfoInteger(TERMINAL_MEMORY_PHYSICAL) = 4095
RD      0       15:00:03.896    MACD3 (MAGN,H1) ::TerminalInfoInteger(TERMINAL_MEMORY_TOTAL) = 8190
QL      0       15:00:03.896    MACD3 (MAGN,H1) ::TerminalInfoInteger(TERMINAL_MEMORY_USED) = 701
HI      0       15:00:03.896    MACD3 (MAGN,H1) ::MQLInfoInteger(MQL_MEMORY_LIMIT) = 8388608
CJ      0       15:00:03.896    MACD3 (MAGN,H1) ::MQLInfoInteger(MQL_MEMORY_USED) = 2
MN      0       15:00:03.896    MACD3 (MAGN,H1) MT4ORDERS::IsHedging = false
MF      0       15:00:03.896    MACD3 (MAGN,H1) Res = false
PO      0       15:00:03.896    MACD3 (MAGN,H1) MT4ORDERS::OrderSendBug = 12527100
NH      0       15:00:03.896    MACD3 (MAGN,H1) Request.action = TRADE_ACTION_PENDING (5)
LO      0       15:00:03.896    MACD3 (MAGN,H1) Request.magic = 101
CF      0       15:00:03.896    MACD3 (MAGN,H1) Request.order = 0
FQ      0       15:00:03.896    MACD3 (MAGN,H1) Request.symbol = MAGN
QO      0       15:00:03.896    MACD3 (MAGN,H1) Request.volume = 82.0
KI      0       15:00:03.896    MACD3 (MAGN,H1) Request.price = 60.924999999999997
FR      0       15:00:03.896    MACD3 (MAGN,H1) Request.stoplimit = 0.0
EF      0       15:00:03.896    MACD3 (MAGN,H1) Request.sl = 57.439999999999998
QL      0       15:00:03.896    MACD3 (MAGN,H1) Request.tp = 0.0
QI      0       15:00:03.896    MACD3 (MAGN,H1) Request.deviation = 10
DM      0       15:00:03.896    MACD3 (MAGN,H1) Request.type = ORDER_TYPE_BUY_LIMIT (2)
ID      0       15:00:03.896    MACD3 (MAGN,H1) Request.type_filling = ORDER_FILLING_RETURN (2)
LD      0       15:00:03.896    MACD3 (MAGN,H1) Request.type_time = ORDER_TIME_DAY (1)
OQ      0       15:00:03.896    MACD3 (MAGN,H1) Request.expiration = 1970.01.01 00:00:00
FE      0       15:00:03.896    MACD3 (MAGN,H1) Request.comment = 
PQ      0       15:00:03.896    MACD3 (MAGN,H1) Request.position = 0
LF      0       15:00:03.896    MACD3 (MAGN,H1) Request.position_by = 0
OS      0       15:00:03.896    MACD3 (MAGN,H1) Result.retcode = 10009
ME      0       15:00:03.896    MACD3 (MAGN,H1) Result.deal = 0
KE      0       15:00:03.896    MACD3 (MAGN,H1) Result.order = 195416657
KQ      0       15:00:03.896    MACD3 (MAGN,H1) Result.volume = 82.0
CD      0       15:00:03.896    MACD3 (MAGN,H1) Result.price = 60.924999999999997
RO      0       15:00:03.896    MACD3 (MAGN,H1) Result.bid = 0.0
DG      0       15:00:03.896    MACD3 (MAGN,H1) Result.ask = 0.0
HN      0       15:00:03.896    MACD3 (MAGN,H1) Result.comment = Request executed 24.445 + 1000.080 (12527100) ms.
IH      0       15:00:03.896    MACD3 (MAGN,H1) Result.request_id = 7
CQ      0       15:00:03.896    MACD3 (MAGN,H1) Result.retcode_external = 0
RJ      0       15:00:03.896    MACD3 (MAGN,H1) MT4ORDERS::OrderSend_MaxPause = 1000000
ER      0       15:00:03.896    MACD3 (MAGN,H1) 
MG      0       15:00:03.926    MACD3 (MAGN,H1) Ордер на покупку успешно помещен с тикетом #195416665!!
 CR      0       15:00:03.926    MACD3 (MAGN,H1) Position by MAGN to be opened

Ich handele bei Broker-Eröffnung an der Börse, als Ergebnis habe ich eine Position zweimal eröffnet, nicht kritisch, aber vielleicht gibt es Möglichkeiten, dies zu vermeiden?

 
Александр Кувакин #:

@fxsaber Hinweis bitte, habe diese Art von Log:

Danke für das Log, das Problem ist klar. Der Fix wird in der nächsten Build verfügbar sein.

 
fxsaber #:

Danke für das Protokoll, das Problem ist klar. Der Fix wird in der nächsten Build verfügbar sein.

Hallo, ich freue mich auf das Update, Sir. Danke.....

 
fxsaber #:

Danke für das Protokoll, das Problem ist klar. Der Fix wird in der nächsten Build verfügbar sein.

War die Korrektur im sechsten Jahr die Mühe wert(nichts für ungut, ich frage mich nur)?

Hinzugefügt

Vor 7 Jahren habe ich dies geschrieben und es nie behoben

https://www.mql5.com/ru/blogs/post/557544

Отслеживание ордера, после команды OrderSendAsync
Отслеживание ордера, после команды OrderSendAsync
  • 2016.10.29
  • www.mql5.com
Отслеживание ордера, после команды OrderSendAsync Михаил | 23 апреля, 2015 В статье рассказывается принцип отслеживания ордера после команды OrderSendAsync, если нет события TradeTransaction
 
prostotrader #:

War es das sechste Jahr, in dem es repariert wurde, wert, sich damit zu befassen (nichts für ungut, ich frage mich nur)?

Hinzugefügt

Vor 7 Jahren geschrieben und nicht ein einziges Mal korrigiert

https://www.mql5.com/ru/blogs/post/557544

Das ist eine ganz andere Oper.

 
Vitaly Muzichenko #:

Sie stammt aus einer ganz anderen Oper.

Liegt es daran, dass der Code eine halbe Tonne schwer ist?

Dann ja, die Oper ist anders.... :)

 
prostotrader #:

War es das sechste Jahr, in dem es repariert wurde, wert, sich damit zu befassen(nichts für ungut, ich frage mich nur)?

Es gibt deutlich mehr Leute, die glauben, die Funktionen des MT5 zu kennen, als solche, die sie tatsächlich kennen.

Ich habe dies vor 7 Jahren geschrieben und es nie korrigiert

https://www.mql5.com/ru/blogs/post/557544

Mimo. Bitte zügeln Sie Ihre Lust auf ***.

 
// Liste ändern:
// 08.02.2022
// Fix: Die Möglichkeit der Ausführung von Pending Orders ohne MT5-Zwischenschritte bei deren Einstellung/Änderung wird berücksichtigt.