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

 
Anton:

Anton さん、多くの標準的な関数では、文字の代わりにNULLを指定することができます。実行速度に影響はないのか?

SymbolInfoTick(NULL, Tick);

SymbolInfoTick(_Symbol, Tick);

それとも、Terminal/Testerに違いはないのでしょうか?

 
fxsaber:

Anton さん、多くの標準的な関数では、文字の代わりにNULLを指定することができます。実行速度に影響はないのか?

それとも、Terminal/Testerの違いはないのでしょうか?

はっきりとは言えませんが、直感的に私はNULLをどこにも書きません。

理論的には、違いはないはずです。コンパイルするとNULLが普通の値に変わってしまうし、わけのわからないものを目で見るのは嫌だと思うんです。

 
Alexey Viktorov:

断言はできませんが、直感的にNULLはどこにも書かない。

理論的には、何の影響もないはずです。NULLはコンパイルすると正常な値に変わると思うのですが、私の目には意味不明なものが見えてしまうのが嫌なのです。

も同じです。しかし、心配なのはそのスピードだ。

 

週末に秒タイマーでSymbolInfoTicksが 遅くなるのは理解できない!?

2021.02.28 21:33:02.993 ::SymbolInfoTick(_Symbol,Tick) = 171 mcs.

異なるシンボルの20のチャートで、それぞれEAが動作しており、2番目のタイマーでそのシンボルのティックを取るだけです。

休みの日にゆっくりすることがあるのか!


スクリーンショットのSZY 3374 MB - それは1時間前に週のためのティックを要求しています。こうして資源を節約する

 
fxsaber:

週末に秒タイマーでSymbolInfoTicksが 遅くなるのは理解できない!?

異なるシンボルの20のチャートで、それぞれEAが動作しており、2番目のタイマーでそのシンボルのティックを取るだけです。

週末の一日、何をゆっくりしているのでしょうか!

持っていますね。

  1. じょうほうぶそく
  2. 4コアで数十のExpert Advisorスレッドを並列実行(ハイパースレッディングで8コアは無視可能)
  3. また、長い待ち時間の中から1つの異常値が見つかるのですか?
  4. また、スレッドマネージャーの意向でランダムなシステムレイテンシーを1回だけ発生させるのか?


 
Renat Fatkhullin:

持っていますね。

  1. じょうほうぶそく
  2. 4コアで数十のエキスパートスレッドが並列動作(ハイパースレッディングによる8コアは無視可能)
  3. また、長時間のスタンバイから1つの異常値が見つかるのか?
  4. またもやスレッドマネージャーの意のままにランダムなシステムレイテンシーを一発で決めてしまうのか?

SymbolInfoTickは レイテンシーを考慮したセレクト機能なのですが、なぜでしょうか?

 
fxsaber:

SymbolInfoTickが なぜこんなにブレーキに選ばれる関数なのか、不思議に思っています。

そうではありません。

どんなプログラムでも、必ずランダムな遅れが発生します。すべてを記録し始めると、Windowsの現実にぞっとすることでしょう。これについては、すでに何度か詳しく説明しています。

私たちも一時期、システムのWinAPI関数で0msではなく60~80msのランダムバーストが発生し、驚かされたことがあります。


現在、Windowsソリューションのほとんどを特別に縮退したWindows Server 2019 Coreバージョンに、.NET CoreのWebプロジェクトをLinuxに一斉に移行しています。これにより、システムリソースの大幅な節約と、システムレイテンシーの大幅な短縮を実現しました。

MataTrader 5の端末をスキミングする最初のステップは、リソースの消費量をその場で把握するタスクマネージャーの導入に着手することでした。自分たちのために、より多くの情報を集めているのです。

すでに明らかになっています。

  • 閑古鳥が鳴く
  • オーバースケーリング
  • キャッシュを増やしすぎる
次のリリースまでに、リソースの問題を段階的に修正していきます。
 
Alexey Viktorov:

理論的には、何の影響もないはずです。NULLはコンパイルすると普通の値に変わると思うのですが、わけのわからないものを目で見るのは嫌なんです。

理論的には効果があるはずなのですが、そうならないのは

SymbolInfoTick(_Symbol, Tick);

シンボルは値ではなく、参照で 渡されます。

 
Renat Fatkhullin:

そうではありません。

どの番組でも必ずランダムな遅れが発生します。すべてを記録し始めると、Windowsの現実にぞっとすることでしょう。このことは、これまでにも何度か詳しく説明してきました。

ありがとうございます、チェックしてみます。


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

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


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

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

 
A100:

理論的には効果があるはずなのですが、そうではないのです。

_Symbolは値で渡されるのではなく、(Helpの記述にあるように)参照で 渡されます。

関数内部では、やはり適切なティック文字に渡す必要があります。これは、string-variableの解析に必要な時間である。NULLの場合は必要ありません。