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

 
何度かテストをすれば、疑問がなくなるかも?
 
traveller00:
何度かテストをすれば、疑問がなくなるかも?

そうかもしれませんね。もっと時間があれば、自分でテストができるのに :(

 
traveller00:
何度かテストをすれば、疑問がなくなるかも?

テストでは、最初に始めたときだけ差が出ます。

 
Slava:

Symbol()、_Symbolの項目は、NULLと同等です(シンボル名の代わりにNULLが許される場合)。

この場合、現在のシンボルのプロパティはキャッシュされているため、現在のシンボルの存在、マーケットウォッチでの現在のシンボルの存在、現在のシンボルの不要な呼び出しプロパティについての余分なチェックは行われません。

つまり、Symbol()、_Symbol、NULLの代わりに通常の文字列パラメータが指定された場合、プログラム全体のチェックと、さらにプロパティを呼び出すチェックが行われます

質問です。

   string symbol=_Symbol;
   SymbolInfoInteger(symbol,...)
   SymbolInfoInteger(NULL,...)

- この2つの場合のSymbolInfoXXX コールの動作は、チェック以上の違いがあるのでしょうか?

symbol==_Symbol

?

 
traveller00:

ちなみに、本日のMT5最新リリース版のフレッシュログより。

1つのシンボルに3つのEAがそれぞれ独自のチャートでホバリングしていました。そして、リクエストは刻々と 続く。このようなスパイクはもちろんまれですが、実際、最後のティックから来る新しいティックの要求が1回、700ミリ秒で実行されました。

12時間ほどモニターしていますが、すでにラグがすべての限界を超えているのがわかります。

Time[Main.mqh 162 in ProcessTicks: CopyTicksRange(_Symbol,OldTicks,COPY_TICKS_INFO,LastTickParsed.time_msc)] = 8589203 mcs.

3つのEAが、それぞれ独自のチャートで、すべて1つのシンボルで、CopyTicksRangeを介して前のティックから古いティックを要求しています。しかも、ラグは9秒近くあります。そして、その限界はないようです。ほとんどの場合、tickストアは共有リソースで、アクセスは同期されていますが、非常にひどい同期でも、そのような時間は発生しないはずです。

一過性の不具合だと言う人もいるだろう。この12時間の監視の間に、残念ながら100回以上1秒の退場がありました。そして、これらはもはや一過性のものには見えません。同時に複数のティックが入ることが多かったようで、それがこのようなスパイクの原因になっているようです。

3つのEAが共通のリソースを巡って争ったという事実に目をつぶったとしても、もう1つのモニタリングに目を向けてみましょう。

ProcessTicks: CopyTicksRange(_Symbol,OldTicks,COPY_TICKS_INFO,LastTickParsed.time_msc)] = 1401285 mcs.

シンボルのExpert Advisorは1つだけでした。そして、まだ1秒半。これだけでなく、他のシンボルのEAもありましたが、マルチスレッドではないのですか?あるいは、異なるシンボルのためのティックは、やはりお互いを遅くすることができるのでしょうか?

これは、基本的なEAの基本機能です。アルゴリズム取引プラットフォームとして位置づけられる。とはいえ、基本的な機能には強い疑問が残ります。もう一度見てほしいという大きな要望。どこかに改善の余地があるのはほぼ 間違いない。または、以下のように、関数が呼び出されてからの最後のティックを取得できると非常にありがたいです。

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

MT5とスピードの関係

fxsaber, 2021.03.01 07:28

そんな機能をぜひ考えてみてください。

int SymbolInfoTicks( const string Symb, MqlTick &Ticks[] ); // Возвращает свежие тики (не более сотни), пришедшие с предыдущего вызова этой функции.


スキップなしでNEWテロップを取得する問題は、CopyTicks*によってのみ解決されるようになりました。このように広範囲に渡る作業を行うには、非常に面倒な仕組みになっています。大砲で鳥を撃つようなものです。

したがって、ブレーキ、巨大なキャッシュの保持など。

 

