基礎から学ぶシステムトレード
シストレブログ人気ランキング  

シストレ徹底攻略シストレマスターへの道ワールド・トレーディング・エッジ基礎から学ぶシステムトレードシストレニュースシストレツールシストレナビTOPへ

 

2010年04月13日(火)

MT4によるトレードシステム開発(3) [MetaTrader4]



前回、週明けのレンジとエントリー、利食いターゲットのレベルを表示させるカスタム指標プログラムを作成しました。

トレードシステムは、最終的にはエキスパートプログラム(EA)として作成するわけですが、売買ルールを考案する段階では、カスタム指標の方がチャート上で視覚的にもわかりやすいですし、プログラムのミスにも気づきやすいです。

しかも、このカスタム指標プログラムはEAを作る際に全く無駄にはならず、そのまま利用することができます。

MQL4のプログラムでは、カスタム指標プログラムを移動平均やRSIなどの予め組み込まれたテクニカル指標関数と同じような形で関数として呼び出すことができます。

この機能は、複数のプログラムが絡むものなので、最初はわかりにくいかもしれません。

しかし、一度使うとやめられなくなります。それくらい便利な機能です。

具体的には、iCustom()という関数を使います。

プログラム例を以下に示します。これは、前回作成した「WeeklyOpenRange.mq4」のプログラムを呼び出して、それぞれの指標値を各変数に取得するものです。

double MultBreakout = 1.0;
double MultTarget = 0.8;

double sell_sl = iCustom(NULL, 0, "WeeklyOpenRange", MultBreakout, MultTarget, 0, 0);
double buy_sl = iCustom(NULL, 0, "WeeklyOpenRange", MultBreakout, MultTarget, 1, 0);
double buy_entry = iCustom(NULL, 0, "WeeklyOpenRange", MultBreakout, MultTarget, 2, 0);
double sell_entry = iCustom(NULL, 0, "WeeklyOpenRange", MultBreakout, MultTarget, 3, 0);
double buy_tp = iCustom(NULL, 0, "WeeklyOpenRange", MultBreakout, MultTarget, 4, 0);
double sell_tp = iCustom(NULL, 0, "WeeklyOpenRange", MultBreakout, MultTarget, 5, 0);

iCustom()は呼び出すプログラムによってパラメータの数が違うのですが、最初の3つのパラメータと最後の2つのパラメータの役割は決まっています。

1番目のパラメータは通貨ペアを表します。挿入するチャート上の通貨ペアの場合、NULLと指定します。

2番目のパラメータはタイムフレームを表します。挿入するチャート上のタイムフレームの場合、を指定します。

3番目のパラメータは呼び出すプログラム名を指定します。ここでは、「WeeklyOpenRange.mq4」というプログラムなので、「.mq4」を取った「WeeklyOpenRange」を指定します。これは文字列なので、「""」で囲みます。

最後から2番目のパラメータは、「WeeklyOpenRange.mq4」中から取り出す指標バッファの番号を示します。

「WeeklyOpenRange.mq4」では、指標バッファは、

SetIndexBuffer(0, BufHigh);
SetIndexBuffer(1, BufLow);
SetIndexBuffer(2, BufHighEnt);
SetIndexBuffer(3, BufLowEnt);
SetIndexBuffer(4, BufHighTgt);
SetIndexBuffer(5, BufLowTgt);

のような順番で割り当てられていました。ですから、このパラメータに0を指定すると、BufHighの値が、1を指定するとBufLowの値が取得できるというわけです。

上のプログラム例では、買いオーダーの場合、BufHighEntがエントリー、BufHighTgtが利食い、BufLowが損切りを表すので、このパラメータを2,4,1と指定したものをそれぞれ buy_entry, buy_tp, buy_sl という変数に代入しています。

また売りオーダーの場合は、BufLowEntがエントリー、BufLowTgtが利食い、BufHighが損切りを表すので、このパラメータを3,5,0と指定したものをそれぞれ sell_entry, sell_tp, sell_sl という変数に代入します。

最後のパラメータは、取得する指標の位置です。0の場合、最新のバーの位置における指標値を返します。

上記以外のパラメータは、呼び出すプログラムによってパラメータの意味、およびパラメータ数が変わります。

ここでの例では、「WeeklyOpenRange.mq4」で extern 付きで宣言されている外部変数を指定します。

「WeeklyOpenRange.mq4」では、
extern double MultBreakout = 1.0;
extern double MultTarget = 0.8;

のように二つの変数が extern 付きで宣言されていました。

iCustom()関数で4番目と5番目のパラメータで指定する値は、それぞれ、「WeeklyOpenRange.mq4」中の、MultBreakout、MultTargetの変数に渡されます。つまり、「WeeklyOpenRange.mq4」のパラメータを外部から変えることができるのです。

今回はiCustom()の説明だけで長くなってしまいました。続きは次回に。


>>“基礎から学ぶシステムトレード”全記事バックナンバーはこちらから




Posted at 18時27分


ページのトップへ ページのトップへ

Sponsor AD

2010/4

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

プロフィール

豊嶋久道

2003年よりFX取引を始め、システムトレードの道へ。最近ではFXオプション取引も含めたトレーディングシステムの研究を行っている。システムトレードを基礎から正しく理解するための情報を発信する予定。

PHOTO

相場はランダムウォーク?

相場はランダムウォーク?

カテゴリーリスト

最近の記事

検索


当サイトコメントについて

当コメントは情報提供のみを目的として作成されたものであり、投資に関してはご自身でご判断くださいますようお願い致します。また、当資料は著作物であり著作権法により保護されております。無断で全文または一部を転載することはできません。

RSS1.0

[Login]


powered by a-blog
Copyright (C) 2008 PhiConcept,Inc. All rights reserved.