カスタムインジケーター(Coutom Indicator)の作り方

人気ブログランキングへ 現在62位!もし10位以内にランクインしたら感謝の気持ちを込めて、トレコミュユーザーにに何かお返しをしたいと考えていますので応援お願いします!(中居犬

Mr.Brainです。

僕 Mr.Brain 製作の自動売買EA「クロスファイアFX」が、とても反響を頂いております。ありがとうございます。「クロスファイアFX」については、下記のページで詳しく解説していますので、興味のある方はご覧ください。

「クロスファイアFX」の紹介はこちら
「クロスファイアFX」の特典「約定通知メールアプリOrderAutoAlart」紹介はこちら
「クロスファイアFX」の特典「EURCHF無料EA」紹介はこちら
「クロスファイアFX」に関するよくある質問と回答はこちら

さて、今日はメタトレーダー4(MT4)のプログラミングのお話をしたいと思います。

トレコミュ掲示板でも、最近メタトレーダー4(MT4)のプログラミングの話題がちらほら出始めましたね。メタトレーダー4(MT4)はチャートソフトとしても、とても優秀ですが、やはり、その機能を十分に発揮するには、やはりプログラミングできる事が一番です。

プログラミングできれば、自分の思い描くオリジナルのカスタムインジケーター(Coutom Indicator)を作ったり、自動売買のEAを作ったりもできます。

なので、コラムを読んで頂いている読者の皆さんが、メタトレーダー(MT4)でプログラミングできるように、メタトレーダー4(MT4)のプログラミングの解説していきたいと思います。

では、まず初回の今日は、カスタムインジケーター(Coutom Indicator)の構造についてお話します。

カスタムインジケーター(Coutom Indicator)とは、通称インジケーターと呼ばれ、オリジナルの指標を表示するプログラムです。一つの通貨ペアのチャートに複数のインジケーターを組み込む事ができます。インジケーターは、独自の計算による算出した結果を元にラインやバークグラフを表示したり、売買シグナルを表示したりできます。また、このインジケーターの結果を元に、Expert Advisorで読み込んで自動売買を行う事ができます。

メタトレーダー4(MT4)のプログラミングを憶えるには、まず、このカスタムインジケーター(Coutom Indicator)を憶える事が近道です。カスタムインジケーター(Coutom Indicator)を作る事ができれば、そのカスタムインジケーター(Coutom Indicator)の結果を取り出して自動売買する事ができますので、EAの構造もシンプルになり、また、デバックも非常に簡単です。

カスタムインジケーターの構造は、以下のようになっています。

初期設定

プログラムの説明、著作権表記、リンク
指標の表示場所の宣言
指標バッファの宣言
パラメーターの宣言

イニシャル処理

指標バッファの設定

メイン処理

指標の計算
指標の表示

さて、それぞれの処理について、順番に説明しますね。

初期設定

プログラムの説明
プログラムの説明をコメントで記述します。書式はどのような形でも構いません。作った本人が分かるように自由に書いてください。また、必要なければ書かなくとも構いません。

著作権表記
プログラムの著作権の記述をします。必要なければ書かなくとも構いません。

リンク
プログラムを公開するホームページやブログがあれば、そのURLを記述をします。必要なければ書かなくとも構いません。

指標の表示場所の宣言
指標を表示する場所を宣言します。チャートが表示されている場所はチャートウィンドー、また、チャートの下に分割された別のウィンドーに表示する場合には、セパレーターウィンドーとします。

指標バッファの宣言
チャート上で表示する、ラインやバーの数を指定します。メタトレーダー4(MT4)では、一つのカスタムインジケーター(Coutom Indicator)で8つのラインやバーを表示させる事ができます。

パラメーターの宣言
プログラムで使用するパラメーターを宣言します。パラメーターは、外部パラメーターと内部パラメーターがあります。外部パラメーターは、プロパティー画面から変更できるパラメーターで、内部パラメーターは、プログラム中だけで使用するもので変更できません。

イニシャル処理

指標バッファの設定
指標バッファの設定をします。8つの指標バッファ毎に、名称、ラインの色、太さを設定します。

メイン処理

指標の計算
指標を計算する処理を行います。メタトレーダーで標準のテクニカル指標であれば専用の関数がありますからとても簡単です。

指標の表示
計算した数値を実際に指標バッファにセットします。

以上が、カスタムインジケーター(Coutom Indicator)の構造です。言葉では難しく感じるかもしれませんが、実際に作ってみるととても簡単です。

まず、手始めとして、一番馴染みの深い、移動平均線を表示するプログラムを下記に示します。
//——————————————————————-
// プログラムの説明
//
// プログラム名:SampleInd001.mq4
// 説明    :トレコミュ用サンプルインジケーター
//        単純移動平均線
//——————————————————————-
#property copyright “Copyright(C) 2010, Forex Trading Laboratory”
#property link      “http://t-commu.net/blog/t012/

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red

double BufSMA[];

extern int SMAPeriod = 21;

//——————————————————————–
// イニシャル処理
//——————————————————————–
int init()
{
   SetIndexBuffer(0, BufSMA);
   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 1);
   SetIndexLabel(0,”21SMA”);

   return(0);
}

//——————————————————————–
// メイン処理
//——————————————————————–
int start()
{
   //指標の計算範囲
   int counted_bars=IndicatorCounted();
   int limit=Bars-1-counted_bars;

   for(int i=limit-1; i>=0; i–)
   {
      BufSMA[i] = iMA(NULL,0,SMAPeriod,0,MODE_SMA,PRICE_CLOSE,i);
   }

   return(0);
}

