ライブラリ: MT4Orders - ページ 70

 

ライブ口座でのライブラリのテクニカルストレステストデータ。

  • 一つのターミナルMT5 b2958。ヘッジ。
  • 16のチャート、それぞれが取引アドバイザーを実行。
  • 各エキスパートアドバイザーには平均10以上の独立したTS(ロジックとマジック)が含まれています。
  • 取引はMT4Orders+ByPass+Virtual+Snapshot経由で行われます。
  • 価格データはCopyTicks+SymbolInfoTick経由で。
  • 非価格データ - MQL経由のカレンダー。
  • 160以上のTCが並行して動作。それぞれがポジションと注文を持つ。
  • OrdersTotal + PositionsTotal > 300。
  • リジェクト、パーシャル・フィル、クローズ・バイの組み合わせ。
  • TERMINAL_MEMORY_USED = 4 Gb。主な消費は、EX5を実行するたびにターミナルに組み込まれる取引履歴の自動キャッシュ: HistoryDealsTotal+HistoryOrdersTotal > 100K。
  • リダイレクトの35%。
  • 1日の取引高>5,000万ドル。
  • 1日のHistoryDealsTotal > 1200、HistoryOrdersTotal> 1700。
  • すべてのターミナル設定を最小化し、サービスウィンドウを閉じ、チャートとターミナルを最小化。
  • CPUは通常モードで1%。活発な市場では数十%まで急上昇。
  • 取引API - MT4Styleのみ。
  • 実行時にEX5をホットスワップ(更新)。
  • Ping 3ミリ秒。
  • すべての取引注文は同期(OrderSendAsyncではない)。OnTrade関数は使用しない。

このモードでは、ライブラリはすべてのMT5の非同期を処理しました。MT4 のロジックは壊れませんでした。


履歴を扱う際にパフォーマンスの問題が検出されたため、ライブラリを更新しました。

EX5をホットスワップした後の同期データは以下の通り。

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

実行時間の0.1%未満がMT5の同期に費やされた。平均時間は22マイクロ秒。最大時間は225ミリ秒。2.5時間の作業のうち、51秒が同期呼び出しに費やされた(0.5%)。


ライブラリの信頼性評価はかなり高い。推奨できる。

 
fxsaber #:

図書館のテクニカルストレステストデータはバトルアカウントにある。

  • 160以上のTSが並行して動いている。それぞれ独自のポジションとオーダーを伴う。
  • OrdersTotal + PositionsTotal > 300.

このモードでは、ライブラリはMT5のすべての非同期化に対処しました。MT4のロジックは壊れませんでした。


ライブラリの信頼性評価はかなり高い。推奨できる。

このような極端な負荷にも対応できるライブラリだが、難点も ある。なんとか奇跡的に極端な負荷を軽減する方法を考え出す必要がある。

 

私は このログを取得しました:

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

私は株式市場のブローカーのオープニングで取引し、その結果、私は2回ポジションをオープンしました。

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

fxsaber ヒントをください:

ログをありがとうございます。次のビルドで修正します。

 
fxsaber #:

ログをありがとう。修正は次のビルドで利用可能になります。

こんにちは、アップデートを楽しみにしています。

 
fxsaber #:

ログをありがとう。修正は次のビルドで利用可能になります。

6年目の修正、手間をかける価値はあったのだろうか(悪気はない。)

追記

7年前、私はこれを書いたが、一度も修正しなかった。

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

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

6年目の修理だが、(悪気はなく、ただ疑問に思っているだけだが)そこに入る価値はあったのだろうか?

追記

7年前に書いたが、一度も直さなかった。

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

これは完全に別のオペラのものだ。

 
Vitaly Muzichenko #:

まったく別のオペラのものだ。

コードが半トンだから?

そうですね、オペラは違いますが......。:)

 
prostotrader #:

6年目の修理だが、(悪気はなく、ただ疑問に思って いるだけだが)そこに入る価値はあったのだろうか?

MT5の機能を知っていると思い込んでいる人は、実際に知っている人よりもかなり多い。

7年前に書いたが、一度も訂正していない。

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

ミモです。は自重してください。

 
// 変更リスト:
// 08.02.2022
// 修正: 未決済注文の設定/変更中に、MT5 の中間ステップなしで実行される可能性が考慮されます。