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時代に備えたい。