トレード備忘録 & MT4/MT5インディケータ及びEAの開発

日々のトレード備忘録及びMT4/MT5に関する事項

新メタトレーダー4(新MT4)との付き合い方

2017-06-07 07:54:34 | 投資

 MT4が世に出たのは2005年、2011年にはその後継となるべきMT5がリリースされている。ところがMetaQuotes社(M社)の期待に反してMT5がその役割を果たすことはほとんどなく、MT4が今日に至るまで、FXトレーディングプラットフォームとして世界標準の地位を不動のものとしてきた。 

 そのような状況下、MT5の普及を急務とするM社は、2014年2月唐突にMT4をBuild 600として更新した。Build 600以前の(旧)MT4と互換性を保ちながら、MT5とも一部関数等に互換性を持たせるというものであった。この(新)MT4も最新版はBuild 1090まで進み、バグをはじめとする当初の不具合や混乱も収まり、現在では安定的な推移をみせている。 

 Build 600以降の新MT4では何がどう変わったのか、チャート機能に関する限り旧MT4と大きく異なるところはない。MT4を使って相場分析をされている方にとっては、何の不自由もなさそうだ。ところが、新MT4(新MQL4)を使って、インディケータや自動売買プログラム(EA)を作成しようとすると、その異変が明らかとなる。 

 先ず、メタエディター(プログラム作成のフォーマット)がMT5仕様に変わっている。関数もMT5で使用する int OnCalculate( )とかvoid OnTick( )等に入れ替わっている。OnCalculete( )に至っては、構成する変数も多数で一見して面食らってしまうほどだ。次に驚くのは、MQ4 Referenceから旧MT4の関数が消え去っていることである。互換性ありとはいいながら、int start( )やint init( )は、もう用なしという扱いである。情報では、M社のサイトからは、MT4ダウンロードはもはやできないとのこと、また、新規参入のFX会社には、MT5のみのオペレーションが許されるということである。 

 以上から、M社が一日も早くMT4からMT5に移行したいという方針は明らかだが、ここまでくるといろんな疑問が湧いてくる。

① なぜMT5にこだわるのか

 理由の一つは、MT5の開発目的にある。MT4はFXを含むCFDの取引に特化したシステムであるのに対して、MT5の対象とするのは、それだけにとどまらず株式や債券、商品先物にも対応するシステムであることだ。FXでは競合ソフトTrade Stationを駆逐した感があるが、M社としては他商品市場においても早急にMetaTraderブランドを確立させたいのである。

 もう一つの理由は、システムの高速化にあるとされる。MT5でのデータの取り扱いは、構造体やクラスというモジュールが大幅に取り入れられていることである。構造体を構成するデータのやり取りは参照渡しとするものが多く、従来の値渡し方式と比較して、メモリーの消費量が大幅に削減できるとされる。 またクラスはオブジェクト機能を追加して、プログラム言語としての更なる質的向上を実現させた。

② なぜ旧MT4からMT5に直接的に移行しなかったのか

 その質問は、「MT5がなぜ今まで受け入れられなかったのか」という問いと同義である。もし、MT5で次のようなFXトレードをしたら、どうなるかを見てみよう。上から下への取引順序

 1.買い 1ロット

 2.買い 2 ロット

 3.買い 3 ロット

 4.売り 6 ロット

 上の3の取引を終えた段階では、それまでのポジションは合算されて6 ロットとされる。ターミナルの取引タブには6ロットのみが表示され、それまでのポジションは表示されない。つまり、取引毎の情報は存在しなくなるので、個別の決済や損益把握はできない。MT4では、マジックナンバーやチケットナンバーでの各注文やポジションのコントロールができたが、MT5ではできないことを意味する。トラリピなどの複数ポジションを扱う戦略は原則できなくなる。また、4番目の取引の売りオーダーが成立すると、たとえ両建て取引を可とする業者においても、ポジションは自動的にゼロとなる。これでは、両建て戦略は不可能となってしまう。なぜ、両建てができない仕様になったかは、開発当時米NFAが両建てを禁止したからだとされている。この様な状況で、旧MT4からMT5へ直截的に移行させたなら、ほとんどのEAは作動しなくなる。どうしてもワンクッション入れる必要があった。MT5への道は容易ではない。 

③ どうしたら解決できるのか

 一つは、MT5自体の仕様を取引実態に即したものに変更することだ。トレード関数を含めてプログラムを取引市場や取引慣習に合わせて変更することは不可能ではないはずだ。業者やトレーダーサイドで対応せよというのは、あまりにも勝手な言い分であろう。

 もう一つの方法は、既に始まっている。現行MT5の仕様を前提に、利用者側で対応しようとする試みである。豊嶋久道著「メタトレーダー4&5」では、MyPosition.mqhというライブラリーを開発され、上記を含めた諸問題の解決策を提案されている。また、いずれMT5に移行するのを前提に、新MT4にも同種ライブラリーLibEA4.mqhを開発され、著書「新MT4実践プログラミング」の中で公開された。考え方としては、MT5のライブラリーと同じようなライブラリーを使って、新MT4のEAを作成しようとする試みである。旧い文法はいずれ使えなくなるから、今から新しい文法を勉強して全面的なMT5への移行に備えておこうという趣旨であろう。 

 新MT4は旧MT4と互換性は保たれているので、当面、旧MT4仕様でプログラムは書くことができる。また、新MT4も顔かたちは異なるが、中身はMT4であるから、新MT4エディターでのプログラムもさほど困難ではない。これからもMT5への移行に向けての努力はされると思われるので、進捗状況をじっくり見守りたい。