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;//
変更後のプログラムを見て気づくかもしれませんが、変更前の文章は”//”をつけ残してあります。これはコメントアウトと呼ばれています。コメントアウトについてはこのページの下の方で紹介しています。
”//”の後は何を書いても自由でプログラムの動作に影響を与えません。ここに前のプログラム文を残しておくことで、加工後にうまく動かないときなど元に戻すのも簡単です。
ここまでの作業、慣れてくると30分もかかりません。or
errorとwarningの違い
5箇所の変更が終わったらコンパイルをします。
以上のように書き換えてからコンパイルしてエラーが出なければOKです。コンパイル後に出てくる警告には「error」と「warning」があります。この2つの取扱いは大きく違います。
*error
修正しないと動かない
*warning
修正しなくても動く。ただし、正確に動いているのかどうかは微妙なこともある。
errorが出た場合は、修正しないとプログラムは動きませんので対応が必要になります。プログラム専門家によると、warningも出来るだけ解決した方が良いそうです。
このwarningのほとんどは、先日のMT4大幅バージョンアップで出るようになったものです。バージョンアップ前は普通に動いていたものが、動かなくなってしまったものも多いようです。今回の変更でも、warningがでることがあるのですが、今のところ動作には問題なさそうなのでそのままにしておきます。
正直、私の今の力では修正できないwarningが沢山あります。この点については、近いうちにwarning解決に取り組むつもりでいます。
エラーが出た場合
エラーが出た場合は、以下の2つをまず確認してみてください。
- 書き換え文章にミスはないか。
- 全角で入力をしている部分はないか。
エラーが出たときは、どの行がエラーかを指摘してくれます。でも、原因がその行にあるとは限りません。エラーと指摘されている文章がおかしいのは、その前段階の文章がおかしいということがよくあるためです。エラーと指摘された文章とその前の部分を中心に確認してみてください。
特に”(”と”)”や”;”などは漏らしがちです。
それと、半角と全角の入力ミスもよくあります。これも、ローマ字だけでなく”;”なども半角入力でなkればいけません。この全角と半角のミスはなかなか気づけないもののひとつです。
エラーを修正することをデバックといいます。デバック作業は、自作EA作りでは非常に重要な作業となります。今回エラーが出たら良いチャンスですので頑張ってみてください。
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で儲からないことで目覚めた