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

RSIEA決済注文のロジック MT4EA作成編第8回

前回ポジション作成部分について解説させていただきました。今回は決済部分についてです。決済注文のロジックも中身はシンプルです。

RSIEA決済注文のロジック変更内容確認

MT4 RSIEA決済

まずは、連載前半でやった決済のロジックの復習をしておきましょう。

 

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

 

この中で書いた決済ロジックはこうでした。

 

  • 買いポジション:RSI50を超えたら決済
  • 売りポジション:RSI50を割れたら決済

 

これをプログラムにするとこんな感じになります。

 

3、決済部分

 

*変更前
//買いポジションを決済する
if(pos > 0 && Close[2] >= FastLL && Close[1] < FastLL)

 

//売りポジションを決済する
if(pos < 0 && Close[2] <= FastHH && Close[1] > FastHH)

 

*変更後
//買いポジションを決済する
//if(pos > 0 && Close[2] >= FastLL && Close[1] < FastLL)
if(pos > 0 && Rsi1 >50 )//

 

//売りポジションを決済する
//if(pos < 0 && Close[2] <= FastHH && Close[1] > FastHH)
if(pos < 0 && Rsi1 < 50)//

決済注文部分の解説

この中で買いポジションのプログラム文はこうなっています。

 

if(pos > 0 && Rsi1 >50 )//

 

前回同様if文で決済するかどうかの判断をします。次の「pos > 0」の部分は現在買いポジションがあるかどうかの判断をしており0より大きい場合は、現在買いポジションがあるという判断になります。仮にポジションがゼロの場合は「pos = 0」となるので、このプログラム文は条件を満たさないのでスルーということになります。

 

「pos > 0」というのは買いポジションがあるという事になります。この後にRSI値で買いポジション決済をするかどうかの判断をします。「Rsi1 >50」というのは、RSI値が50を超えた状態であり、当初考えたロジック「RSI50を超えたら決済」と同じ意味となります。

 

この2つの条件を満たしたときに決済注文が実行されます。

 

決済注文を実行する文章がその次に続いています。

 

{
ClosePositions();
return(0);
}

 

これは、元EAの文章をそのまま使用します。簡単に解説を加えると、ClosePositions()という決済専用の注文関数があり、その文章をここで呼び出して決済を実行しています。

 

プログラム全体を見渡すとClosePositions()から始まる部分があるのに気づくと思います。そこが決済注文執行の具体的内容となります。。

 

売り注文も同様の流れになります。

RSI決済数値の変更も簡単

決済基準のRSI50を変更するのは簡単です。例えば、買い注文決済を50ではなく40に変更するのは数字を修正するだけです。ちなみに50を40にすると多くの場合以下の変化が起きます。

 

  • 勝率が上がる。
  • 1回あたりの利益が減る。

 

確実にこうなるわけではないのですが、RSI50タイプがよりも「利益は少なくコツコツ稼ぐタイプ」になる傾向があります。とはいえ、これも通貨ペアとバックテストをする期間で結果は違ってきます。

 

プログラムの変更に成功したら、この辺の数値をいじっていろんな通貨でバックテストをしてみてください。いろんな数値を変更してみることで新しいEA作成のアイデアが生まれることも多いです。

MT4EA作成編目次

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

 

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

2014/04/23


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

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