プログラムを短くする関数化 MT4EA作成編第22回

プログラムを短くする関数化 MT4EA作成編第22回

同じ動作をするEAでも作り手により、プログラムの内容はかなり違ってきます。無駄の無い短くてわかりやすいプログラムが組めるようになると、後日加工するときも楽です。今回は、プログラムを短くわかりやすくするテクニックである関数化について書かせていただきます。

変更対象4箇所

前回、「変更箇所を考えてみてください」とお願いしました。今回その続きをやらせていただきます。

 

私が変更対象とした部分は以下の4点です。

 

*その1 エントリー関数部分 22行目

 

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

 

*その2 HLバンドの計算 29行目

 

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

 

*その3 売買シグナル部分 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;

 

*その4 マジックナンバー 12行目

 

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

 

いかがでしたでしょうか。

 

前回「Breakout_Exp.mq4」を変更したときには5箇所だったのですが今回は4箇所だけです。しかも、最後のマジックナンバー部分はダブリがなければ変更不要ですので必ず変更しないといけないのは3箇所ということになります。

 

プログラムもこの間よりかなり短いですよね。前回のRSIEAは105行くらいあったのですが今回のRSIEAは78行です。かなりスッキリしている気がします。

 

プログラム文が少なくて済んでいるのは、豊嶋先生の関数化というテクニックによるものです。この関数化の考え方は、EAをちょっと加工したいときにとても便利なテクニックですので、少し説明させていただきます。

 

関数化の効果

豊嶋先生の「FXメタトレーダー実践プログラミング」の219ページに「トレード関数のライブラリー化」がまとめられています。簡単な加工になれてきたら、この部分をじっくり読み込むことをおすすめします。

 

今回使うEAは、豊嶋先生の独自関数を使うことでプログラム全体が短く、そしてわかりやすくなっています。このEAを動かすには豊嶋先生のEAをダウンロードした際に一緒に入っている「MyLib.mq4」をコンパイルして作成される「MyLib.ex4」が必要になります。

 

参考:コンパイルの仕方

 

既に質問頂いているのですが、EA単独では動かないのでご注意ください。

 

よく使うプログラム文は関数化しておくと便利です。どのプログラムでも簡単に取り入れていけるようになるからです。私もよく使うプログラムは関数化してあります。

 

  • 連敗防止フィルター
  • 休みフィルター
  • EMAでトレイリングストップ決済
  • 一目均衡表でのトレイリングストップ決済

 

どれも一見有効に機能しているように見えるのですが、たまにバグがみつかります。こういう応用系のプログラムを公開するのは、私の技術がもっと向上してからということになりそうです。この関数化にはEAの運用成績を向上させる効果もあります。

 

EA作りをしていくと「このEAはこうしたら成績が良くなるんじゃないの?」ということが必ず出てきます。

 

例えば、2勝8敗のパターンで利益が出るEAがあったとします。

 

バックテストの結果、連勝することはほとんどないことがわかったら、皆さんならどう考えるでしょうか?

 

「勝ちトレードの後は少し休ませたらいいんじゃない?」

 

こういう発想で作ったのが「連敗防止フィルター」です。この関数は、連敗が多いタイプのEAにくっつけてみることで運用成績が大幅に向上させることもあります。こういうアイオデアを関数化しておくことで、その後のEA作りのバリュエーションも大きく拡がります。

 

皆さんも、こういうちょっと変更したくなったときにその部分だけ関数化しておくと他のEAでも使い回しができるようになります。

 

ちなみに、連敗防止フィルターに限らず、作ったけど効果が微妙なものもかなりあります。こういうのも一般の商品開発と似たようなところがあります。一つのヒット作品をつくるためにいろんな商品開発を行い市場に投入して効果を図るようなものです。

 

EA作りも沢山の駄作を作っていくなかで良い物ができていくのだろうと思っています。有効でなければすぐに外せるのも関数化のメリットでもあります。

MT4EA作成編目次

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

 

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

2014/06/16 08:47:16
このエントリーをはてなブックマークに追加   
記事が気に入ったらよろしかったらポチッと押してください。
にほんブログ村 為替ブログ FX スワップ・長期投資派へ
にほんブログ村

お気楽FX 相場生活入門について

当サイト記事はメルマガ連載記事を再編集しながら作成しております。FXメールマガジンは2004年より発行中です。お陰さまで発行回数2000回を超えました。登録・解除無料です。実際の運用状況を公開しながら、解説をしていく実践しやすいスタイルです。中長期で資産を増やし続けていきたい方向けです。

相場生活入門 まぐまぐページ


posted by 。mail:info@han-rei.com

FX はじめ方 初心者向け 外貨両替 MT4 キャッシュバック