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ロジックにそって作ってあります。
このページ「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を手軽につくるやり方をまとめました。
- 第1回MT4EA作成編 RSIEAの簡単な作り方
- 第2回手順その2 EAの売買ロジックを考える
- 第3回手順その3:EA加工前の準備 EAコピーの仕方
- 第4回基本EAの変更箇所確認
- 第5回30分でできるRSI MT4EA作成編
- 第6回MT4組み込みテクニカル指標関数の使い方
- 第7回MT4でRSIEAを作る 売買シグナル部分
- 第8回決済注文プログラムはたった1行
- 第9回マジックナンバーとRSIEA検証行
- 第10回パラメーターと変数化の効果
- 第11回RSI設定使い方 3つのパターン
- 第12回RSIエグジット戦略とは
- 第13回RSIスキャルピングにも使えるこの応用形
- 第14回RSI20 RSI80の検証
- 第15回RSIの使い方 3つのポイント
- 第16回過剰最適化(カーブフィッティング)の話
- 第17回最適化はカミソリ 大怪我しないためのポイント
- 第18回RSIEA無料配布と留意点
- 第19回決済を値幅指定
- 第20回ブレイクアウトMT4無料EA検証
- 第21回EA作成早期習得のための2つのポイント
- 第22回プログラムを短くする関数化
- 第23回「Breakout1SL1.mq4」をRSI値幅決済EAへ書換え
- 第24回コメントアウト MT4でも大切な理由
- 第25回EA解説後半 EA作成上達のコツ
- 第26回RSI値幅決済EA 短期売買向
- 第27回改造EAの面白いところ
- 第28回Breakout1TS1.mq4 1粒で三度おいしい無料EA
- 第29回大量売買防止方法
- 第30回MT4運用失敗の必然性に気づく
- 第31回最適化して最高成績を選ぶ愚
- 第32回MT4 PF(プロフィットファクター)
- 第33回MT4バックテスト 私の使い方
- 第34回MT4ファンのMT4口座比較方法
- 第35回裁量トレードの方が優秀に見える理由
- 第36回MT4最初の壁「夢の過剰最適化」
- 第37回MT4で儲からないことで目覚めた