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

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

 

2011年02月07日(月)

[MQL5]パラメータいろいろ [MQL5]



MQL5プログラムでは、色々な場面で「パラメータ」という言葉を使います。

例えば、関数の入力として与える数値なり、文字列を「関数のパラメータ」と呼んだり、EAで使われるテクニカル指標の期間などを「システムのパラメータ」と呼んだりします。

いずれにしろ、パラメータというのはプログラム編集中、あるいはプログラム実行時に簡単に変化させたい値です。

MT5では、このパラメータをプログラム実行時に簡単に変えられる仕組みがあります。プログラム中で「input」というキーワードを頭につけて外部変数を宣言するだけです。例えば、

input int x = 10;
のように書くと、このプログラム実行時に次のような画面が出て、値を変えられるようになります。

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

また Variable の項目には、変数名だけでなく、コメントを表示させることもできます。例えば、

input int x = 10; // パラメータx
のようにコメントを書いておくと、次のようにVariableの項目にコメントが表示されます。

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

では、このパラメータで配列のサイズを変えたい場合はどうすればよいでしょう?

input int N = 10;
double x[N];
のようなプログラムが書ければ、Nの値を変えることで、配列のサイズを変えることができます。

実はC言語ではこういう書き方が許されているのですが、MQL5では、このままコンパイルすると、コンパイル時に
'N' - invalid index value
というエラーが出てしまいます。これはどういうことかというと、MQL5では、配列のサイズは「定数」でなくてはいけないのです。

なので、配列のサイズは「N」という変数ではなく、具体的に
double x[10];
と書かないといけないということです。

このあたりはC言語との互換性がないということになります。将来、C言語との互換性を保つように修正されるかもしれませんが、今の時点では、#define というプリプロセッサ命令を使うことで一応、対応することはできます。つまり、変数の宣言の代わりに
#define N 10
double x[N];

のように書きます。この場合、Nは変数ではなく、単なる記号なのです。#define という命令は、Nという記号を10 という定数に置き換えるだけなので、エラーは出ません。実際には、
double x[10];
と宣言するのと同じことなのです。

但し、この場合、コンパイル時にNの値が固定されてしまうので、プログラム実行時に値を変化させることはできません。そういう意味ではinput に比べて利便性が損なわれてしまいます。しかし、Nを変えるだけで、プログラム中のすべての N を別の数値に置き換えることができるので、パラメータと同じように考えることもできるというわけです。


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




Posted at 17時21分


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

Sponsor AD

2011/2

    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          

プロフィール

豊嶋久道

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

PHOTO

実際の相場におけるランダムウォーク

実際の相場におけるランダムウォーク

カテゴリーリスト

最近の記事

検索


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

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

RSS1.0

[Login]


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