MT4のMACDはヒストグラム表示
MT4は大変使いやすくテクニカル分析がサクサクはかどるソフトで気に入っているけどMACDの表示だけはラインにしてほしいと思っている人も多いようです。確かに国内ブローカーのプラットフォームのMACDはライン表示のものが多いしヒストグラムだとクロスのポイントも見難いという事情もわかります。自分もライン派なのでさっそくMACDのヒストグラム表示をライン表示に変更してみました。
通常の表示だとMT4のMACDはこんな感じです。トレンド系指標であるMACDですが、シグナルラインとのクロスを利用する人も多いため、これでは少し見ずらいですよね。
ヒストグラムの幅を少し広くすると多少は見やすくなるかもしれませんが、ライン表示の比ではありません。
MetaEditorを使ってMT4のMACDをライン表示に変更
残念なことにMACDのプロパティにはヒストグラムをラインに変更する項目が見当たりません。そこでカスタムインディケーターのプログラムの一部をちょっとだけ変更します。カスタムインディケーターのファイル名はMACD.mq4ですのでこのファイルを探してダブルクリックするとMetaEditorが立ち上がります。ファイルを探すのが面倒な人はMT4のナビゲーターウィンドウの経線分析ツールの中にあるMACDを右クリックして「修正」をクリックしてください。MetaEditorが起動してMACD.mq4が開かれます。
MetaEditorが立ち上がるとプログラムが表示されますので以下のとおり変更してみてください。。
36行目の
SetIndexStyle(0,DRAW_HISTOGRAM);
を
SetIndexStyle(0,DRAW_LINE);
に変更します。
//+------------------------------------------------------------------+
//| Custom MACD.mq4 |
//| Copyright 2005-2014, MetaQuotes Software Corp. |
//| http://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright "2005-2014, MetaQuotes Software Corp."
#property link "http://www.mql4.com"
#property description "Moving Averages Convergence/Divergence"
#property strict
#include
//— indicator settings
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Silver
#property indicator_color2 Red
#property indicator_width1 2
//— indicator parameters
input int InpFastEMA=12; // Fast EMA Period
input int InpSlowEMA=26; // Slow EMA Period
input int InpSignalSMA=9; // Signal SMA Period
//— indicator buffers
double ExtMacdBuffer[];
double ExtSignalBuffer[];
//— right input parameters flag
bool ExtParameters=false;
//+——————————————————————+
//| Custom indicator initialization function |
//+——————————————————————+
int OnInit(void)
{
IndicatorDigits(Digits+1);
//— drawing settings
SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
SetIndexDrawBegin(1,InpSignalSMA);
//— indicator buffers mapping
SetIndexBuffer(0,ExtMacdBuffer);
SetIndexBuffer(1,ExtSignalBuffer);
//— name for DataWindow and indicator subwindow label
IndicatorShortName(“MACD(“+IntegerToString(InpFastEMA)+”,”+IntegerToString(InpSlowEMA)+”,”+IntegerToString(InpSignalSMA)+”)”);
SetIndexLabel(0,”MACD”);
SetIndexLabel(1,”Signal”);
//— check for input parameters
if(InpFastEMA<=1 || InpSlowEMA<=1 || InpSignalSMA<=1 || InpFastEMA>=InpSlowEMA)
{
Print(“Wrong input parameters”);
ExtParameters=false;
return(INIT_FAILED);
}
else
ExtParameters=true;
//— initialization done
return(INIT_SUCCEEDED);
}
//+——————————————————————+
//| Moving Averages Convergence/Divergence |
//+——————————————————————+
int OnCalculate (const int rates_total,
const int prev_calculated,
const datetime& time[],
const double& open[],
const double& high[],
const double& low[],
const double& close[],
const long& tick_volume[],
const long& volume[],
const int& spread[])
{
int i,limit;
//—
if(rates_total<=InpSignalSMA || !ExtParameters) return(0); //— last counted bar will be recounted limit=rates_total-prev_calculated; if(prev_calculated>0)
limit++;
//— macd counted in the 1-st buffer
for(i=0; i<limit; i++)
ExtMacdBuffer[i]=iMA(NULL,0,InpFastEMA,0,MODE_EMA,PRICE_CLOSE,i)-
iMA(NULL,0,InpSlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//— signal line counted in the 2-nd buffer
SimpleMAOnBuffer(rates_total,prev_calculated,0,InpSignalSMA,ExtMacdBuffer,ExtSignalBuffer);
//— done
return(rates_total);
}
//+——————————————————————+
プログラムの変更が出来たらツールバーにある「Compile」をクリックします。
たったこれだけでヒストグラム表示からライン表示に変更出来ます。MT4にはほかにもヒストグラム表示するインディケーターがありますが同様の方法でライン表示に変更することが可能です。
コメント
はじめまして川島と申します。MACDを勉強しなおしています。
macdのhistogramをlineにするのを試しましたがプログラムを修正して再起動しても結果が変わりません。36行目のプログラムは修正されています。
随分以前に同様にやったときは出来た記憶がありますが。
見直すと同じページにエラーの下に表示が出ていますが。f1キーのヘルプはすべて英語で不明です。
お気づきの点がありましたらご教示いただけたら幸いに存じます・