記事「MQL5でカスタムインジケーターを作成する(第3回):扇形と円形によるマルチゲージの強化」についてのディスカッション

 

新しい記事「MQL5でカスタムインジケーターを作成する(第3回):扇形と円形によるマルチゲージの強化」はパブリッシュされました:

本記事では、MQL5のゲージ型インジケーターを拡張し、複数のオシレーターに対応できるようにします。列挙型を使うことで、単体表示だけでなく複合表示もユーザーが選択できるようになります。また、基盤となるゲージフレームワークを拡張し、扇形と円形の2つのスタイルを派生クラスとして実装します。円弧、直線、多角形を組み合わせた枠(ケース)の描画により、見た目もより洗練されたものになります。

マルチゲージフレームワークは、カスタマイズ可能なゲージの基盤クラスを土台として構築します。その上で、円形ゲージおよび扇形ゲージのスタイルを実装した派生クラスを導入し、RSI(相対力指数)、CCI(商品チャネル指数)、MFI(マネーフローインデックス)といったオシレーターを可視化できるようにします。表示方法は列挙型で制御し、単体表示と複合表示を切り替えられるようにすることで、複数インジケーターにわたる柔軟なモメンタム分析を実現します。円形ゲージでは、塗りつぶされた円をベースとした従来の円形のケースを維持します。一方、扇形ゲージは、円弧ベースのセクションや丸みを持たせた円弧、接続線、多角形などを組み合わせることで、部分的なダイヤル形状を表現し、より視覚的にリッチな表示を実現します。また、角度の範囲に応じて柔軟に形状を変えられるようにしつつ、相対配置によって複数のゲージをチャート上に横並びで配置できるようにしています。このアイデアは、ゲージ全体ではなく、一部だけを表示したい場合があることから生まれました。そこで、円形のゲージを半分や4分の1に分割し、用途に応じて選べるようにするべきだと考えました。実装では、これらを条件に応じて使い分けられるよう、3種類の表示をサポートします。

これを実現するために、基盤となるゲージクラスには、ケースの計算および描画をおこなう純粋仮想メソッドを定義し、派生クラス側でスタイルごとの処理をオーバーライドできるようにします。ゲージ選択用の列挙型を追加し、相対力指数(円形)、商品チャネル指数(扇形)、およびマネーフローインデックス(扇形)のインスタンスを条件付きで初期化および配置し、データコピー用のハンドルとバッファを統合します。これらは主に可視化のためのデータ取得に使用しますが、用途はこれに限りません。たとえば、損益の表示、インジケーターの流れ、進捗状況や口座情報のメトリクスなど、任意のデータを可視化する用途にも応用できます。アーキテクチャとしては、スケール(ゼロ位置の目盛り配置を強化)と針(針の後方部分の長さを調整可能)のレイヤーを分離しています。これにより、再描画効率を高めつつ、前のゲージを基準にした相対配置(アンカー)も安定しておこなえるようにしています。以下に想定される表示例を示します。

ゲージアーキテクチャの概要


作者: Allan Munene Mutiiria