(7) 【MQL5】 チャートにシグナルを表示をクラス化

投稿者: | 2017年9月15日

3,784 views

この記事は最終更新から 2574日 が経過しています。

(1) やりたいこと

MQL5ではクラスが使えるらしい。
前回の「(6) 【MQL】 チャートにシグナルを表示」ではチャート上にMAで生成したシグナルを表示させたが、別の指標でシグナルを作りたくなることがあるはず。

そのたびにいちいちプログラムを書き直すのは面倒くさいので、
1) シグナル表示部分(=Indicator本体)
2) シグナル発生部分
の二つにプログラムを分けておきたい。

イメージとしてはこんな感じ。

Indicator本体は CMySignal に対して制御をかける。
CMySignalがどのサブクラスを具現化しているかによって、出てくるシグナルが変わる。
こんな感じにしたい。

(2) プログラムを書く

今回は以下の3種類を作成する。
前回の「(6) 【MQL】 チャートにシグナルを表示」で作成したプログラムを分解する方針だ。
1) Indicator本体
2) ベースクラス
3) サブクラス(MA用)

1) Indicator本体

前回の「(6) 【MQL】 チャートにシグナルを表示」ではMA専用と記述していたところを汎用Indicator用に書き直した。
31行目: 入力パラメータ名を変更した。
33行目: 線描画データ用のバッファ名を変更した。
38行目: 使用するIndicatorクラスの読み込み。
39行目: Indicatorクラスのベースクラスへの参照を持つ。
57行目: Indicatorクラスのインスタンスを生成する。ここではMA用Indicatorクラスを生成する。
58行目: Indicatorクラスを初期化する。ここでIndicatorが作られる。
80行目: 価格変動時の処理をIndicatorクラスに完全委譲する。

2) ベースクラス

いわゆる骨格のみを規定する。
実現はサブクラスに任せる。
なぜかvirtualがプロトタイプ宣言だけだと「実体を持て」と怒られる。要調査

3) サブクラス(MA用)

MA Indicatorの初期化および、価格変動時のシグナル発生判定処理を実装する。

(3) いざ実行

前回の「(6) 【MQL】 チャートにシグナルを表示」と同じように表示された。
問題なさそうだ。

これでIndicator作りが少し楽になったのかも。
次回は別の指標を使ってシグナルを発生させてみる。


カテゴリー: MQL

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)