MT5 インディケータの作り方 その10

indicator

お疲れ様です。
今回は、前回少し説明させて頂いたiCustom関数のハンドルをしない方法の説明です。

iCustom関数

テクニカル指標関数ではないインディケータの使用

MT5でインディゲータを作るとき、移動平均線やRSIなど既存のテクニカル指標関数を
使うことも多いでしょう。そういうときに、一つ一つ移動平均やRSIの計算をすることはありません。
普通はハンドルを使って取得してしまいます。その方が早くて正確です。では、%bのように、MT5
で用意されていないインディゲーター使いたい場合はどうすればいいでしょうか?

そのたびに、再度計算をして書き込むというのはいい方法ではありません。コピペでやればいいと
いうものでもありません。たとえば%bに修正を入れたい場合、全てのプログラムに同じ作業をして
修正を加えなければなりません。そのようなことをしなくても、これから説明するiCustom関数を使えば
移動平均線やRSIと同じようにハンドルを使って呼び出すことができます。今回はPerB2Bという名前で
作成しました。%bの色を変えて前回のものと区別化しました。

property部分

今回は移動平均線のヘッダをインクルードする必要はありません。

property indicator_buffers 2

property indicator_plots 2

配列2つになりました。また、移動平均線のハンドルも使いま。

OnInit関数

前回で説明したのと同じ要領です。ハンドルを用いた描画するだけなので、PLOT_DRAW_BEGINの
ような処理も必要ありません。

iCustom関数

hBB=iCustom(NULL,0,”PerB”,BandsPeriod,BandsShift,BandsDeviations);

自作のインディケータや、平均足、ZigZagなど標準でテクニカル指標関数として用意されていない
インディケータのハンドルを取得するときにはiCustom関数を使います。第一、第二パラーメーター
は他のテクニカル指標関数と同じく、銘柄、時間足になり、NULL、0とすると現在インディケータが適用
されている銘柄、時間足となります。第三パラメーターが呼び出すインディケータ名になります。
インディケータ「””」(ダブルクォーテーション)で囲みます。なお、自作のインディケータはMQL5/
Indicator/フォルダに作成されます。同じフォルダにあるインディケータを呼び出す場合はインディケータ
名を入れるだけで呼び出せます。また、平均足やZigZagなどはMQL5/Indicator/Examplesに格納されています。
その場合は”Examples¥¥Heiken_Ashi”などと「\」(バックススラッシュ2本)で区切る必要があります。
(文字コードによって(円)マークに見えます).大文字小文字も区別されますので間違えないようにしましょう。
第四パラメーター以降は呼び出すインディケータによって変わります。ここで重要なのは、元のインディケータ
の順序と一致させる必要があるといおことです。今回%bを呼び出しました。%bは

input int BandsPeriod=20; // ボリンジャーバンド期間
input int BandsShift=0; // シフト
input double BandsDeviations=2.0; // 偏差

ボリンジャーバンド期間、シフト、偏差の順で宣言されていますので、iCustomで呼び出すときもボリンジャー
バンド期間、シフト、偏差の順で呼び出す必要があります。ただ、それぞれの数値は、iCustomで呼び出すときに
変更することもできます。
たとえばボリンジャーバンド期間を25にする。偏差を3にするなどの変更はできるわけです。その際にはiCustomを
使うインディケータ(今回で言えばPerB2B)で新たにinputで宣言すればいいのです。peoperty部分に記述がありますので、
この数値を変えればいいわけですね。

続く

ブログランキング・にほんブログ村へ

コメント

タイトルとURLをコピーしました