
【MT4】矢印サインを表示する自作インジケーターの作り方(RSIサイン)
矢印サインを表示するインジケーターの作り方の基本を記事にしたいと思います。
RSIが30より下から上に抜けたら上矢印
RSIが80より上から下に抜けたら下矢印
を表示するインジケーターを作りながら説明していきたいと思います。
1:MetaEditorを起動する
インジケーターを作成する為のツールがMT4には標準でついています。
MT4の上記のボタンを押します。
2:MetaEditorで新規作成する
すると以下のようなソフトが起動します。
この画面が、EAやインジケーターのMQLプログラムを作成する画面になります。
今回は、新しくインジケーターを作成するので、「新規作成」ボタンを押します。
インジケーターを作成しますので、2番目の「カスタムインジケータ」を選択して、「次へ」ボタンを押します。
作成するインジケーターの名前を矢印のところに記入します。
インジケータの名前は自分が持っているインジケータと同じ名前でなければ、好きな名前をつけて大丈夫です
今回は「I_test」って名前にしたいと思います。
名前を入れた「次へ」を押します。
この画面を変更する事は、ほぼないと思ってよいので説明も省略します。
今まで何十ってインジケータ作ってきましたが、ここを変えた事はありません。「次へ」を押します。
ここも同じくそのままで「完了」を押します。
3:プログラムをファイルに書いていこう
完了を押すと、上記のような画面が出てきます。
すでにいろいろ書いてあって、「えっ!」って思うかもしれませんが、安心して下さい。
4:変数を宣言しよう!
まずは、今回のインジケーターで使う変数を宣言しましょう。
変数ってのは、値を入れおく箱みたいなものです。
プログラム全体で使う変数は、int OnInit() ってところより上に書いていきます。
この部分ですね。
#property indicator_buffers 2
#property indicator_color1 clrBlue
#property indicator_color2 clrRed
#property indicator_width1 2
#property indicator_width2 2
double arrEntUp[], arrEntDown[];
int maxlimit = 1000;
#property indicator_buffers 2
これは、インジケーターで何本のラインや矢印を使うかですね。
今回は、下矢印と上矢印の2つの予定ですので、「2」としてます。
#property indicator_color1 clrBlue
#property indicator_color2 clrRed
この部分は、それぞれの色の設定ですね。
売りを赤、買いを青としようと思います。
#property indicator_width1 2
#property indicator_width2 2
この部分は、大きさになります。
数字を大きくすると線の幅が太くなっていきます。
double arrEntUp[], arrEntDown[];
この部分は、矢印を格納する配列変数になります。
int maxlimit = 1000;
この変数は、何本前まで計算するかの数字として使います。
変数には型というのがあって、
double は浮動小数、intは整数を入れる箱ですよって意味になります。
5:初期化処理を書いていこう
int OnInit()の中には、
インジケーターをセットした時に1度だけ実行される処理を書いていきます。
IndicatorBuffers(2);
SetIndexBuffer(0, arrEntUp);
SetIndexBuffer(1, arrEntDown);
SetIndexStyle(0, DRAW_ARROW, STYLE_SOLID);
SetIndexStyle(1, DRAW_ARROW, STYLE_SOLID);
SetIndexArrow(0, 233);
SetIndexArrow(1, 234);
IndicatorBuffers(2);
今回は、2つの矢印を表示させるので「2」ですね。
SetIndexBuffer(0, arrEntUp);
SetIndexBuffer(1, arrEntDown);
用意したインジケーターバッファに、どの変数と対応させるかの設定です。
SetIndexStyle(0, DRAW_ARROW, STYLE_SOLID);
SetIndexStyle(1, DRAW_ARROW, STYLE_SOLID);
ここは、今回のインジケーターをラインにするのか矢印にするのかの設定になります。ラインの場合、「DRAW_LINE」と書きます。
SetIndexArrow(0, 233);
SetIndexArrow(1, 234);
この「233」「234」って数字が矢印の種類になります。
上記の表のように、矢印オブジェクトは矢印以外もいろいろとあります。
数字を変えると、自分が好きな矢印に変更できますよ。
6:メインの処理を書いていこう
メインのプログラムはこの部分い書いていきます。
OnCalculateの中は、価格が動く度に動作する部分になります。
double dRsiNow,dRsiBak;
for(int i=maxlimit; i>=1; i--){
dRsiNow = iRSI(NULL,0,14,PRICE_CLOSE,i);
dRsiBak = iRSI(NULL,0,14,PRICE_CLOSE,i+1);
arrEntUp[i] = EMPTY_VALUE;
arrEntDown[i] = EMPTY_VALUE;
if(dRsiBak <= 30 && dRsiNow >30){
arrEntUp[i]=Low[i];
}else if(dRsiBak >= 70 && dRsiNow <70){
arrEntDown[i]=High[i];
}
}
double dRsiNow,dRsiBak;
RSIの値を入れておく変数を用意します。
for(int i=maxlimit; i>=1; i--){
}
for文は繰り返し処理を行う際のプログラムになります。
maxlimitで設定した数字から、1つずつ確認して、矢印を表示するかどうかを決めていきます。
dRsiNow = iRSI(NULL,0,14,PRICE_CLOSE,i);
dRsiBak = iRSI(NULL,0,14,PRICE_CLOSE,i+1);
RSIの値を取得するにはiRSI関数を使用します。
iRSI(通貨ペア、時間、期間、計算方法、シフト)
通貨ペアのところは、NULLとすると設置したチャートの通貨ペアの値になります。
時間のところは、「0」とすると、設置したチャートの時間になります。
例えば1時間足の値が取得したい場合は「60」とします。
このあたりを変える事で、マルチタイムフレームのインジケーターが作れます。以下のnoteとかがそうですね。
はい、元に戻りますね。
「シフト」ってのが、何本前の値を取得するかになります。
今の足が0で、数字が大きいほど前になります。
ですので、for文で処理してるので、
現在の足が「i」だとすると、その時の一つ前の足は「i+1」になります。
arrEntUp[i] = EMPTY_VALUE;
arrEntDown[i] = EMPTY_VALUE;
この変数に値を入れると、矢印が表示されます。
矢印を表示しない場所には、「EMPTY_VALUE」というのを入れておきます。
「空だよ」って意味だと思って下さい。
if(dRsiBak <= 30 && dRsiNow >30){
arrEntUp[i]=Low[i];
}else if(dRsiBak >= 70 && dRsiNow <70){
arrEntDown[i]=High[i];
}
if(dRsiBak <= 30 && dRsiNow >30){
この部分が、
「一つ前が30以下で、今の足が30より大きかったら」
という条件になります。
「&&」が「かつ」って条件になります。
「||」とすると、「もしくは」って条件になります。
arrEntUp[i]=Low[i];
このarrEntUpに値を入れると、その場所に矢印が表示されます。
これは上矢印なので、Low(安値)をセットしてます。
下矢印はその逆の事をしてる感じになります。
7:プログラムを書いたらコンパイルしよう
プログラムを書いたら、上にある「コンパイル」ってボタンを押しましょう。何か間違っても、何も起きないので、安心して押して下さいね。
もしエラーがあったら、左下の赤枠のようにエラーが表示されます。
このerrorsってのが0にならないとインジケーターは完成しません。
エラーに表示された内容を確認して、修正してきましょう
エラーが全部解消すると、このような表示なります。
8:出来上がったインジケーターを見てみよう!
エラーがすべてなくなってコンパイルが終わると、
MT4のインジケーター一覧の中に、作ったインジケーターが表示されます!
初めてできた時に、感動したのを今でも覚えてます^^;
では、実際に表示してみましょう
条件通りに矢印が表示されてますね!!
9:まとめ
今回は、インジケーターの矢印サインのインジケーターの作り方に焦点をあてて書きました。
こうやって自分でインジケーターが作れるようになると、
自分が裁量でエントリーする際に、確認している内容をなどを盛り込んで
自分だけのインジケーターを作ると、エントリーが簡単になりますし、
エントリー精度も上がっていきますよ。
※インジケータの制作依頼も受けてます。
ココナラで数千円からインジケーターの開発依頼受けてます。
https://coconala.com/services/1305500
作って欲しいインジケーターがあれば、まずはご相談下さい(^^)