当ページは、アフィリエイト広告を含みます。

MT4組み込みテクニカル指標関数の使い方 iRSI編 MT4EA作成編 第6回

前回記事30分でできるRSI MT4EA作成編では、ブレイクアウトEAをRSIに変更するための全変更点をまとめて紹介しました。

 

変更点の入力が終わりコンパイルしてエラーが出なくなったらあとは、EAとして動く準備が整います。あとは、バックテストをして稼動させる通貨ペアと時間足を選べば稼動させることができます。とはいえ、これでプログラムが万全というわけではありません。コンパイルでエラーが出なくても、うまく動かないときもあります。そもそものプログラムのロジックが間違っているときなどは、コンパイルはOKでもうまく動かなかったりするのです。

 

連載で何度か書いていますが、そういう想定*外の事態に備えて自作EAを稼動させるときは、まずデモで稼動させる様にしてください。これは、EA技術が未熟な最初のうちは必須事項です。

 

今回より変更点の解説をさせていただきます。変更部分についての理解を深めておくことで、RSI以外のEA作りも簡単になります。

 

では、はじめましょう。

RSI知識無くても心配無用

まず、指標計算部分です。今回のプログラム変更では以下のように変更しました。

 

1、指標の計算

 

*元の文章
//指標の計算
double SlowHH = Close[iHighest(NULL,0,MODE_CLOSE,Slow_Period,2)];
double SlowLL = Close[iLowest(NULL,0,MODE_CLOSE,Slow_Period,2)];
double FastHH = Close[iHighest(NULL,0,MODE_CLOSE,Fast_Period,2)];
double FastLL = Close[iLowest(NULL,0,MODE_CLOSE,Fast_Period,2)];

 

*書換え後の文章
//指標の計算
//double SlowHH = Close[iHighest(NULL,0,MODE_CLOSE,Slow_Period,2)];
//double SlowLL = Close[iLowest(NULL,0,MODE_CLOSE,Slow_Period,2)];
//double FastHH = Close[iHighest(NULL,0,MODE_CLOSE,Fast_Period,2)];
//double FastLL = Close[iLowest(NULL,0,MODE_CLOSE,Fast_Period,2)];
double Rsi1 = iRSI(NULL,0,14,PRICE_CLOSE,1);//RSI
double Rsi2 = iRSI(NULL,0,14,PRICE_CLOSE,2);//RSI

 

もともと、以下の4文がブレイクアウトEAの売買判断に必要な数値を計算していました。

 

double SlowHH = Close[iHighest(NULL,0,MODE_CLOSE,Slow_Period,2)];
double SlowLL = Close[iLowest(NULL,0,MODE_CLOSE,Slow_Period,2)];
double FastHH = Close[iHighest(NULL,0,MODE_CLOSE,Fast_Period,2)]; 
double FastLL = Close[iLowest(NULL,0,MODE_CLOSE,Fast_Period,2)];

 

この内容の解説は豊嶋先生の「FXメタトレーダー入門」の中にあるのでここでは省きます。これをRSIの売買判断に必要な計算式にするのは簡単です。この4文に置き換えて、以下の2文を使えばできます。

 

double Rsi1 = iRSI(NULL,0,14,PRICE_CLOSE,1);//RSI
double Rsi2 = iRSI(NULL,0,14,PRICE_CLOSE,2);//RSI

 

「Rsi1」と「Rsi2」はこのEAで使う変数です。この変数名は好きな名前をつけていただいてかまいません。この変数は、数回前の連載で考えたRSIロジックにそって作ってあります。

 

参考:手順2 EAの売買ロジックを考える

 

このページ「MT4のプログラムに翻訳」の中で買いポジションを作るロジックとして以下のように書きました。

 

  • 2本前のRSI値 >= 30
  • 1本前のRSI値 <  30

 

「RSIが30割れたら買い」は、プログラム上こう書きます。今回のプログラムは、この「2本前のRSI値」日本語部分を変数として置き換えています。

 

  • Rsi1 = 1本前のRSI値
  • Rsi2 = 2本前のRSI値

 

プログラムのこの部分では、Rsi1とRsi2の数値計算だけをしています。

 

数値計算をした上で、その数値が30より高いか低いかを比較していくことになります。比較する部分は次回やります。ここでは「数値計算のみ行っている」ということを押さえておいてください。

 

ちなみに、Rsi1の前にあるdoubleは小数点も発生する変数を使うときのお決まり単語です。整数だけのときは「int」を使います。ここは、こういうものだと覚えておきましょう。

組み込みテクニカル指標関数を使う

では、プログラムに戻りましょう。

 

Rsi1 = iRSI(NULL,0,14,PRICE_CLOSE,1);

 

この部分で「Rsi1 =」の先によくわからない文が続いていますね。

 

iRSI(NULL,0,14,PRICE_CLOSE,1)

 

この文章はRSIの計算をしてくれる式です。RSIには、決まった計算式があります。でも、その計算式をいちいちプログラムで作る必要はありません。主要なテクニカル指標は、こういう形で簡単に計算ができます。このiRSI()のような関数を「組み込みテクニカル指標関数」と呼びます。

 

iRSI(NULL,0,14,PRICE_CLOSE,1)は、以下のような仕組みになっています。

 

iRSI(通貨ペア名,時間枠,期間,適用価格,何本前)

 

各項目の内容はこうです。

 

項目名

内容

通貨ペア名

通貨ペアを指定するときには各通貨ペア名を入れる。いろんな通貨ペアで動かせるようにしておくときは「NULL」としておきます。

時間枠

使う時間足の指定。1分足〜月足まで設定可能。特に指定しない場合は”0”とする。

期間

RSIの計算期間の指定をする。RSIは通常14なのでここでは14で指定しています。

適用価格

RSI計算をするときに使う値を指定します。終値であれば,PRICE_CLOSEとなります。

何本前

1は1本前のRSI、2は2本前のRSI値となります。

この設定だけでRSIを使うことができます。

 

MT4には、こういう形で簡単に使える「組み込みテクニカル指標関数」が多数用意されています。ボリンジャーバンドやCCIや勢力指数なども、同様の形で簡単な設定だけで使用できてしまいます。

 

RSIは、もともと計算式が単純なので自分で計算式を作ってもそれほど手間はかからないかもしれません。でも、計算式が複雑なテクニカル指標は沢山ありますので、この「組み込みテクニカル指標関数」を利用することでプログラムが簡単になります。

 

今回のEAでは、こういう感じでRSI値の計算をしています。この計算結果を元に、売買判断をしていくことになります。次回は、その売買判断部分について解説させていただきます。

MT4EA作成編目次

EAを手軽につくるやり方をまとめました。

 

MT4 自動売買関連記事まとめページへ戻る

2014/06/19


記事がお気に召しましたら、共有・拡散お願いします。

このエントリーをはてなブックマークに追加   
TOPへ