Good Indicator for audusd

 
Hi, this indicator working for audusd, can anyone help me to work for eurusd or gbpusd too... Why only working on below 1.0 price pair. Above 1.00 price pair not working.

Please help me 

//**************************************************************************//
//*** ZZ 2nd Coming ***
//**************************************************************************//
//#property version "3.00"
//#property strict
#property indicator_chart_window
#property indicator_buffers 7
//-----
#property indicator_color1 Green //LightCyan //RoyalBlue
#property indicator_color2 White //LightCyan //LightSteelBlue
#property indicator_color3 Red //OrangeRed //Gold
#property indicator_color4 White //
#property indicator_color5 Red //Lime
#property indicator_color6 RoyalBlue //
#property indicator_color7 MediumOrchid //Lime
//---
#property indicator_width1 1
#property indicator_width6 1
#property indicator_width7 1
#property indicator_width4 0
#property indicator_width5 0
//---
#property indicator_style1 1
#property indicator_style6 1
#property indicator_style7 2
//**************************************************************************//
//*** Custom indicator ENUM settings ***
//**************************************************************************//
enum calcZZ { CloseClose, LowHigh, KazakhBoa};
enum drawZZ { NoZigZag, zzLINE, zzARROWS, zzFULL };
//**************************************************************************//
//*** Custom indicator input parameters ***
//**************************************************************************//
extern int ZZHistory = 3000;
extern calcZZ Calculation = CloseClose;
extern int ZZSpeed = 12;
extern int ZZSpeed2 = 26;
extern ENUM_MA_METHOD MAMethod = MODE_EMA;
extern ENUM_MA_METHOD MAMethod2 = MODE_EMA;
extern int ChannelWidth = 0;
extern bool ShowChannel = true;
extern drawZZ ShowZigZag = zzFULL; //ARROWS; //NoZigZag;
extern int ZZGap = 0,
ZZCodLO = 243, //218, //233 //110
ZZCodUP = 243, //217, //234 //111
ZZSize = 2;
extern bool ShowArrows = true;
extern int ArrGap = 0, //Distance >B High/Low candles
ArrCodUP = 233, //147, 116, 117, 234, //226
ArrCodDN = 234, //181, 233, //225
ArrSize = 0;
extern string ZIGZAG_ALERTS = "-----------------------------------------------------------------"; //
extern int SIGNALBAR = 0;
extern bool AlertsMessage = true, //false,
AlertsSound = true, //false,
AlertsEmail = false,
AlertsMobile = false;
extern string SoundFile = "news.wav"; //"stops.wav" //"alert2.wav" //"expert.wav"
//**************************************************************************//
//*** Custom indicator buffers ***
//**************************************************************************//
double ZigZag[], ZZBottom[], ZZVertex[], ArrUP[], ArrDN[];
double MAUnder[], MAOver[]; int TimeBar=0;
string ZZNAME = "ZZ 2nd Coming ["+ZZSpeed+"]";
//**************************************************************************//
//*** Custom indicator initialization function ***
//**************************************************************************//
int init()
{
IndicatorBuffers(7); IndicatorDigits(Digits); // if (Digits==3 || Digits==5) IndicatorDigits(Digits-1);
//---- 7 distributed indicator buffers
SetIndexBuffer(0,ZigZag);
SetIndexBuffer(1,ZZBottom);
SetIndexBuffer(2,ZZVertex);
SetIndexBuffer(3,ArrUP);
SetIndexBuffer(4,ArrDN);
SetIndexBuffer(5,MAUnder);
SetIndexBuffer(6,MAOver);
//---- setting rendering parameters
int ZZL=DRAW_NONE; if (ShowZigZag==1 || ShowZigZag==3) ZZL=DRAW_SECTION;
SetIndexStyle(0,ZZL);
int ZZA=DRAW_NONE; if (ShowZigZag==2 || ShowZigZag==3) ZZA=DRAW_ARROW;
SetIndexStyle(1,ZZA,0,ZZSize); SetIndexArrow(1,ZZCodLO);
SetIndexStyle(2,ZZA,0,ZZSize); SetIndexArrow(2,ZZCodUP);
int ARR=DRAW_NONE; if (ShowArrows) ARR=DRAW_ARROW;
SetIndexStyle(3,ARR,0,ArrSize); SetIndexArrow(3,ArrCodUP);
SetIndexStyle(4,ARR,0,ArrSize); SetIndexArrow(4,ArrCodDN);
int LNT=DRAW_NONE; if (ShowChannel) LNT=DRAW_LINE;
SetIndexStyle(5,LNT);
SetIndexStyle(6,LNT);
//---- value 0 will not be displayed
SetIndexEmptyValue(0,0.0);
SetIndexEmptyValue(1,0.0);
SetIndexEmptyValue(2,0.0);
SetIndexEmptyValue(3,0.0);
SetIndexEmptyValue(4,0.0);
SetIndexEmptyValue(5,0.0);
SetIndexEmptyValue(6,0.0);
SetIndexEmptyValue(7,0.0);
//---- display in DataWindow
SetIndexLabel(0,"ZigZag ["+IntegerToString(ZZSpeed)+"]");
SetIndexLabel(1,"ZZ Bottom");
SetIndexLabel(2,"ZZ Vertex");
SetIndexLabel(3,"Arrow BUY");
SetIndexLabel(4,"Arrow SELL");
SetIndexLabel(5,"MA Under ["+IntegerToString(ZZSpeed)+"]");
SetIndexLabel(6,"MA Over ["+IntegerToString(ZZSpeed)+"]");
//---- "short name" for the DataWindow and the indicator subwindow +++ "unique name of the indicator"
IndicatorShortName(ZZNAME);
//---//---//---
return(0);
}
//**************************************************************************//
//*** Custom indicator deinitialization function ***
//**************************************************************************//
int deinit() { return(0); }
//**************************************************************************//
//*** Custom indicator iteration function ***
//**************************************************************************//
int start()
{
int counted_bars = IndicatorCounted();
if (counted_bars < 0) return (-1);
if (counted_bars > 0) counted_bars--;
int limit = Bars - ZZHistory - 1;
if (ZZHistory == 0) limit = Bars - counted_bars;
if (limit < 0) limit = 0;
int ZagAA, ZagNN, zup, zdn;
double ZZLL, ZZHH, BBHH, BBLL;
double MAGap = ChannelWidth * Point;
double GapZZ = ZZGap * Point;
double GapAA = ArrGap * Point;
for (int i = limit; i >= 1; i--) {
ZZVertex[i] = 0; ZZBottom[i] = 0; ArrUP[i] = 0; ArrDN[i] = 0; MAUnder[i] = 0; MAOver[i] = 0;
if (Calculation == KazakhBoa) {
ZZLL = Low[iLowest(NULL, 0, MODE_LOW, ZZSpeed, i + 0)];
ZZHH = High[iHighest(NULL, 0, MODE_HIGH, ZZSpeed, i + 1)];
if (Low[i] < ZZLL && High[i] > ZZHH) {
ZagAA = 2;
if (ZagNN == 1) zup = i + 1;
if (ZagNN == -1) zdn = i + 1;
} else {
if (Low[i] < ZZLL) ZagAA = -1;
if (High[i] > ZZHH) ZagAA = 1;
}
} else {
ZZLL = iMA(0, 0, ZZSpeed2, 0, MAMethod2, PRICE_CLOSE, i) > iMA(NULL, 0, ZZSpeed, 0, MAMethod, PRICE_CLOSE, i) - MAGap;
ZZHH = iMA(NULL, 0, ZZSpeed, 0, MAMethod, PRICE_CLOSE, i) < iMA(0, 0, ZZSpeed2, 0, MAMethod2, PRICE_CLOSE, i) + MAGap;
ZZLL = NormalizeDouble(ZZLL, Digits);
ZZHH = NormalizeDouble(ZZHH, Digits);
}
Print("ZZLL: ", ZZLL, " ZZHH: ", ZZHH);
Print("MA1: ", iMA(NULL, 0, ZZSpeed2, 0, MAMethod2, PRICE_CLOSE, i));
Print("MA2: ", iMA(NULL, 0, ZZSpeed, 0, MAMethod, PRICE_CLOSE, i));
Print("MAGap: ", MAGap);
Print("ZZLL Condition: ", (iMA(NULL, 0, ZZSpeed2, 0, MAMethod2, PRICE_CLOSE, i) > iMA(NULL, 0, ZZSpeed, 0, MAMethod, PRICE_CLOSE, i) - MAGap));
Print("ZZHH Condition: ", (iMA(NULL, 0, ZZSpeed, 0, MAMethod, PRICE_CLOSE, i) < iMA(NULL, 0, ZZSpeed2, 0, MAMethod2, PRICE_CLOSE, i) + MAGap));
Print(DoubleToStr(Close[0], Digits));
//---
if (Calculation==1) {
if (Low[i]<ZZLL && High[i]>ZZHH) { ZagAA=2; if (ZagNN==1) zup=i+1; if (ZagNN==-1) zdn=i+1; }
else { if (Low[i]<ZZLL) ZagAA=-1; if (High[i]>ZZHH) ZagAA=1; } }
//---
if (Calculation==0) {
if ((Close[i]<ZZLL && Close[i+1]>ZZLL) && (Close[i]>ZZHH && Close[i+1]<ZZHH)) { ZagAA=2; if (ZagNN==1) zup=i+1; if (ZagNN==-1) zdn=i+1; }
else { if (Close[i]<ZZLL) ZagAA=-1; if (Close[i]>ZZHH) ZagAA=1; } }
//**************************************************************************//
if (ZagAA!=ZagNN && ZagNN!=0)
{
if (ZagAA==2) { ZagAA=-ZagNN; BBHH=High[i]; BBLL=Low[i]; }
if (ZagAA==-1) { ZigZag[zup]=BBHH; ZZVertex[zup]=BBHH+GapZZ; ArrDN[i]=High[i]+GapAA; } //High[zup]
if (ZagAA==1) { ZigZag[zdn]=BBLL; ZZBottom[zdn]=BBLL-GapZZ; ArrUP[i]=Low[i] -GapAA; } //Low[zdn]
//---
BBHH=High[i]; BBLL=Low[i];
}
//---
if (ZagAA==1) { if (High[i]>=BBHH) { BBHH=High[i]; zup=i; } }
if (ZagAA==-1) { if (Low[i]<=BBLL) { BBLL=Low[i]; zdn=i; } }
//---
ZagNN=ZagAA;
//**************************************************************************//
//*** ZZ 2nd Coming ***
//**************************************************************************//
if (AlertsMessage || AlertsEmail || AlertsMobile || AlertsSound)
{
string messageDN =(ZZNAME+" - "+Symbol()+", TF ["+IntegerToString(Period())+"] <<< ZZ Angle at the Vertex == SELL"); //SSL Channel TT //HA CLH 4C SHLD TT //MA 3x3 TT
string messageUP =(ZZNAME+" - "+Symbol()+", TF ["+IntegerToString(Period())+"] >>> ZZ Angle at the Bottom == BUY"); //SSL Channel TT //HA CLH 4C SHLD TT //MA 3x3 TT
//---
if (TimeBar!=Time[0] && ArrDN[0+SIGNALBAR]!=0)
{
if (AlertsMessage) Alert(messageDN);
if (AlertsEmail) SendMail(Symbol(),messageDN);
if (AlertsMobile) SendNotification(messageDN);
if (AlertsSound) PlaySound(SoundFile); //"stops.wav" //"news.wav"
TimeBar=Time[0];
//return(0);
}
//---
else if (TimeBar!=Time[0] && ArrUP[0+SIGNALBAR]!=0)
{
if (AlertsMessage) Alert(messageUP);
if (AlertsEmail) SendMail(Symbol(),messageUP);
if (AlertsMobile) SendNotification(messageUP);
if (AlertsSound) PlaySound(SoundFile); //"stops.wav" //"news.wav"
TimeBar=Time[0];
//return(0);
}
}
//**************************************************************************//
} //*end of cycle* for (int i=ZZHistory; w>=0; w--)
//---//---//---
return(0);
}
//**************************************************************************//
//*** ZZ 2nd Coming ***
//**************************************************************************//