2008年01月12日

MQL4入門(3) - プリプロセッサ命令

2008年最初のMQL4入門の記事です。今回はプリプロセッサ命令を取り上げます。

たいていのメタトレーダーのプログラムでは、最初に # から始まる命令の羅列があります。初めてプログラムを見る人にとっては暗号にしか見えないかもしれませんね。ただ、これもC言語の真似をしているだけで、MQL4でも同じく「プリプロセッサ命令」と呼んでいます。英語で「Preprocessor」と表され、「前処理」という意味になります。

C言語でよく使われるプリプロセッサ命令は、

#define
#include

です。例えば、

#define N 100

と書くと、「N」という記号を「100」という値に置き換える働きをします。

また

#include "filename"

と書くと、「filename」という名前のファイルを #include を書いた場所に読み込みます。

いずれもコンパイルの前処理として、記号の置き換えや、ファイルの読み込みを行うので、前処理のための命令ということができます。

ところが、メタトレーダーでは、もちろん 上記の#define や #include も使えますが、それよりよく使うのが #property 命令です。なので、前処理と言ってもわかりにくいでしょうから、「FXメタトレーダー入門」の122ページからの説明では、プリプロセッサ命令のことを「プログラム全体に関わる設定」と説明しています。

#property 命令は、

#property 識別子

だけのものや、

#property 識別子 値

と値をつけて書くものなど色々あります。MQL4で使える#property の識別子の一覧を挙げておきます。

link
copyright
stacksize
library
indicator_chart_window
indicator_separate_window
indicator_buffers
indicator_minimum
indicator_maximum
indicator_colorN
indicator_widthN
indicator_styleN
indicator_levelN
indicator_levelcolor
indicator_levelwidth
indicator_levelstyle
show_confirm
show_inputs

indicator関連のたいていの識別子は「FXメタトレーダー入門」で説明していますので、ここでは省略します。

またlibraryはライブラリ作成時、show_confirm、show_inputs はスクリプト作成時の設定です。stacksize はスタックサイズの設定ですが、通常は使わないのではないかと思います。

MQL4のそのほかのプリプロセッサ命令としては、

#import

というものがあります。これは、コンパイルされたex4ファイルやdllファイル中の関数をインポートする命令です。

#import "file_name"
func1 define;
func2 define;
...
funcN define;
#import

という書式で、関数の定義を #import で囲みます。例えば、

#import "Sample.ex4"
int GetIntValue(int);
double GetDoubleValue(double);
string GetStringValue(string);
#import

のような書き方をします。自分で作った関数を色々なプログラムで使い回したい場合に便利です。

にほんブログ村 為替ブログへ上位ランキングのブログ記事はこちら
マネポケ金融投資ブログランキングここにも為替ブログ記事が満載!