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

30分でできるRSI MT4EA作成編 第5回

前回、EAの変更箇所を確認しました。今回は実際に書き換えていきましょう。詳細解説は次回行いますので、まずは書き換えてコンパイルしておきましょう。このやり方になれてしまえば所要時間は30分もかかりません。

変更箇所を書換え

前回記事基本EAの変更箇所確認で指摘した事項1〜5をそれぞれ以下のように書き換えてみて下さい。

 

指標の計算

 

*元の文章

//指標の計算
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

 

買いシグナル 売りシグナル

79行目と86行目のif〜から始まる買いシグナルと売りシグナルを出す部分です。

 

*変更前

//買いシグナル
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

 

決済部分

 

*変更前

//買いポジションを決済する
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)//

 

マジックナンバー

 

*変更前

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

 

*変更後

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

 

パラメーター

 

*変更前

//パラメーター
extern int Fast_Period = 20;
extern int Slow_Period = 40;

 

*変更後

//パラメーター
//extern int Fast_Period = 20;
//extern int Slow_Period = 40;
extern int Rsi_Period = 14;//

 

変更後のプログラムを見て気づくかもしれませんが、変更前の文章は”//”をつけ残してあります。これはコメントアウトと呼ばれています。コメントアウトについてはこのページの下の方で紹介しています。

 

参考:「MT4で文字化け」したら読む記事

 

”//”の後は何を書いても自由でプログラムの動作に影響を与えません。ここに前のプログラム文を残しておくことで、加工後にうまく動かないときなど元に戻すのも簡単です。

 

ここまでの作業、慣れてくると30分もかかりません。or

errorとwarningの違い

5箇所の変更が終わったらコンパイルをします。

 

参考:MT4コンパイルの意味と手順

 

以上のように書き換えてからコンパイルしてエラーが出なければOKです。コンパイル後に出てくる警告には「error」と「warning」があります。この2つの取扱いは大きく違います。

 

*error
修正しないと動かない

 

*warning
修正しなくても動く。ただし、正確に動いているのかどうかは微妙なこともある。

 

errorが出た場合は、修正しないとプログラムは動きませんので対応が必要になります。プログラム専門家によると、warningも出来るだけ解決した方が良いそうです。

 

このwarningのほとんどは、先日のMT4大幅バージョンアップで出るようになったものです。バージョンアップ前は普通に動いていたものが、動かなくなってしまったものも多いようです。今回の変更でも、warningがでることがあるのですが、今のところ動作には問題なさそうなのでそのままにしておきます。

 

正直、私の今の力では修正できないwarningが沢山あります。この点については、近いうちにwarning解決に取り組むつもりでいます。

エラーが出た場合

エラーが出た場合は、以下の2つをまず確認してみてください。

 

  • 書き換え文章にミスはないか。
  • 全角で入力をしている部分はないか。

エラーが出たときは、どの行がエラーかを指摘してくれます。でも、原因がその行にあるとは限りません。エラーと指摘されている文章がおかしいのは、その前段階の文章がおかしいということがよくあるためです。エラーと指摘された文章とその前の部分を中心に確認してみてください。

 

特に”(”と”)”や”;”などは漏らしがちです。

 

それと、半角と全角の入力ミスもよくあります。これも、ローマ字だけでなく”;”なども半角入力でなkればいけません。この全角と半角のミスはなかなか気づけないもののひとつです。

 

エラーを修正することをデバックといいます。デバック作業は、自作EA作りでは非常に重要な作業となります。今回エラーが出たら良いチャンスですので頑張ってみてください。

MT4EA作成編目次

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

 

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

2014/04/14


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

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