2010年07月20日(火)
MQL5スクリプトプログラム [MetaTrader5]
今回からMT5に搭載されているMQL5プログラムについて紹介していきます。
但し、更新のペースはゆっくりなので、急いでMQL5入門したい方は、以下のサイトなどをご利用ください。
「とあるMetaTraderの備忘秘録」のMQL5カテゴリー
http://d.hatena.ne.jp/fai_fx/archive?word=*[MQL5]
では今回は、プログラムをチャートにアタッチすると、1回だけ実行されるスクリプトプログラムについて見ていきます。
スクリプトのサンプルプログラムもMT5にインストールされていますが、このサンプルプログラムは、MQL5で導入された「クラス」という機能を使ったものが多いので、C言語、あるいはMQL4しか知らない人にとってはさっぱりわからないかと思います。
クラスという機能は、そもそもC言語を拡張した「C++」という言語に導入されているものです。これは、独自のデータ構造やそれに関連する関数を作っていく場合に効果を発揮しますが、とりあえず、初心者向けの説明は後回しにします。
「class」というキーワードが入っているプログラムについては、今回は飛ばしていただいて結構です。
では、実際に簡単なスクリプトプログラムを作ってみましょう。
MetaEditorの「File」メニューから「New」を選ぶと、下図のようなWizard画面が現れます。MQL4の場合とほとんど一緒です。
ここで「Script」を選択してプログラム名(ここでは「test」)を設定すると、次のようなプログラムの雛形が出来上がります。
このプログラムで、//から始まる行はコメント行、#から始まる行はプリプロセッサ命令といったところは、MQL4と同じです。
すると、OnStart()というのが関数のようですが、このOnStart()とは何でしょう?
MQL4の場合、プログラム中に必ず出てくる特殊関数は start()でした。プログラムはstart()関数からスタートするようになっていました。
MQL5のスクリプトプログラムでは、start()の代わりに、OnStart()という関数を使うように変わったのです。
但し、OnStart()を使うのはスクリプトプログラムだけで、カスタム指標プログラムやEAでは、別の関数を特別な関数として使うので注意してください。
詳しくは以下のMQL5のHELPサイトをご覧ください。
http://www.mql5.com/en/docs/runtime/running
では、スクリプトの簡単な例として、売値Bidと買値Askを表示させてみましょう。
MQL4の場合、
Print("Bid=", Bid);
Print("Ask=", Ask);
と書けばよかったところですが、MQL5では、同じ書き方にすると、コンパイル時にエラーとなってしまいます。
エラーメッセージは
'Bid' - undeclared identifier
'Ask' - undeclared identifier
となります。つまり、BidとAskが宣言されていないという意味です。
実は、MQL4で BidやAskが宣言せずに使えたのは、予め宣言されていて自動的に値が代入される定義済み変数だったからです。
MQL5では Bid、Askは定義済み変数ではありません。では、別の変数名に代わったのかというと、そうでもありません。代わりの変数はないのです。
こうなってしまうと、何も参考資料がなければお手上げです。やっぱり、サンプルプログラムやMQL5のHELPを探していかなくてはなりません。
ということで、続きはまた次回。
Posted at 13時47分