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作りが少し楽になったのかも。
次回は別の指標を使ってシグナルを発生させてみる。