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

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

MT4/MT5 のクラス機能を使ってみよう

2018-11-06 10:36:55 | 投資

 MetaTraderではそのシステム一本化のため、現在かなりのスピードでMT4とMT5の接近が進められている。特にMT5のbuild更新は頻繁で、FXトレードを行う上ではMT4とさほど変わらぬ環境となりつつある。 

 豊島久道先生はすでにMT4/5共通のライブラリーを開発され、一般に公開された。ライブラリーを活用することで、実質的にはMT4とMT5の垣根は取り払われているわけであるから、MetaTraderとしてはあと少しの工夫で両者の完全互換性が達成できるのではないかと、ひそかに期待している。 

 この間、MT4サイドにも着々とMT5の仕様が移植されてきている。C++のいわゆるオブジェクト指向の要素も拡充され、一見何も変わらないように見えるMT4もおおいに変貌を遂げている。MT4でも使えるようになったクラス機能による組み込み指標関数についてiMomentumを例に取り上げてみよう。 

 クラスの追加により、現在のMT4では組み込み関数iMomentum()とともに、CiMomentumが使えるようになっている。MT5でもMT4のiMomentum()は存在するが、使い方がMT4とは全く異なる。むしろ、クラスのCiMomentumのほうが使いやすいかもしれない。MT5の練習のために、クラスを使ったMT4用の仕掛けシグナル関数を示すと次のようになる。

#include <Indicators\Indicators.mqh> //インジのクラスをインクルード

input int MomPeriod = 20;

中略

//仕掛けシグナル関数

int EntrySignal()

{

   //テクニカル指標の設定

   CiMomentum Mom; //モメンタムのオブジェクト  

   //テクニカル指標の初期化

   if(Mom.MaPeriod() < 0) Mom.Create(_Symbol, 0, MomPeriod, PRICE_CLOSE);  

 Mom.Refresh(); 

   int ret = 0; //シグナルの初期化 

   //買いシグナル

   if(Mom.Main(1) > 100) ret = 1;

   //売りシグナル

   if(Mom.Main(1) < 100) ret = -1; 

   return ret; //シグナルの出力

}