//——————————————————————–

あえて簡単だと思っていただけるように、シンプルに作ってみました。たった一つ移動平均線を描くだけなら、たったこれだけのプログラムで済んでしまうんですね!

このプログラムを実際にチャートで表示してみました。

単純移動平均線

単純移動平均線

 

無事移動平均線が事表示されました。

実際のプログラムの解説は、次回のコラムで説明させて頂きますが、まずは、とても簡単だという事が今回分かっていただければいいかと思います。プログラムっていっても、そんなに構える必要もありませんし、決まった流れにそって同じように作るだけなんです。なので、興味があればぜひチャレンジして頂きたいと思います(^^)

それでは、次回もお楽しみに!

脱毛 東京 レーザー脱毛

タグ: , , , , , ,

コメント / トラックバック5件

  1. みぃ より:

    こんなに簡単に移動平均線が実装できるんですね!
    自分でもインジケーター作成→EA作成ができるようになりたいので、ワクワクしながら今日の記事を読ませていただきました。
    これからも期待しています!どうぞよろしくお願いいたします。

    ところで、「クロスファイアFXの良くある質問と回答」への私のコメントに対して、返コメントをいただいているようなのですが、読めないのですが・・・・(><)。 恐れ入りますが、ご確認をお願いいたします。

  2. 012 より:

    みぃさん

    こんにちは、Mr.Brain です。

    いつもコラムを訪問いただき誠にありがとうございます。m(_ _)m

    プログラミングに興味を持っていただくと僕も嬉しいです。

    僕のコラムをきっかけに、素晴らしい成績のEAができる事を期待していますので、ぜひ頑張ってくださいね!(^^)

    さて、先回のご質問に関しては、調査しておりますので、もう暫くお返事をお待ちください。

    どうぞ宜しくお願い致します。

  3. fun より:

    2/3の優秀なEAとはどういった条件を満たすものなのか?の記事について・・・

    少し前の記事の質問になりますが、この記事に掲載してあります一覧表をプリントアウトして、EAの評価の勉強を始めましたが、この表で見方を確認して、実際のテスターリポートを見ても今ひとつ要領がつかめません。
    そこで、最低限ここは見ておいた方がいいという項目を絞ってお教え頂けませんでしょうか?更になんですが、多ければ多いほど・・・や、少なければ・・・の部分も、どのレベルで多いと判断するのかの基準(これはあいまいかもしれませんが最低この数値はないとくらいの)も知りたいです。
    おそらく、どれが大事で、どれが不要などのデータはないと思いますが、ちょっと多すぎるので、慣れるまで絞って見て行きたいと思っています。

    お忙しいところ恐縮ですがよろしくお願い致します。

  4. 012 より:

    fun さん

    Mr.Brain です。
    コメントありがとうございます。

    なかなか難しい質問ですね(苦笑)
    最低限見ておきたい項目というのは、テスターリポートだけでは正直足りないくらいと思っています。
    ですので、あえて的を絞るのであれば、「どのようなEAをピックアップしたいのか?」によって変わってくるという感じになるでしょうか。
    これは、使用する側の好みによって、項目の優先度が変わってくるともいえますので、
    そういった観点から優先順位を自分の中で設けるしかないかなと思います。

    やはり、勝率が高くないと自分が使い続けられないというのであれば、勝率を優先してみるような感じですし。
    1回の勝ちの利益が、1回の負けの利益よりも大きい方がいいのならば、
    Average profit trade(利益トレード平均)が、Average loss trade(損失トレード平均)よりも大きいものをピックアップすることになります。
    また、1回あたりの利益の平均も、スイング系なら大きめになるでしょうし、スキャルなら小さくなるでしょう。
    また、複利のEAと単利のEAを同じものさしで見るのもいけませんし、マーチンゲール系や、ナンピン系のものも同じものも、一律に比較は出来ません。
    手法によって、修正しながら比較していく必要があります。

    ですので、これといった正解の方法というのがないので、本当に最初は大変だと思います。

    funさんのおっしゃることも確かにわかるのですが、木を見て森を見ずではいけませんし、
    一部の数本の木だけをみてその森の全体像を見誤っては意味がありません。
    なので、複合的にバランスをみていくしかないのが本当のところです。
    また、「多いほど」、や、「少ないほど」の目安を決めることも難しいとしかいいようがありません。

    ただ、いえるのが、単利のEAの比較であれば、「Mr.Brainレシオ」が最強のものさしと思っております。

    もし、、仮に「Mr.Brainレシオ」が、ほぼ同じであった場合は、
    より売買回数や、期間の長いものの方が信頼に足りるとおもいます。

    そのあたりを踏まえたうえで、数多くのEAのバックデータをとりながら比較していく目を養っていくしかないと思います。

    あまりよいお答えではなかったかもしれませんが、楽する為に、楽は出来ないというところですね。
    でも、見方に自信がついてこれば、もうしめたものです。
    良いEAをピックアップし、より効率の良い資産運用が出来る可能性が高くなるとおもいます。

    大変ですが、頑張ってください。
    その為にこのコラムが少しでもお役に立てればうれしいです。

    Mr.Brain

  5. fun より:

    なるほどです!^^

    良いアドバイスありがとうございました。

コメントをどうぞ