インディケータ: Ping - ページ 2

 
fxsaber:

実は小さくない~5ミリ秒。ゼロpingに悩む人の庭に一石を投じる。

ビルド1703では、平均ラグは変わらない。しかし、サージはかなり少なくなった。

実験を行った。MT5を搭載したマシンでトレントを開始すると、このような状況になった。

つまり、誰かが積極的にネットワークを使用している場合、端末のラグが最大2秒になる可能性があります。これは、ネットワークチャネルが1つではなく、多くのクライアントに依存するVPSを使用している人にとっては、特に理解することが重要です。そして、そのようなVPSにニュースTSを置くことは、例えば、非常に危険になります。

 
fxsaber:


そして実際、Expert Advisorのインジケーターは、Expert Advisorとは異なり、すべてのインジケーターが1つのスレッドで実行されるため、当初はボトルネックになると言われていた。Expert Advisorsのラグについては別途検討が必要です。ラグを取得する機能は説明文にありますので、難しいことではありません。

Expert Advisorで呼び出されたインジケーターは1つのスレッドで実行され、Expert Advisorは何らかのタスクそのものを並行して実行すると、どこに書いてありましたか?

インジケータは独立したプログラムであり、並列スレッドで簡単に計算できますが、何らかの理由で計算が完了しない場合は待機する必要があります。ストラテジー・テスターでは、すべてが1つのスレッドになっていることは知っています。

 
Aleksey Vyazmikin:

Expert Advisorで呼び出されたインジケータは1つのスレッドで実行され、Expert Advisorは何らかの形でタスクそのものを並行して実行すると、どこに記載されていたのか教えてください。

取引、自動取引システム、取引戦略のテストに関するフォーラム

Expert Advisorのアプリケーションの意味を説明してください。

Renat Fatkhullin, 2010.02.06 13:06

インジケーターは、計算された実体であり、動作するための厳格な要件を持っています。インジケータは、その動作が遅くなったり、データを生成しなかったりする権利はありません(データは無条件で要求されます)。

インジケータは、各価格ティックを処理する独自のフローで動作し、遅延はシステム全体のブロックにつながります(結果は非常に多岐にわたります)。

オブジェクトを使用することで、インジケーターに重大なブレーキがかかることを懸念していました(オブジェクトを使用する場合、メッセージの特別な非同期キューを経由します)。実験によると、オブジェクトを合理的に 使えば(一度に何百、何千ものオブジェクトを動かさなければ)、計算に大きな影響を与えることはない。これが、カスタム・インジケータでオブジェクト管理関数の使用を許可した理由です。しかし、その気になれば、インジケーター内のオブジェクトを使った非知的な作業によって、ターミナルに簡単にブレーキをかけることができます。


インジケータとは何かを理解するためには、より深く、つまりヒストリカル・デー タへのアクセスについて調べる必要があります。インジケータが OnCalculate で呼び出されると、利用可能な履歴が与えられます。

ログにカウンターを表示して)その量を見ると、各ティックで数十メガバイトから数百メガバイトが 実際に与えられていることがわかります:

  1. これらのアレイはどこから来るのか?

    グローバル・ヒストリー・マネージャーからで、ティックごとに更新され、キャッシュされ、オンデマンドでタイムフレームを再作成する。



  2. 端末が読み込みをブロックし、各インジケーターに順番に提供します。

  3. いくつのインジケーターが提供されますか?

    理論的には無制限です。



  4. メモリが極端に不足しているため、インジケータは1つずつ動作するしかありません。


MetaTrader 4と比較してMetaTrader 5の特徴は、履歴の容量が何倍にも増えたことと、インジケーターの再計算を高速に(各インジケーターの履歴を個別に何十メガバイトもコピーせずに)行うという非常に難しい問題を解決したことです。同じタイムフレームにある2つ(またはそれ以上)の同じインディケータでさえ、1つの計算コピーにマージされ、1回カウントされます。

今、あなたはこの仕組み全体を取り込んで遅くし、実際に指標から純粋なエキスパートを作ることを提案しています。これが技術的に不合理であることは明らかです。インジケーターにインタラクティブ性を加えることは、データへのアクセスというターミナル・コアで働くメカニズムを即座に破壊することになる。

その結果、「ターミナルが遅い、インジケーターも描けない、チャートも遅延して描画される!」ということになり、「そうだ、私の派手なインジケーターが動くのは彼のせいだ」とは誰も言わないでしょう。そしてこの場合でも、「合理的な分離を提供していない、マルチスレッドソフトウェアの書き方を知らない、など」と非難されるだろう。

したがって、インジケーターの動作や原理が根本的に変わることはないだろう。


 
fxsaber:

情報をありがとう。

2010年という年号がすぐに目に留まりますが、"Never say never "ですから、現在どうなっているのか、本当に変更がないのか、興味深いところです。

それに、Renatの回答から、各インジケーターはそれぞれのスレッドで動作することがわかります。

レナトは、遅延の原因はインディケータに大量のデータ(実際、 各ティックで 数十メガバイトから数百メガバイトのデータが 提供される)を提供する必要があるためだと主張していますが、今日の実情によれば、これはそれほど大量のデータではありません。同じインディケータを同じインストゥルメントで使用する場合、履歴データの共同ストリームが編成されますが、インディケータ自体の計算には別のストリームが編成される可能性があります

たとえそうだとしても、指標を1つのクラスタに統合し、そこでOpenCLを適用することは十分に可能です(組織化に関するダミー向けの情報が少ないため、私自身は適用したことがありません)。

 
Aleksey Vyazmikin:

今、何が起こっているのか興味がある

1234

 
fxsaber:

1234

ありがとう、検索結果をよく見てみたよ。ほとんど同じようなものばかりだ。

その結果、シンボルごとに1つのスレッドがあり、そのシンボル上のすべてのインジケーターに対応しています。そして、それぞれの(?)EAに対してスレッドを持っています。では、異なるチャートからの情報を意思決定に使用する場合、インジケーターの使用が望ましいのでしょうか?

インジケーターには、計算の履歴が残るという便利な利点があります。

おそらく、各ティックで計算を行う場合、インジケータは最も関連性の高いデータを提供しようとするため、ボトルネックになる可能性があります。エキスパートアドバイザーがインジケーターに情報を要求する限り、現在のポジションの状況を確認した後、このデータはすでに受信可能な状態になっています。また、インジケーターの計算は新しいバーのオープンのみで行います。インジケーターのロジックを組み合わせれば、さらに速くなります。

 

Aleksey Vyazmikin:

それとも違う意見?

スレッドを変更してください。

 
Pingの単位は秒ですか?
 
Manoel Calixto Da Silva Neto:
こんにちは、pingの単位は秒ですか?

そう書いてありますよ。読みませんでしたか?

"引用の遅延はミリ秒単位で計算されます。"

 

私はこの素晴らしいインジケーターを思い出した。

これはpingがゼロのマシンからの写真だ。ターミナルの内部遅延は平均して2ミリ秒であることがわかった。0-9msの範囲でジャンプする。


例えば、2つのティックがサーバーに届きました。ターミナルでは、最初のティックの10ms後ではなく、10-19ms後に2番目のティックが表示されます。平均すると12ミリ秒である。