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

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

MT4のインディケータが表示できなくなる?

2017-10-03 14:21:01 | 投資

 build 600以前の旧MT4でプログラムされたテクニカル指標(インジ)の一部でチャートにラインが表示できないトラブルが生じている。この障害はMT4採用のFX会社すべてで生じているわけではないが、該当するインジはプログラムの一部を修正する必要がある。 

 トラブルの内容は、移動平均線等のラインが表示されなくなるというもので、原因は、MT4をできるだけMT5に近づけるための更新がされていることによるものである。移動平均線を例にした修正は下記の通り。 

修正前のプログラム

#property indicator_chart_window // チャートウインドウに表示

#property indicator_buffers 1 // 指標バッファの数

// 指標バッファ

double buf[];

// 移動平均の期間

extern int MA_Period = 20;

// 初期化関数

int init()

{

  // 指標バッファの割り当て

   SetIndexBuffer(0, buf);

   return(0);

// 指標処理関数

int start()

--------------- 以下省略 -----------

 旧MT4では、上記のように#propertyで指標バッファの数を指定し、初期化関数内で指標バッファの割り当てをすれば、移動平均線が自動的に黒の実線で表示される仕様となっていたが、現行新MT4では求める指標が線(ライン)であれば、その旨初期化関数内に SetIndexStyle(0, DRAW_LINE);と記述しておく必要がある。また、線種や色も#propertyまたはSetIndexStyle()で指定しておく。

修正後のプログラム例

#property indicator_chart_window // チャートウインドウに表示

#property indicator_buffers 1 // 指標バッファの数

#property indicator_color1 Red

#property indicator_style1 STYLE_SOLID

// 指標バッファ

double buf[];

// 移動平均の期間

extern int MA_Period = 20;

// 初期化関数

int init()

{

  // 指標バッファの割り当て

   SetIndexBuffer(0, buf);

   SetIndexStyle(0, DRAW_LINE);

   return(0);

// 指標処理関数

int start()

--------------- 以下省略 -----------

 今後は、現行MT4によるプログラム(#property strict)に努めることで、MT5時代に備えたい。