MT4でRSIEAを作る売買シグナル部分 MT4EA作成編第7回
既存EAに手を加えて自作EAを作る解説の2回目です。前回は、RSIの売買判断の数値計算部分についてやりました。
今回は、RSIEAの売買判断部分です。前回のプログラムでRSI数値計算を行いました。今回はそれに基づいて売買判断をします。売買判断といっても、内容はとてもシンプルです。
では、はじめましょう。
RSIEA 売買シグナル部分の解説
書き換えた内容をまずは確認しておきましょう。
2、買いシグナル 売りシグナル
*元の文章
//買いシグナル
if(pos <= 0 && Close[2] <= SlowHH && Close[1] > SlowHH)
//売りシグナル
if(pos >= 0 && Close[2] >= SlowLL && Close[1] < SlowLL)
*書換後の文章
//買いシグナル
//if(pos <= 0 && Close[2] <= SlowHH && Close[1] > SlowHH)
if(pos <= 0 && Rsi2 >= 30 && Rsi1 < 30)//buy
//売りシグナル
//if(pos >= 0 && Close[2] >= SlowLL && Close[1] < SlowLL)
if(pos >= 0 && Rsi2 <= 70 && Rsi1 >70)//sell
元の文章は、ブレイクアウトの売買判断のものですのでここでは解説は割愛させていただきます。まずは買いシグナルからプログラムを確認してみましょう。
RSI買いシグナル文の内容
RSIの買いシグナルはこの1文でできています。
if(pos <= 0 && Rsi2 >= 30 && Rsi1 < 30)//buy
この文章は、前に考えてあった売買ロジックをプログラムにしたものです。if文というのは、「もし〜ならこう行動して下さい」という意味のよく使う命令文です。今回「こう行動してください」は、この次に続く注文部分を指しています。注文部分は、変更なしでそのまま使います。
ifの次に続く「pos <= 0」というのは「買いポジションがあるかどうか」を確認している部分です。これも元の文章のまま使います。
問題はその次ですね。
Rsi2 >= 30 && Rsi1 < 30
ここがRSI買い判断をする部分です。ここの解説をする前に先日の復習をしておきましょう。
ここでの買いロジックはこうでした。
- 2本前のRSI値 >= 30
- 1本前のRSI値 < 30
前回「Rsi2=2本前のRSI値」であり「Rsi1=1本前のRSI値」だと説明したのを覚えておいでかと思います。これをそのまま置き換えたのが今回のプログラム文です。
- Rsi2 >= 30
- Rsi1 < 30
この2つを&&(&&=and)でつないでいます。2つの条件を満たすときのみ買い注文が発生するという意味です。
こう書いてもよくわからないかもしれませんね。ここは、数字を入れてみるとわかりやすくなります。
RSIは、相場が下落するとRSI値も下がる傾向にあります。例えば、米ドル円が102円→101.5円→101円という具合に下がってくるとRSI値も下がるという具合です。例えば以下のようにRSI値が推移したとします。
- 2本前のRSI値(Rsi2)=35
- 1本前のRSI値(Rsi1)=32
この状況を先ほどのプログラム文に当てはめるとこうなります。
- Rsi2 >= 30
- Rsi1 >= 30
最初のRsi2 >= 30は条件クリアしていますが、次のRsi1 < 30は条件クリアしていませんね。そのため、このケースでは買い注文は発生しません。
では、こうなるといかがでしょう。
- 2本前のRSI値(Rsi2)=35
- 1本前のRSI値(Rsi1)=29
これだと状況が大分違ってきます。先ほど同様にプログラム文に当てはめるとこうなります。
- Rsi2 >= 30
- Rsi1 < 30
if(pos <= 0 && Rsi2 >= 30 && Rsi1 < 30)//buy
このプログラム文の両方の条件を満たしていますよね。この場合は、次の買い注文のプログラム文に進むことになります。
前々回で書き換えたプログラム全文をみて頂くとこの文の次にこうなっているはずです。
ClosePositions();
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"",MAGIC,0,Blue);
return(0);
ここは書き換えていないので元の文章のままです。
OrderSendで始まる文章が確認できると思います。これが、注文を出す命令文です。if文の条件を満たすとこの注文が執行されることになります。
売り注文はその逆
売り注文部分も先ほどの買い注文と仕組みは同じです。RSI売り注文発生の売買ロジックはこうでした。
- 2本前のRSI値 <= 70
- 1本前のRSI値 > 70
買い注文同様に、プログラム文に置き換えるとこうなります。
if(pos >= 0 && Rsi2 <= 70 && Rsi1 >70)//sell
そして、この条件を満たすと先ほど同様に売り注文が執行されることになります。
ClosePositions();
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"",MAGIC,0,Red);
return(0);
OrderSend文が確認できますね。( )内にも注目してみてください。似たような文章ですがちょっと違っています。買い注文のときは「OP_BUY」売り注文のときは「OP_SELL」となっていますよね。
- OP_BUY = 買いの成行注文
- OP_SELL= 売りの成行注文
指値注文にしたいときは、この部分を変更します。ただ、指値注文にするために変更するのはこの部分だけではありません。意欲のでてきた方は、豊嶋先生の本と格闘して挑戦してみるとよいと思います。
今回は、単純なやり方をご紹介するのが目的なので、その部分はやりません。
これで、RSIの注文が出せるようになりました。
ポジションを作った後は、決済ですね。
まとめ
この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で儲からないことで目覚めた