MetaTrader 5のティックインジケーターは、他のティックインジケーターとは異なり、メインチャート上にバーの上に直接履歴を表示します。このインジケーターを使うことで、「スプレッド」の履歴や各バーの形成過程がはっきりと見ることができます。そして、リアルタイムのバー形成も視覚的に把握できます。

注意点
このインジケーターは、チャート上に表示されるすべての時間間隔の価格ティック履歴を表示するため、視覚化には数十万から数百万のティックがカウントされる可能性があります。こうした重い負荷により、インジケーターの動作が遅くなることがあります。例えば、H1の最小スケールでは、表示されるインターバルが数ヶ月に達することがあります。そのため、インジケーターは多くのティックを読み込むために非常に遅く動作します。
ティックを監視する場合は、小さな時間足(最大M5)と大きなスケールを使用することが理にかなっています。これにより、価格履歴を詳細に見ることができます(上の図のように)。
このインジケーターは、ブログから取得され、若干修正されました。元のコードには配列オーバーフローがあり、対応するLowAskとHighBidの間の領域を埋める複数行が追加されました。元のコードからは多くの不要な部分が削除され、インジケーターのOOP構造や未使用のmqhファイルが整理されました。
驚くべきことに(インジケーターのバッファはまったくありません)、このインジケーターは非常に安定しています。
デザインは最適とは言えません。これは、CopyTicks関数の多くのバグが修正されていなかったためと思われます。しかし、履歴データを正確にかつ迅速に表示しており(スピード向上の余地はあります)、その点では満足できます。
このインジケーターにiCustomやIndicatorCreateでアクセスするのは意味がありません—インジケーターバッファが存在しないためです。実際には、履歴の視覚化のために設計されています。インジケーターとして存在するのは、表示するという主な機能による偶然的なものです。
例えば、EAと同じようなものです。
#property strict #include <fxsaber\ChartObjects\ChartObjectTicks.mqh> CHARTOBJECTTICKS ChartObject; void OnChartEvent( const int id, const long& lparam, const double& dparam, const string& sparam ) { EVENTBASE::MyEvent(id, lparam, dparam, sparam); } void OnTick( void ) { if (::ChartGetInteger(0, ::CHART_FIRST_VISIBLE_BAR) <= ::ChartGetInteger(0, ::CHART_VISIBLE_BARS)) ChartObject.Visual(); }
つまり、これは単にカスタムタイプのインタラクティブなグラフィカルオブジェクトの一つを使用しているだけです。したがって、逆説的に、このインジケーターは形式的にはインジケーターであるだけです—MTプログラムの技術的形態です。
このオブジェクトの透明度レベルは、入力パラメーターで設定できます。
このインジケーターは自己完結型で、標準ライブラリは使用していません。
ターミナルのスクリーンショットを作成するのは問題があります—表示される内容がターミナルの表示と一致しない可能性があります。
MetaTrader 4にも対応していますが、当然のことながら、何も表示されません(CopyTicksデータはありません)。