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

超簡単 「Breakout1SL1.mq4」をRSI値幅決済EAへ書換え MT4EA作成編第23回

「Breakout1SL1.mq4」をRSI値幅決済EAに書き換え開始です。1回目のときに比べて変更点は少ないので手間はかからないと思います。

EA書換え

前回書いた4つの変更箇所を一挙に変更していきます。以下のように書き換えてみてください。変更する場合は、オリジナルEAの書換え防止のためコピーからはじめます。

 

コピーのやり方で混乱したら過去記事を参考にしてみてください。

 

参考:EA加工前の準備 EAコピーの仕方

 

前回のEA変更と同じ手順でやっていきます。

 

エントリー関数部分 22行目

 

// エントリー関数
extern int HLPeriod = 20;  // HLバンドの期間...1

 

変更後

// エントリー関数
//extern int HLPeriod = 20; // HLバンドの期間...1

 

HLバンドの計算 29行目

 

// HLバンドの計算
double HH2 = iCustom(NULL, 0, "HLBand", HLPeriod, 1, 2);
double LL2 = iCustom(NULL, 0, "HLBand", HLPeriod, 2, 2);

 

変更後

// HLバンドの計算
//double HH2 = iCustom(NULL, 0, "HLBand", HLPeriod, 1, 2);
//double LL2 = iCustom(NULL, 0, "HLBand", HLPeriod, 2, 2);

 

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

 

売買シグナル部分 33行目

 

int ret = 0;
// 買いシグナル
if(pos <= 0 && Close[2] <= HH2 && Close[1] > HH2) ret = 1;
// 売りシグナル
if(pos >= 0 && Close[2] >= LL2 && Close[1] < LL2) ret = -1;

 

変更後

int ret = 0;
// 買いシグナル
//if(pos <= 0 && Close[2] <= HH2 && Close[1] > HH2) ret = 1;
if(pos <= 0 && Rsi2 > 30 && Rsi1 < 30) ret = 1;//....3
// 売りシグナル
//if(pos >= 0 && Close[2] >= LL2 && Close[1] < LL2) ret = -1;
if(pos >= 0 && Rsi2 < 70 && Rsi1 >70) ret = -1;//....3

 

マジックナンバー 12行目

 

// マジックナンバー
#define MAGIC 20094071

 

変更後

// マジックナンバー
//#define MAGIC 20094071
#define MAGIC 20140609//....4

 

書き換え終えたら以下の手順でEAが無事に動くかどうか確認してみてください。

 

  1. コンパイルしてエラーなし
  2. バックテストして売買成績が表示されるのを確認

 

これを書き換えてコンパイルしてエラーが出なければまずは成功です。その後に、いつも使っている通貨ペアでバックテストをして売買ができているかどうかの確認をします。

 

バックテストまでしておくことで、そのプログラムが正常に稼動するかどうか大体わかります。ちなみに、コンパイル上エラーがでなくてもバックテストをしてみて売買結果がゼロになることがあります。これには3つくらいの理由が考えられます。

 

  1. もともと売買が滅多に発生しないEA
  2. バックテストの元になるデータがMT4に入っていない。
  3. EAプログラムで売買ができるプログラムになっていない。

 

1は売買がなくても問題はありません。2については該当通貨ペアのヒストリーデータをMT4にダウンロードすることでほぼ解決します。

 

問題は3です。

 

これ、私のような初学者は混乱する部分です。私はこう理解しています。道路に例えてみるとわかりやすいかもしれません。

 

「新しい道路を作り開通させた。ところが車が全然こない。調べてみると途中で通行止めをしたり信号異常などで車がこの道路に入ってこれないことがわかった。」

 

 

この例えは都会の人にはわからないかもしれませんね。私の育った町は国道が2本しか走っていないので1本止められると全く車が走ってこない地域が発生するような状況でした(汗)。

 

この辺は、EA作りで実際に経験すると思います。

 

例えば、RSIの売買シグナル計算がうまく出来ていなかったり、売買注文や決済注文が機能していなかったりすることがあります。

 

こういう状況になったときに、EAを直すことをデバックというのですが、EA内容をチェックしながらおかしな部分を見つけて修正していく作業をします。

 

このデバック作業に取り組むようになると、EA作成能力が格段に向上します。皆さんも、そのレベルまでいったら諦めずに頑張ってみてください。

 

今回のEA書換えでは問題ないとは思いますが、今後の課題として書かせていただきます。

MT4EA作成編目次

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

 

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

2014/06/18


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

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