2006年03月27日

MT4入門(6) - カスタムインディケータの作り方(4)

MetaTrader4入門の第6回目です。

今回は

「カスタムインディケータの作り方(4) - インディケータのパラメータ設定」

と題してお話しします。

これまで簡単な例として4日移動平均のインディケータを作ってきましたが、移動平均はいつも4日というわけではありません。
移動平均を取る期間を変えるのにどうすればいいでしょうか。今までの例のように毎回式を書き換えるのは大変です。
そこで、移動平均の期間を変数にして、その変数を変えるだけで済むようなプログラムを書いてみます。

Sample3_Image1.png

新たに移動平均の期間を表す MA_Period という変数を宣言し、ここでは仮に4と初期値を代入します。
もう一つ繰り返しを制御するために j という変数を宣言します。

前回、

Buf0[i] = (Close[i]+Close[i+1]+Close[i+2]+Close[i+3])/4; //式(1)

とだけ書いた部分がちょっと複雑になりますが、順番に見てましょう。

for(j=0; j < MA_Period; j++)

の部分は、j が 0 から j < MA_Period の範囲で1ずつ増えていく繰り返しですが、この例では、j=0, j=1, j=2, j=3 と4回の繰り返しを行うことになるので、

Buf0[i] = Buf0[i] + Close[i+0]; //式(2)
Buf0[i] = Buf0[i] + Close[i+1];
Buf0[i] = Buf0[i] + Close[i+2];
Buf0[i] = Buf0[i] + Close[i+3];

というように、終値の値を1個ずつ足していくことがわかると思います。そして、4つの終値を全部足してから

Buf0[i] = Buf0[i] / MA_Period;

のように MA_Period(ここでは4)で割れば、式(1)と同じ結果になるのです。

ここで、for 文の前に

Buf0[i] = 0;

のようにBuf0[i] を初期化してあります。初期化しなくてもうまくいく場合もありますが、式(2)のように、宣言されただけの Buf0[i] の値を使って計算する式では、最初に0が入っているという保証はないので、念のために0の代入を明示しておく方が確実です。

あと、C言語をご存知の方には説明する必要はないと思いますが、

Buf0[i] = Buf0[i] + Close[i+3];
Buf0[i] = Buf0[i] / MA_Period;

のように、左辺と同じ変数に対して加減乗除演算を行う場合、

Buf0[i] += Close[i+3];
Buf0[i] /= MA_Period;

のように += とか /= という演算子を使って簡単に書くことができます。慣れてくるとこのような書き方を使った方が便利かもしれません。

これで、MA_Period の初期値を変えるだけで、移動平均の期間を変えることができるようになりましたが、それでも、このままでは変える度にコンパイルし直さなくてはなりません。
もうちょっと簡単にパラメータを変更する方法として、この変数を init(),start() などの外側、つまり外部変数として宣言する方法があります。書き方としては、関数の外部の位置(どこでもいいのですが、わかりやすく #property 命令の後くらい)に

extern int MA_Period=4;

のように extern という予約語を付けて宣言します。
するとこの変数は、インディケータをアタッチするとき、あるいは、アタッチ後でも、MetaTrader のメニューの [Charts]-[Indicators List] で該当するインディケータを選択して、Edit ボタンを押すと現れるウインドウ上の Input タブに表示されるようになります。
ここで、適当な数値に変更すると、コンパイルしなくても、すぐにチャート上に反映されます。

ここまでの追加を行ったファイルを Sample3_Ind.mq4 としておきます。(Download Sample3_Ind.mq4

あともう一つ、便利な使い方としてテンプレートの使用をお勧めします。
チャートのスタイルやインディケータを自分用に設定した後に、チャート上で右クリック、あるいは、MetaTrader のメニュー [Charts]-[Templates]で、適当な名前をつけてセーブしておきます。

間違ってそのチャートを閉じてしまった場合や、別のチャートに対して同じスタイル、同じインディケータ、同じパラメータを設定したい場合にテンプレートのロードを行うと、一発で設定を再現してくれるので、いちいち設定をやり直す手間が省けて便利です。

ちなみにチャートのテンプレートが保存されているフォルダーは、MetaTrader をインストールしたフォルダーの下の templates というサブフォルダーです。experts の下にも同じ名前のフォルダーがあるので間違わないようにしてください。

Template_Folder.png

今日はこんなところです。次回はチャートとは別ウインドウに表示させるオシレータ系のインディケータについて説明する予定です。

にほんブログ村 為替ブログへ為替ブログランキング 現在16位
「次の記事も読んでみたい!」
と思った方はクリックにご協力ください。↑

Trackback on "MT4入門(6) - カスタムインディケータの作り方(4)"

このエントリーのトラックバックURL: 

"MT4入門(6) - カスタムインディケータの作り方(4)"へのトラックバックはまだありません。

Comment on "MT4入門(6) - カスタムインディケータの作り方(4)"

今日も詳しい説明をありがとうございます。
説明いただいたことは理解しているつもりなのですが、いざ応用を利かせて自分で違うものをつくろうとすると・・・とほほでございます。カシコクないですね。
次回のMT4入門も楽しみにしてます!

  •   
  • 2006年03月27日 16:55