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

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

 

2011年05月04日(水)

[MQL5]OnCalculate()関数のオーバーロード [MQL5]



皆さん、こんにちは!

震災の後、適当な記事が見つからなかったことや、色々と忙しかったこともあり、1ヶ月ほど、ブログをお休みさせていただきました。

ちょっと間が空いてしまいましたが、前回の記事の続きです。

今回は関数のオーバーロードの例です。

MQL5のカスタム指標プログラムでは、OnCalculate()という関数から実行されます。OnCalculate()は、基本的には次のように定義されています。

int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[]
);

パラメータがたくさんあるのは、この関数を経由してチャート上の4本値やボリューム、スプレッドなどのデータを利用するためです。

ここで、OnCalculate()関数にはもう一つ別の定義があります。
int OnCalculate(const int rates_total,
const int prev_calculated,
const int begin,
const double &price[]
);

関数の名前はOnCalculate()と同じなのですが、パラメータの数が4個と少なくなっています。価格に関連するパラメータはpriceだけしかありません。

これは前者の関数の後半のパラメータが省略されたというわけではなく、パラメータの意味も違っています。これが、MQL5で導入された関数のオーバーロードという機能を利用したものなのです。

どちらの定義の関数を使うかはそのカスタム指標の計算方法によります。

終値closeだけでなく、高値highや安値lowなど二つ以上のデータを利用する場合には、前者の定義の関数を利用します。

後者の定義の関数を利用した場合、priceという変数は、以下のようなプロパティ画面で4本値のいずれかに割り当てられます。

画像(450x180)・拡大画像(719x288)

また4本値以外にも

(H+L)/2
(H+L+C)/3
(H+L+2C)/4

のような平均値を割り当てることもできます。

これは前者の関数でもできるのですが、priceを色々と変えて試したい場合には、後者の関数の方が手軽と言えます。

次回は具体的なプログラム例を示します。


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




Posted at 21時16分


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

Sponsor AD

2011/5

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 31        

プロフィール

豊嶋久道

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

PHOTO

値動きのヒストグラムからわかること

値動きのヒストグラムからわかること

カテゴリーリスト

最近の記事

検索


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

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

RSS1.0

[Login]


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