MT4 build600以降のための「MQL5プログラミングの基礎」

MT4 build600のアップデート以降、日替わりのようにアップデートが続いてどうなることかと思いましたが、今のところbuild610で落ち着いたようです。
build600系では、MQL4の仕様が変わってしまいました。
変わったと言っても、従来のMQL4にMQL5の仕様の一部が追加されたので、本書 「FXメタトレーダー4&5一挙両得プログラミング」の63ページ以降の「2-2 MQL5プログラミングの基礎」の節が参考になるかと思います。
この節は、MQL4からMQL5になって変わった部分をまとめたものですが、ちょうど新MQL4で追加された部分に対応しています。
MQL4でプログラミングするのであれば、特に追加された機能を使う必要はないのですが、MT4のままMQL5に慣れさせようというMQ社の思うつぼにはまりたい人は是非どうぞw。
ただ、基本的には旧MQL4との互換性を保ったまま機能が追加されているので、MQL5とは異なる部分もあります。
その一つはOpen[],Close[],High[],Low[]などバーの四本値の値を格納した定義済み配列です。Bid, Askなどの売値、買値を表す定義済み変数もそうです。
これらの定義済み配列、変数はMQL5ではなくなっています。
しかし、これをなくすと互換性がなくなってしまうため、新MQL4では従来通り使えるようになっています。
もう一つはプログラムで最初に実行されるstrat()や、init(), deinit()関数などの特別な関数です。
MQL5ではこれらの特別な関数は、OnStart(), OnCalculate(), OnTrade(), OnInit(), OnDeinit()などと関数名が変わってしまいました。
新MQL4では、MQL5の特別な関数にも対応していますが、旧MQL4のstart()なども同じように使うことができます。これも互換性を保つためでしょう。
このように新MQL4は、旧MQL4との互換性を保ちつつ、MQL5の機能を追加していっています。
ただ、本書で紹介していない細かい点で厳密な互換性が保たれていない部分があるので、build600になってプログラムの修正が必要なケースも多々あるようです。
新MQL4は、MQL4とMQL5の混在する中途半端な仕様になってしまっているので、MQ社にとってはあくまでMQL5へのつなぎと考えているのでしょうが、うまくつないでいけるのかどうか疑問なところです。
Bid, AskやOpen[],Close[]などが、宣言やデータコピーなどの必要なく、思ったところですぐに使えるというのは、初心者にとってはわかりやすい仕様だったと思います。
MQL4にMQL5の仕様を追加するくらいなら、MQL5にMQL4の仕様を追加した方が移行しやすいと思うのですが、今後、どう迷走していくか見物です。



コメントは受け付けていません