//+------------------------------------------------------------------+
//| 2MACD.mq4 |
//| Copyright � 2010, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright � 2010, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
datetime lastbar;
double distance;
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,225);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexEmptyValue(0,0.0);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,226);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexEmptyValue(1,0.0);
//----
distance = 0.2;
if(StringFind(Symbol(), "JPY") == -1) distance = 0.002;
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
double fMacdMain, fMacdSignal, sMacdMain, sMacdSignal, fMacdMain2, fMacdSignal2, sMacdMain2, sMacdSignal2;
//----
for(int i=Bars-counted_bars-1; i>=0; i--)
{
fMacdMain = iMACD(NULL, 0, 5, 10, 2, PRICE_CLOSE, MODE_MAIN, i);
fMacdSignal = iMACD(NULL, 0, 5, 10, 2, PRICE_CLOSE, MODE_SIGNAL, i);
sMacdMain = iMACD(NULL, 0, 10, 20, 5, PRICE_CLOSE, MODE_MAIN, i);
sMacdSignal = iMACD(NULL, 0, 10, 20, 5, PRICE_CLOSE, MODE_SIGNAL, i);
fMacdMain2 = iMACD(NULL, 0, 5, 10, 2, PRICE_CLOSE, MODE_MAIN, i+1);
fMacdSignal2 = iMACD(NULL, 0, 5, 10, 2, PRICE_CLOSE, MODE_SIGNAL, i+1);
sMacdMain2 = iMACD(NULL, 0, 10, 20, 5, PRICE_CLOSE, MODE_MAIN, i+1);
sMacdSignal2 = iMACD(NULL, 0, 10, 20, 5, PRICE_CLOSE, MODE_SIGNAL, i+1);
//LONG
if(((fMacdSignal < fMacdMain && fMacdMain > 0) && (sMacdSignal < sMacdMain && sMacdMain > 0)) && ((fMacdMain2 <= 0 || fMacdMain2 < fMacdSignal2) || (sMacdMain2 <= 0 || sMacdMain2 < sMacdSignal2)))
{
ExtMapBuffer1[i] = Open[i] - distance;
}
//SHORT
if(((fMacdSignal > fMacdMain && fMacdMain < 0) && (sMacdSignal > sMacdMain && sMacdMain < 0)) && ((fMacdMain2 >= 0 || fMacdMain2 > fMacdSignal2) || (sMacdMain2 >= 0 || sMacdMain2 > sMacdSignal2)))
{
ExtMapBuffer2[i] = Open[i] + distance;
}
if(lastbar != Time[0])
{
if(ExtMapBuffer1[1] > 0) Alert("LONG: " + Symbol());
if(ExtMapBuffer2[1] > 0) Alert("SHORT: " + Symbol());
lastbar = Time[0];
}
}
//----
return(0);
}
//+------------------------------------------------------------------+