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

 
チェックをたくさん入れて・・・。これには驚きました。
2020.06.03 14:09:21.604 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 182 ms.

この時点では、取引は行われませんでした。


ZS 珍しいことではありません。

2020.06.03 14:31:39.484 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 65 ms.
 
fxsaber:

PS 戦闘モードでは、トランザクションが行われると、ほぼ必ずラグが発生します(5ミリ秒以上の場合のみ出力しています)。

それ以外は2470よりずっと良いようです。

積み上げたスタッツ。HistorySelectは、トランザクションを行うときのみ遅延します。


ZSの嘘。取引もなければ、ラグもある。

2020.06.03 14:35:26.999 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 24 ms.
 
fxsaber:
たくさんのチェックを入れて...。これには驚きました。

頻発することが判明取引関数が呼び出されていない。

2020.06.03 15:23:21.428 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 5 ms.
2020.06.03 15:26:09.433 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 8 ms.
2020.06.03 15:26:24.435 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 10 ms.
2020.06.03 15:26:31.417 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 1 ms.
2020.06.03 15:26:33.429 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 8 ms.
2020.06.03 15:26:34.428 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 3 ms.
2020.06.03 15:26:55.655 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 18 ms.
2020.06.03 15:27:05.578 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 14 ms.
2020.06.03 15:29:27.613 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 3 ms.
2020.06.03 15:31:29.426 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 4 ms.
2020.06.03 15:31:46.430 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 11 ms.
2020.06.03 15:33:12.441 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 14 ms.
2020.06.03 15:33:21.437 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 12 ms.
2020.06.03 15:33:35.430 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 5 ms.
2020.06.03 15:34:55.424 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 2 ms.
2020.06.03 15:35:09.426 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 2 ms.
2020.06.03 15:35:34.428 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 4 ms.
2020.06.03 15:41:48.423 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 3 ms.
2020.06.03 15:41:54.439 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 13 ms.
2020.06.03 15:42:28.440 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 15 ms.
2020.06.03 15:42:48.845 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 14 ms.
2020.06.03 15:43:08.429 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 5 ms.
2020.06.03 15:43:25.428 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 7 ms.
2020.06.03 15:43:27.428 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 4 ms.
2020.06.03 15:43:48.436 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 9 ms.
2020.06.03 15:47:05.424 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 3 ms.
2020.06.03 15:47:46.426 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 8 ms.
2020.06.03 15:47:58.845 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 4 ms.
2020.06.03 15:48:47.140 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 12 ms.
2020.06.03 15:49:03.430 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 5 ms.
2020.06.03 15:49:52.684 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 3 ms.
2020.06.03 15:53:39.429 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 4 ms.
2020.06.03 15:54:17.424 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 5 ms.
2020.06.03 15:54:47.425 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 1 ms.
2020.06.03 15:57:28.425 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 5 ms.
2020.06.03 15:57:47.425 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 2 ms.
2020.06.03 15:58:27.425 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 1 ms.
2020.06.03 15:59:08.445 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 23 ms.
2020.06.03 16:00:20.447 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 28 ms.
2020.06.03 16:01:50.430 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 7 ms.
2020.06.03 16:02:08.431 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 6 ms.

SymbolInfoTickは、たまに悪いラグがありますね。HFTは、このような予期せぬ遅れを経験することが多いのかもしれません。

その理由は、開発者に聞いてみてください。一方、戦闘用EAでは、そのプロファイラーが 必須であることは明らかです。

 
fxsaber:

頻発することが判明取引関数が呼び出されていない。

SymbolInfoTickは、たまに悪いラグがありますね。HFTは、このような予期せぬ遅れを経験することが多いのかもしれません。

その理由は、開発者に聞いてみてください。一方、戦闘用EAでは、彼らのプロファイラーが 必須であることは明らかです。

どうやってミリ秒を正確に計測しているのですか?CPUにハードウェアクロック?

 
Alexey Volchanskiy:

どうやってミリ秒を正確に計測するのですか?プロセッサに搭載されたハードウェアクロック?

GetMicrosecondCount()

 
fxsaber:

頻発することが判明取引関数が呼び出されていない。

SymbolInfoTickは、たまに悪いラグがありますね。HFTは、このような予期せぬ遅れを経験することが多いのかもしれません。

その理由は、開発者に聞いてみてください。一方、戦闘においてはEA独自のプロファイラが 必須であることは明らかです。

システムタイマーの初期設定は20msですが、測定前に低い設定に戻しましたか?

のような機能で試すことができます。

#import "kernel32.dll"
   int timeBeginPeriod(uint TimerRes);
   int timeEndPeriod(uint TimerRes);
#import
 
Igor Zakharov:

システムタイマーのデフォルトのステップは20msですが、測定前にもっと小さなステップにリセットしましたか?

開発者の皆様へ。

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

MT5と戦闘時のスピード

アントン さん 2020.05.29 12:32

テストコードは以下のようになります。

void OnStart()
  {
   MqlTick Tick;
   SymbolInfoTick(_Symbol, Tick);
   ulong start=GetMicrosecondCount();
   for(int i=0; i<100000; i++)
     {
      HistorySelect(Tick.time, INT_MAX);
     }
   ulong end=GetMicrosecondCount()-start;
   Print("100000 HistorySelect = ",DoubleToString(end/1000.0,2)," ms");
  }


これ以上、理論武装しないでください。これは実用化ブランチです。

 
fxsaber:

開発者の皆様へ。

ということで、これは数年前の開発者の回答です。

 
Igor Zakharov:

ということで、これは数年前の開発者の回答です。

日付が2020.05.29 12:32になっていますが大丈夫でしょうか?

 
Alexey Viktorov:

日付が2020.05.29 12:32になっていますが大丈夫でしょうか?

GetTickCount()は私が書いたようなヘマをすることがありますが、GetMicrosecondCount()は ヘマをしません。

https://www.mql5.com/ru/forum/189360#comment_4838735

これからは黙っていることにします :)