SymbolInfoTickとCopyTicksRangeの呼び出し回数を最小化しました。

  • SymbolInfoTickスナップショット - 100µsに1回以上呼び出されない。
  • 新しいティック用の CopyTicksRange は、実際に新しいティックが Market Watch に到着した場合にのみ呼び出されます。


この負荷がかかった端末とマシン(スワップファイル無効)。


その結果、通常の機能のラグメッセージを大幅に減らす(呼び出し回数を減らす)ことができた。


ログイン 50分

2021.03.05 19:31:45.429 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 154 mcs.
2021.03.05 19:32:58.939 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 161 mcs.
2021.03.05 19:33:01.583 ::SymbolInfoTick(_Symbol,Tick)] = 158 mcs.
2021.03.05 19:36:01.682 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 143 mcs.
2021.03.05 19:36:31.229 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 234 mcs.
2021.03.05 19:36:31.229 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 913 mcs.
2021.03.05 19:39:08.716 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 139 mcs.
2021.03.05 19:39:30.994 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 315 mcs.
2021.03.05 19:39:32.858 ::CopyTicks(_Symbol,Tick,COPY_TICKS_ALL,0,1)] = 114 mcs.
2021.03.05 19:40:41.437 ::CopyTicks(_Symbol,Tick,COPY_TICKS_ALL,0,1)] = 101 mcs.
2021.03.05 19:42:26.104 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 116 mcs.
2021.03.05 19:42:28.849 ::SymbolInfoTick(_Symbol,Tick)] = 109 mcs.
2021.03.05 19:43:10.977 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 481 mcs.
2021.03.05 19:43:53.945 ::SymbolInfoTick(_Symbol,Tick)] = 130 mcs.
2021.03.05 19:49:20.352 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 101 mcs.
2021.03.05 19:51:31.242 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 102 mcs.
2021.03.05 19:51:44.986 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 107 mcs.
2021.03.05 19:52:05.590 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 219 mcs.
2021.03.05 19:53:56.013 ::SymbolInfoTick(_Symbol,Tick)] = 236 mcs.
2021.03.05 19:55:41.453 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 105 mcs.
2021.03.05 19:55:47.109 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 148 mcs.
2021.03.05 19:55:47.110 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 265 mcs.
2021.03.05 19:59:26.011 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 186 mcs.
2021.03.05 20:00:01.569 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 117 mcs.
2021.03.05 20:01:19.704 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 109 mcs.
2021.03.05 20:02:07.285 ::SymbolInfoTick(_Symbol,Tick)] = 177 mcs.
2021.03.05 20:02:07.286 ::SymbolInfoTick(_Symbol,Tick)] = 198 mcs.
2021.03.05 20:02:07.286 ::SymbolInfoTick(_Symbol,Tick)] = 202 mcs.
2021.03.05 20:04:40.170 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 364 mcs.
2021.03.05 20:04:45.905 ::SymbolInfoTick(_Symbol,Tick)] = 143 mcs.
2021.03.05 20:04:45.906 ::SymbolInfoTick(_Symbol,Tick)] = 158 mcs.
2021.03.05 20:04:45.907 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 504 mcs.
2021.03.05 20:04:48.259 ::SymbolInfoTick(_Symbol,Tick)] = 104 mcs.
2021.03.05 20:04:54.727 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 104 mcs.
2021.03.05 20:05:39.642 ::CopyTicks(_Symbol,Tick,COPY_TICKS_ALL,0,1)] = 101 mcs.
2021.03.05 20:07:40.189 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 101 mcs.
2021.03.05 20:09:21.844 ::SymbolInfoTick(_Symbol,Tick)] = 115 mcs.
2021.03.05 20:09:32.422 ::SymbolInfoTick(_Symbol,Tick)] = 107 mcs.
2021.03.05 20:10:02.423 ::SymbolInfoTick(_Symbol,Tick)] = 128 mcs.
2021.03.05 20:15:48.838 ::CopyTicks(_Symbol,Tick,COPY_TICKS_ALL,0,1)] = 149 mcs.
2021.03.05 20:16:36.001 ::SymbolInfoTick(_Symbol,Tick)] = 105 mcs.
2021.03.05 20:17:51.499 ::CopyTicks(_Symbol,Tick,COPY_TICKS_ALL,0,1)] = 480 mcs.
2021.03.05 20:17:51.638 ::SymbolInfoTick(_Symbol,Tick)] = 342 mcs.
2021.03.05 20:17:52.802 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 429 mcs.
2021.03.05 20:17:53.340 ::SymbolInfoTick(_Symbol,Tick)] = 142 mcs.
2021.03.05 20:19:21.512 ::SymbolInfoTick(_Symbol,Tick)] = 122 mcs.
2021.03.05 20:20:35.836 ::CopyTicks(_Symbol,Tick,COPY_TICKS_ALL,0,1)] = 116 mcs.


