記事「マーケットプロファイルインジケーター(第2回):キャンバス上の最適化と描画」についてのディスカッション

 

新しい記事「マーケットプロファイルインジケーター(第2回):キャンバス上の最適化と描画」はパブリッシュされました:

この記事では、複数のグラフィカルオブジェクトでの描画を、CCanvasクラスのオブジェクト上での描画に置き換えた、最適化されたマーケットプロファイルインジケーターのバージョンについて考察しています。

前回の記事では、マーケットプロファイルインジケーターについて詳しく説明しました。通常のグラフィカルオブジェクトを使ってマーケットプロファイル図を作成すると、かなりのリソースを消費することが分かりました。具体的には、日足バーの安値から高値までの各価格ポイントが、その日にその価格水準に到達した日中バーの本数に応じて、矩形のグラフィカルオブジェクトで埋められます。これはすべての項目に当てはまり、それぞれ多数のグラフィカルオブジェクトを含み、プロファイル図が描かれる各日に対してこれらのオブジェクトが作成され描画されます。インジケーターが何千ものグラフィカルオブジェクトを作成すると、他のグラフィカルオブジェクトの処理やチャートの再描画において、大幅な遅延が発生する可能性があります。 

3営業日分のマーケットプロファイルは最終的にこのような形になります。


作者: Artyom Trishkin

 
なぜ完璧なボリューム・プロフィールを書かないのか
 
__zeus__ #:
なぜ完璧な出来高プロフィールを書かないのか

完璧」とはどういう意味か?

 
__zeus__ #:
なぜ完璧なボリュームプロファイルを書かないのか
イゴールの質問を支持する
 

これは興味深いトピックだ。私もプロフィールの表示をキャンバスに切り替えました。 しかし、この方法にはいくつかの欠点があります。図が「描画されたまま忘れ去られる」場合、mt5はチャートの移動、TFの変更などのアクションの際に勝手にスケーリングしてしまうので、キャンバスはCHARTEVENT_CHART_CHANGE時に、たとえVPが履歴のどこかにあったとしても、すでに変更されていないデータに対して常に再描画されなければなりません。そして、これらのデータを取得しなければなりませんが、常にそれら(ティックデータ)がmt5のキャッシュにあるとは限りません。ここでは、メモリを保存してVPの境界が変更されたかどうかをチェックするか、常にmt5にリクエストします(現在、私はそのように実装しています)。

描画は問題の一部です。第二の部分は、トレーダーは常に賞賛するための画像だけを必要とするわけではなく、POC、VHL、VLL、「空白へのエントリー」など、この画像に基づくシグナルを必要とするということです。そして、イベントをグラフィカルなオブジェクトにのみバインドすることができます(条件付きで、それらをインジケータのどこかの配列に保持することができますが、それでも、このレベルがどこにあるか、どこでアラートがトリガーされたかを視覚化することが望ましいです)。つまり、もちろんグラフィカル オブジェクトを通じて VP を表示する場合よりも 1 桁、あるいは数桁少なくなりますが、それでも kanvas VP にはグラフィカル オブジェクトが必要です。

つまり、mt5 からは(まだ?)ボリューメトリックなターミナルは得られません(クラスターやデルタなども必要です)。

画像はインパルス波でVPがどのように見えるかの例で、POCは線で示されている。シニアTFのティック・ボリュームとリアル・ボリュームを比較する練習が示しているように、高値または安値のローソク足を通過する大きなボリュームのケースを除いて、それらは一致するか、または非常に近い。



 
Nikolay Kuznetsov #:

これは興味深いトピックだ。私もプロフィールの表示をキャンバスに切り替えました。 しかし、この方法にはいくつかの欠点があります。図が「描画されたまま忘れ去られる」場合、mt5はチャートの移動、TFの変更などのアクションの際に勝手にスケーリングしてしまうので、キャンバスはCHARTEVENT_CHART_CHANGE時に、たとえVPが履歴のどこかにあったとしても、すでに変更されていないデータに対して常に再描画されなければなりません。このデータは必ず取得しなければならず、常にmt5のキャッシュにあるわけではなく、メモリを保存してVPの境界が変わったかどうかをチェックするか、常にmt5にリクエストするか(現在、私はこのように実装しています)、どちらかですが、これはすぐには機能せず、データが完全に与えられるとは限りません。

描画は問題の一部です。第二の部分は、トレーダーは常にそれを賞賛するために絵だけを必要としないことであり、彼はPOC、VHL、VLL、 "ボイドへのエントリ "など、この画像に基づいてシグナルを必要とします。そして、イベントをグラフィカル・オブジェクトにのみバインドすることができます(条件付きで、それらをインジケータのどこかの配列に保持することができますが、それでも、このレベルがどこにあるのか、どこでアラートがトリガーされたのかを視覚化することが望ましいです)。つまり、キャンバスのVPにはまだグラフィカル・オブジェクトが必要なのですが、もちろん、グラフィカル・オブジェクトを通してVPを表示する場合に比べて、その数は1桁、あるいは数桁少なくなります。

一般的に、要約すると以下のようになります。mt5からボリュメトリック・ターミナルを取得することはできません(クラスター、デルタなどが必要です)。

画像はインパルス波でVPがどのように見えるかの例で、POCは線で示されている。シニアTFのティック・ボリュームとリアル・ボリュームを比較する練習が示しているように、高値または安値のローソク足を通過する大きなボリュームのケースを除いて、それらは一致するか、または非常に近い。



正確にはそのようなことはありません。これらはデメリットではなく、ツールを最大限の可能性と自由な行動で使用するために知っておく必要がある機能です。
3Dクラスタであっても、すべてが可能です。
OpenCLを使用せずにCanvasのみを使用したMQL5の 例です。OpenCL(つまりグラフィックカード)を使用すれば、大幅なスピードアップ(数十倍)が実現できます。