MT5とスピードの関係 - ページ 28

 
fxsaber:
取引履歴に注文/取引を追加すると、HistorySelectのキャッシュが部分的ではなく、完全に再構築されます。そのため、保留中の注文のトリガーに遅れが生じています。

b2595 - 修正済み、Great!

間違ったストーリーをチェックした、まだ直していない。

 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

MT5とスピードの関係

fxsaber, 2020.09.08 19:46

2020.09.08 20:23:32.103 Alert: Time[Test6.mq5 411: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.08 20:23:32.239 Alert: Time[Test6.mq5 411: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.08 20:31:59.863 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 9 ms.
2020.09.08 20:32:00.845 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.08 20:32:01.856 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 4 ms.
2020.09.08 20:32:02.846 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 7 ms.

b2596が高速化したようです。

2020.09.11 05:06:17.854 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.11 05:06:18.853 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.11 05:06:19.875 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.11 05:06:20.871 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 1 ms.
 
b2605 -アラートは もうありません。素晴らしい出来栄えです!ありがとうございました。
MT5 и скорость в боевом исполнении
MT5 и скорость в боевом исполнении
  • 2020.09.07
  • www.mql5.com
MT5 - шустрая платформа. Но есть узкие горлышки, которые сводят на нет все старания быстрой торговли...
 

トレードする際に、このようなことがないようにするにはどうしたらよいか教えてください。

2020.09.15 22:17:04.633 Alert: Time[NewTicks.mqh 33: ::SymbolInfoTick(_Symbol,Tick)] = 13 ms.
2020.09.15 22:17:04.638 Alert: Time[NewTicks.mqh 33: ::SymbolInfoTick(_Symbol,Tick)] = 18 ms.
2020.09.15 22:17:04.640 Alert: Time[NewTicks.mqh 33: ::SymbolInfoTick(_Symbol,Tick)] = 20 ms.
 
このスクリプトを ライブ端末で実行した結果。
2020.09.15 22:26:41.788 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 484: OrderSelect(0)] = 1 ms.
2020.09.15 22:26:48.322 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 489: PositionsTotal()] = 2 ms.
2020.09.15 22:27:07.661 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 490: PositionSelect(Symb)] = 1 ms.
2020.09.15 22:27:47.228 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 483: OrdersTotal()] = 2 ms.
2020.09.15 22:27:53.039 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 483: OrdersTotal()] = 9 ms.
2020.09.15 22:28:13.858 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 490: PositionSelect(Symb)] = 1 ms.
2020.09.15 22:28:21.058 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 484: OrderSelect(0)] = 8 ms.
2020.09.15 22:28:47.813 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 489: PositionsTotal()] = 4 ms.
2020.09.15 22:28:51.482 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 505: AccountInfoInteger(ACCOUNT_TRADE_EXPERT)] = 4 ms.
2020.09.15 22:29:09.053 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 490: PositionSelect(Symb)] = 1 ms.
2020.09.15 22:29:09.353 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 506: AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)] = 1 ms.
2020.09.15 22:29:28.814 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 457: HistorySelect(Tick.time,INT_MAX)] = 2 ms.

最後の行は正常です。


EAが並行して動作している場合、ラグに影響を与えることがありますか?指標はありません。


SZY 空の端末でプロファイリング。

SymbolInfoTickは高価な関数です。

 
fxsaber:

EAが並行して動作している場合、ラグに影響を与えることがありますか?指標はありません。

並行して空の端末を立ち上げて試してみました。同じものを見たことがない。

コンフィギュレーションです。
2020.09.15 20:35:42.481 Terminal        Windows 10 build 19042, Intel Core i7-2700 K  @ 3.50 GHz, 6 / 15 Gb memory, 20 / 29 Gb disk, IE 11, Admin, GMT+3

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

MT5とスピードの関係

fxsaber, 2020.09.01 21:59

Win10をインストールし、LatencyMonによると全て問題ないとのことです。

 
一般に、ほとんどすべての正規関数がブレーキをかける可能性があるため、バトルアドバイザーはOnTickごとに数十ミリ秒の実行を行う。この量は、Order*+SymbolInfoTick+Position*などの呼び出しの合計で食われている。数学的な計算もありません。無料のスナップショットが必要です。これがないと、MT5上のHDIは動作しません。
 
fxsaber:
とにかく、ほとんどすべての正規関数が速度低下の原因になるため、戦闘用Expert AdvisorではOnTickごとに数十ミリ秒の処理を行う。Order*+SymbolInfoTick+Position* などの呼び出しの合計で、その分食ってしまうのです。数学的な計算もありません。無料のスナップショットが必要です。これがないと、MT5上のHDIは動作しません。

何かアプローチがおかしい...。どうやら、毎ティック ごとに状態を一からスキャンするのではなく、OnTradeの関数が必要なようです。

 
Andrey Khatimlianskii:

何かアプローチがおかしい...。どうやらOnTradeの機能が必要なようで、1ティック ごとに状態を一からスキャンするのではなく、このような機能が必要なようです。

OOPパラダイムは、各サブTCが取引環境をスキャンすることを想定しています。しかし、本当に望むのであれば、OOPオブジェクトの独立性を少し壊すことができます。

例えば、OnTickの一番最初に本格的なスナップショットを作成します。そして、同期関数であるOrderSendとCopyTicksを呼び出した後にのみ、これを繰り返す必要があります。

OnTrade*については、OnTrade機能のみでスナップショットを行う場合、接続の切断によりスキームが台無しになります。そうでなければ、当然、大きな節約になります。

 
fxsaber:

OOPパラダイムは、各サブOSが取引環境をスキャンすることを想定している。しかし、本当に望むのであれば、OOPオブジェクトの独立性を少し壊すことができる。

例えば、OnTickの一番最初に本格的なスナップショットを作成します。そして、同期関数であるOrderSendとCopyTicksの呼び出しの後にのみ、それが繰り返されることになる。

もちろん、スナップショット・オブジェクトは1つでなければなりません。


fxsaber:

OnTrade*については、スナップショットがOnTradeの機能だけで行われる場合、リンクの切断がスキームを台無しにします。そうでなければ、当然、大きな節約になります。

接続断を検出し、次のティックでスナップショットを強制的に更新し、エコノミーモードに戻る?