/*-------------------------------------------------------------------+
| EUR_2bL.mq4 |
| basisforex@gmail.com |
| 05/01/2010 |
+------------------------------------------------------------------ */
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Aqua//Blue
#property indicator_color2 Salmon//Brown
#property indicator_color3 Aqua//Blue
#property indicator_color4 Salmon//Brown
extern string _ = "Hi__or__Lo__or__HL__or__Cl";
extern string shift = "HL";
double Line1[], Line2[], Line3[], Line4[];
int TimeFrame = 0;
int HorizShift = 0;
double VertShift;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
SetIndexStyle(0, DRAW_HISTOGRAM, 0, 3);
SetIndexBuffer(0, Line1);
SetIndexShift( 0, HorizShift);
SetIndexStyle(1, DRAW_HISTOGRAM, 0, 3);
SetIndexBuffer(1, Line2);
SetIndexShift( 1, HorizShift);
SetIndexStyle(2, DRAW_HISTOGRAM, 0, 1);
SetIndexBuffer(2, Line3);
SetIndexShift( 2, HorizShift);
SetIndexStyle(3, DRAW_HISTOGRAM, 0, 1);
SetIndexBuffer(3, Line4);
SetIndexShift( 3, HorizShift);
if (TimeFrame == 0) TimeFrame = Period();
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
ObjectDelete("C_Line");
//----
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 i = Bars - counted_bars;
if(counted_bars==0) i--;
while(i >= 0)
{
double Hea = iHigh("EURAUD", TimeFrame,i), Lea = iLow("EURAUD", TimeFrame,i), Oea = iOpen("EURAUD",TimeFrame,i), Cea = iClose("EURAUD", TimeFrame,i);
double koHa = iHigh(NULL, PERIOD_D1, 1) - iHigh("EURAUD", PERIOD_D1, 1), koLa = iLow(NULL, PERIOD_D1, 1) - iLow("EURAUD", PERIOD_D1, 1), koCa = iClose(NULL, PERIOD_D1, 1) - iClose("EURAUD", PERIOD_D1, 1);
//---
double Hec = iHigh("EURCAD", TimeFrame,i), Lec = iLow("EURCAD", TimeFrame,i), Oec = iOpen("EURCAD",TimeFrame,i), Cec = iClose("EURCAD", TimeFrame,i);
double koHc = iHigh(NULL, PERIOD_D1, 1) - iHigh("EURCAD", PERIOD_D1, 1), koLc = iLow(NULL, PERIOD_D1, 1) - iLow("EURCAD", PERIOD_D1, 1), koCc = iClose(NULL, PERIOD_D1, 1) - iClose("EURCAD", PERIOD_D1, 1);
//---
double Hej = iHigh("EURJPY", TimeFrame,i) / 100, Lej = iLow("EURJPY", TimeFrame,i) / 100, Oej = iOpen("EURJPY",TimeFrame,i) / 100, Cej = iClose("EURJPY", TimeFrame,i) / 100;
double koHj = iHigh(NULL, PERIOD_D1, 1) - iHigh("EURJPY", PERIOD_D1, 1) / 100, koLj = iLow(NULL, PERIOD_D1, 1) - iLow("EURJPY", PERIOD_D1, 1) / 100, koCj = iClose(NULL, PERIOD_D1, 1) - iClose("EURJPY", PERIOD_D1, 1) / 100;
//---
double Hef = iHigh("EURCHF", TimeFrame,i), Lef = iLow("EURCHF", TimeFrame,i), Oef = iOpen("EURCHF",TimeFrame,i), Cef = iClose("EURCHF", TimeFrame,i);
double koHf = iHigh(NULL, PERIOD_D1, 1) - iHigh("EURCHF", PERIOD_D1, 1), koLf = iLow(NULL, PERIOD_D1, 1) - iLow("EURCHF", PERIOD_D1, 1), koCf = iClose(NULL, PERIOD_D1, 1) - iClose("EURCHF", PERIOD_D1, 1);
//---
double Heg = iHigh("EURGBP", TimeFrame,i), Leg = iLow("EURGBP", TimeFrame,i), Oeg = iOpen("EURGBP",TimeFrame,i), Ceg = iClose("EURGBP", TimeFrame,i);
double koHg = iHigh(NULL, PERIOD_D1, 1) - iHigh("EURGBP", PERIOD_D1, 1), koLg = iLow(NULL, PERIOD_D1, 1) - iLow("EURGBP", PERIOD_D1, 1), koCg = iClose(NULL, PERIOD_D1, 1) - iClose("EURGBP", PERIOD_D1, 1);
//---
double H = (Hea + Hec + Hej + Hef + Heg) / 5;
double L = (Lea + Lec + Lej + Lef + Leg) / 5;
double O = (Oea + Oec + Oej + Oef + Oeg) / 5;
double C = (Cea + Cec + Cej + Cef + Ceg) / 5;
//---
double koH = (koHa + koHc + koHj + koHf + koHg) / 5;
double koL = (koLa + koLc + koLj + koLf + koLg) / 5;
double koHL = (koH + koL) / 2;
double koC = (koCa + koCc + koCj + koCf + koCg) / 5;
//---
if(shift == "Hi") VertShift = koH; if(shift == "Lo") VertShift = koL; if(shift == "HL") VertShift = koHL; if(shift == "Cl") VertShift = koC;
//---
if(C > O)
{
Line1[i] = C + VertShift; Line2[i] = O + VertShift; Line3[i] = H + VertShift; Line4[i] = L + VertShift;
GlobalVariableSet("globEur", 999);
GlobalVariableSet("EurPrice", C + VertShift);
}
else if(C < O)
{
Line1[i] = C + VertShift; Line2[i] = O + VertShift; Line3[i] = L + VertShift; Line4[i] = H + VertShift;
GlobalVariableSet("globEur", -111);
GlobalVariableSet("EurPrice", C + VertShift);
}
else if(C == O)
{
Line1[i] = O + VertShift; Line2[i] = Line1[i] + 0.01 * Point; Line3[i] = L + VertShift; Line4[i] = H + VertShift;
GlobalVariableSet("globEur", 0);
GlobalVariableSet("EurPrice", C + VertShift);
}
//=============================================================================================================
i--;
}
ObjectCreate("C_Line", OBJ_FIBO, 0, Time[0], C, Time[0], C);
ObjectSet("C_Line",OBJPROP_TIME2, Time[0]);
ObjectSet("C_Line",OBJPROP_TIME1, Time[0]);
ObjectSet("C_Line",OBJPROP_PRICE1, C + VertShift);
ObjectSet("C_Line",OBJPROP_PRICE2, C + VertShift);
ObjectSet("C_Line",OBJPROP_LEVELCOLOR, White);
ObjectSet("C_Line",OBJPROP_FIBOLEVELS, 1);
ObjectSet("C_Line",OBJPROP_FIRSTLEVEL + 0, 0.0);
ObjectSetFiboDescription("C_Line", 0, "Eur");
//----
return(0);
}
Comments