見出し画像

【MT4】矢印サインを表示する自作インジケーターの作り方(RSIサイン)

矢印サインを表示するインジケーターの作り方の基本を記事にしたいと思います。

RSIが30より下から上に抜けたら上矢印
RSIが80より上から下に抜けたら下矢印

を表示するインジケーターを作りながら説明していきたいと思います。

1:MetaEditorを起動する

インジケーターを作成する為のツールがMT4には標準でついています。

画像1

MT4の上記のボタンを押します。

2:MetaEditorで新規作成する

すると以下のようなソフトが起動します。

画像2

この画面が、EAやインジケーターのMQLプログラムを作成する画面になります。

今回は、新しくインジケーターを作成するので、「新規作成」ボタンを押します。

画像3

インジケーターを作成しますので、2番目の「カスタムインジケータ」を選択して、「次へ」ボタンを押します。

画像4

作成するインジケーターの名前を矢印のところに記入します。
インジケータの名前は自分が持っているインジケータと同じ名前でなければ、好きな名前をつけて大丈夫です

今回は「I_test」って名前にしたいと思います。

画像5

名前を入れた「次へ」を押します。

画像6

この画面を変更する事は、ほぼないと思ってよいので説明も省略します。
今まで何十ってインジケータ作ってきましたが、ここを変えた事はありません。「次へ」を押します。

画像7

ここも同じくそのままで「完了」を押します。

3:プログラムをファイルに書いていこう

画像8

完了を押すと、上記のような画面が出てきます。

すでにいろいろ書いてあって、「えっ!」って思うかもしれませんが、安心して下さい。

4:変数を宣言しよう!

まずは、今回のインジケーターで使う変数を宣言しましょう。
変数ってのは、値を入れおく箱みたいなものです。

プログラム全体で使う変数は、int OnInit() ってところより上に書いていきます。

画像9

この部分ですね。

 #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:初期化処理を書いていこう

画像10

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:メインの処理を書いていこう

画像12

メインのプログラムはこの部分い書いていきます。

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:プログラムを書いたらコンパイルしよう

画像13

プログラムを書いたら、上にある「コンパイル」ってボタンを押しましょう。何か間違っても、何も起きないので、安心して押して下さいね。

もしエラーがあったら、左下の赤枠のようにエラーが表示されます。
このerrorsってのが0にならないとインジケーターは完成しません。

エラーに表示された内容を確認して、修正してきましょう

画像14

エラーが全部解消すると、このような表示なります。

8:出来上がったインジケーターを見てみよう!

画像15

エラーがすべてなくなってコンパイルが終わると、
MT4のインジケーター一覧の中に、作ったインジケーターが表示されます!

初めてできた時に、感動したのを今でも覚えてます^^;

では、実際に表示してみましょう

画像16

画像17

条件通りに矢印が表示されてますね!!

9:まとめ

今回は、インジケーターの矢印サインのインジケーターの作り方に焦点をあてて書きました。

こうやって自分でインジケーターが作れるようになると、
自分が裁量でエントリーする際に、確認している内容をなどを盛り込んで
自分だけのインジケーターを作ると、エントリーが簡単になりますし、
エントリー精度も上がっていきますよ。

※インジケータの制作依頼も受けてます。
ココナラで数千円からインジケーターの開発依頼受けてます。
https://coconala.com/services/1305500
作って欲しいインジケーターがあれば、まずはご相談下さい(^^)

この記事が気に入ったらサポートをしてみませんか?