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

indicator

RSI に 移動平均線

ハンドル の 応用 RSI も 有名 な インディケータ で 利用 者 も 多い です。
その RSI に 移動平均線 を 表示 さ せ て み たい と 思い ます。
RSI の グラフ は ギザギザ し て 見にくい ので、 移動平均線 で 滑らか に し て みよ う という もの です。
たとえば ストキャスティクス の% D ライン も% K の 移動平均線 です から、 同じ 要領 で 考え ても いい わけ です。
早速 ウィザード で RSI 1 st という 名前 で 作り ましょ う。 最後 は「 サブ ウィンドウ に 表示」 に チェック を 入れ て ください。

property 部分 以降、 著者 名・リンク・バージョン の 説明 は 省略 し ます。

property 部分 です が、 基本 的 には 移動平均線 と 同じ 要領 です。
異なる ところ を 重点的 に 説明 し ます。

property indicator_ separate_ window

チャート ウィンドウ では なく データ ウィンドウ に 表示 さ れる インディケータ は indicator_ separate_ window で 指定 し ます。
ウィザード で「 サブ ウィンドウ に 表示」 の チェック を 入れ忘れ ても ここ で 直せ ば かまい ませ ん。

property indicator_ buffers 2

property indicator_ plots 2

インディケータ で 使用 さ れる 配列 と 描画 さ れる 配列 が 2 つ なので 2 と 指定 し ます。

property indicator_ type 1 DRAW_ LINE

#property indicator_ color 1 clrDodgerBlue

property indicator_ width 1 2

property indicator_ style 1 STYLE_ SOLID

#property indicator_ type 2 DRAW_ LINE

property indicator_ color 2 clrGreen

#property indicator_ width 2 2

property indicator_ style 2 STYLE_ SOLID

2 つ の 配列 それぞれ に、 描画 の 種類、 色、 太 さ、 線 の 種類 を 指定 し ます。

input int RSI_ Period = 14; //RSI 期間 input int MA_ Period = 9; //移動平均線 の 期間
input ENUM_ MA_ METHOD InpMAMethod = MODE_ SMA; //平滑 化 の 方法

input ENUM_ APPLIED_ PRICE InpMAApply = PRICE_ CLOSE;// 適用 価格

RSI 期間、 移動平均 の 期間、 移動平均線 の 種類、 適用 価格 を 指定 し ます。
あらかじめ コメント も 入れ て おき ましょ う。
double RSI_ Buffer[]; double MA_ Buffer[]; RSI、 移動平均線 の ハンドル です。

int hRSI; int hRSIMA;
RSI、 移動平均 の データ を 格納 する 配列 です。

OnInit 関数

OnInit 関数 です。 なお、 パラメータ や ハンドル 取得 時 の チェック、 エラー 表示 は 省略 し ます。
各自 必要 に 応じ て 設置 し て ください。

SetIndexBuffer( 0, RSI_ Buffer, INDICATOR_ DATA); SetIndexBuffer( 1, MA_ Buffer, INDICATOR_ DATA);
今回 は 2 つ の 配列 が あり ます ので、 この よう に 結びつけ ます。
RSI を 0 番目( 最初)、 移動平均線 を 1 番目 と し ます。

IndicatorSetString( INDICATOR_ SHORTNAME,” RSI 1 st(“+( string) RSI_ Period +”,”+( string) MA_ Period +”)”);
インディケータ の 表示 名 です。 サブ ウィンドウ の 左端 と、 インディケータ の 上 に マウス カーソル を 持っ て き た とき に 表示 さ れ ます。
今回 は 例 として わかり やすい よう に RSI 1 st など として あり ます が、 普通 に RSI で いい でしょ う。 そこ は 臨機応変 に お願い し ます。

PlotIndexSetString( 0, PLOT_ LABEL,” RSI(“+ string( RSI_ Period)+”)”);
PlotIndexSetString( 1, PLOT_ LABEL,” RSI 移動平均線(“+ string( RSI_ Period)+”,”+ string( MA_ Period)+”)”);

データ ウィンドウ や マウス カーソル を 持っ て き た とき に 表示 さ れる ラベル です。
ここ でも 例 として 全角 文字 に し て あり ます が、 ケース・バイ・ケース で 半角 文字 と 使い分け て ください。

IndicatorSetInteger( INDICATOR_ DIGITS, 2);
インディケータ を 小数点 以下 2 桁 まで 表示 する という 意味 です。
何 も 指定 し ない と、 デフォルト の 桁 数 が 表示 さ れ ます。

hRSI = iRSI( NULL, 0, RSI_ Period, InpMAApply);
hRSIMA = iMA( NULL, 0, MA_ Period, 0, InpMAMethod, hRSI);

RSI と 移動平均線 の ハンドル を 取得 し ます

hRSIMA = iMA( NULL, 0, MA_ Period, 0, InpMAMethod, hRSI);

RSI の ハンドル 取得 は すぐ に 理解 できる と 思い ます。
移動平均線 の ハンドル の 最後 の パラメータ に 注目 し て ください。
移動平均線では

hMA = iMA( NULL, 0, InpMaPeriod, 0, InpMAMethod, InpMAApply);

最後 の パラメータ に 移動平均 の 適用 価格 を 指定 し て い まし た。
今回 は RSI の ハンドル を 指定 し て い ます。
こう する こと によって RSI の 配列 の 移動平均 を 直接 取得 する こと が できる の です。

OnCalculate 関数

2 つ の ハンドル について、 取得 でき た か どう かの チェック を し て い ます。 CopyBuffer も 2 つ の 配列 について 行わ れ て い ます。

OnDeinit 関数

コンパイル し て エラー がで ない こと を 確認 し て、 インディケータ を 適用 し て み ましょ う。
青い 線 が RSI、 緑 の 線 が RSI の 移動平均線 です。 この まま でも いい の です が、 オシレータ には レベル が 描か れ て いる こと が ほとんど です。
RSI なら 70、 30 です ね。 MT 5 標準 の RSI にも 最初 から 表示 さ れ て い ます。

全体のコードです。

MQL5リファレンス - MetaTrader 5 のためのアルゴリズムの/自動化されたトレーディング言語の使い方
MQL5リファレンス - MetaTrader 5 のためのアルゴリズムの/自動化されたトレーディング言語の使い方
ブログランキング・にほんブログ村へ

コメント

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