悪くないと思うのですが。貿易取引はありませんでした。彼らはどうなんだろう、見てみたい。


しかし、ハイライトされた部分は、3つのEA(異なるキャラクター)がほぼ同時にラグを受けたことを示しています。つまり、ラグがあるのは端末共通なのです。

 
Slava:

Symbol()、_Symbolの項目は、NULLと同等です(シンボル名の代わりにNULLが許される場合)。

この場合、カレントノードのプロパティはキャッシュされているため、カレントシンボルの存在、マーケットウォッチでのカレントシンボルの存在、カレントシンボルの不要な呼び出しプロパティについての余分なチェックは行われない

つまり、Symbol()、_Symbol、NULLではなく、単純な文字列パラメータを指定した場合、プログラム全体のチェックと、より多くのリクエストプロパティが存在するのです

フォーラムユーザーとは言葉の解釈が異なるので、もう一度説明してください。

 

1つのEA/チャート/シンボルでターミナルで。


2021.03.05 23:02:02.860 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 189 mcs.
2021.03.05 23:02:24.152 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 339 mcs.
2021.03.05 23:02:53.540 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 915 mcs.
2021.03.05 23:05:35.325 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 223 mcs.
2021.03.05 23:05:41.398 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 245 mcs.
2021.03.05 23:05:44.585 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 376 mcs.
2021.03.05 23:06:35.210 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 173 mcs.
2021.03.05 23:07:38.298 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 290 mcs.
2021.03.05 23:08:50.342 ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,From)] = 102 mcs.
2021.03.05 23:14:58.216 ::SymbolInfoTick(_Symbol,Tick)] = 447 mcs.

そんなログを15分で。やはりWindowsが遅いことが問題なようです。この場合、それは

2021.03.05 23:49:20.792 Terminal        MetaTrader 5 x64 build 2815 started for MetaQuotes Software Corp.
2021.03.05 23:49:20.792 Terminal        Windows Server 2019 build 17763, Intel Core i7-7700 K  @ 4.20 GHz, 17 / 31 Gb memory, 3698 / 3725 Gb disk, IE 11, RDP, UAC, GMT+2
 

Market Watchが引き起こすブレーキの分かりやすい例。

Processorの欄の値を見てください(右から2番目)。

 
サーバーの遅延に、端末の遅延が加わる。

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

インジケーター:Ping

fxsaber, 2021.03.12 10:56

この素晴らしい指標を思い出しただけです。

Pingがゼロのマシンからの画像です。その結果、端末の内部遅延は平均で2ms程度であることがわかりました。0〜9msの間で推移する。


例えば、サーバーが2つのティックを受信した場合、最初のティックと、10ms後の2番目のティックを受信しました。つまり、「ターミナル」では、2回目のティックを受信できるのは、1回目のティックの10ms後ではなく、10-19ms後なのです。平均すると、12ms遅れている。

マーケットからの取引(マーケットマートや現在値でのペンディングオーダー)の場合、特に管理が難しくなります。ここでデベロッパーが何かを改善できるかというと、難しいところです。

モスクワの取引所を見てみても、同じような状況です。実際、MT5アルゴを使った取引では、残念ながら良いものを拾う時間がなく、実行キューの最後にいることがほぼ確実です。

Акцептирование SL/TP-ордеров
Акцептирование SL/TP-ордеров
  • 2020.11.24
  • www.mql5.com
В этой ветке пойдет речь об ордерах, которые создаются в результате срабатывания SL/TP-уровней открытых позиций...
理由: