Price Data Components
Series array that contains the highest prices of each barSeries array that contains the lowest prices of each barSeries array that contains open prices of each barSeries array that contains close prices for each bar
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
USD_2bL
//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
/*------------------------------------------------------------------+
 |                                                     USD_2bL.mq4  |
 |                                            basisforex@gmail.com  |
 |                                                      05/01/2010  |
 +------------------------------------------------------------------*/      
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_color2 Brown
#property indicator_color3 Blue
#property indicator_color4 Brown

extern string _="Hi__or__Lo__or__HL__or__Cl";
extern string shift="HL";
extern bool Fibo=true;
double Line1[],Line2[],Line3[],Line4[];
int TimeFrame=0;
int HorizShift=0;
double VertShift;
//----------------------------
double highPrice,lowPrice,Range;
datetime StartTime;
color FiboColor=White;
//+------------------------------------------------------------------+
int DrawFibo()
  {
   if(ObjectFind("FiboMn")==-1) ObjectCreate("FiboMn",OBJ_FIBO,0,StartTime,highPrice,StartTime,lowPrice);
   else
     {
      ObjectSet("FiboMn",OBJPROP_TIME2,StartTime);
      ObjectSet("FiboMn",OBJPROP_TIME1,StartTime);
      ObjectSet("FiboMn",OBJPROP_PRICE1,highPrice);
      ObjectSet("FiboMn",OBJPROP_PRICE2,lowPrice);
     }
   ObjectSet("FiboMn",OBJPROP_LEVELCOLOR,FiboColor);
   ObjectSet("FiboMn",OBJPROP_FIBOLEVELS,7);

   ObjectSet("FiboMn",OBJPROP_FIRSTLEVEL+0,0.0);    // =====================================================
   ObjectSet("FiboMn", OBJPROP_FIRSTLEVEL + 1, 0.236); ObjectSetFiboDescription("FiboMn", 1, "(23.6%) -  %$");
   ObjectSet("FiboMn", OBJPROP_FIRSTLEVEL + 2, 0.382); ObjectSetFiboDescription("FiboMn", 2, "(38.2%) -  %$");
   ObjectSet("FiboMn", OBJPROP_FIRSTLEVEL + 3, 0.500); ObjectSetFiboDescription("FiboMn", 3, "(50.0%) -  %$");
   ObjectSet("FiboMn", OBJPROP_FIRSTLEVEL + 4, 0.618); ObjectSetFiboDescription("FiboMn", 4, "(38.2%) -  %$");
   ObjectSet("FiboMn", OBJPROP_FIRSTLEVEL + 5, 0.764); ObjectSetFiboDescription("FiboMn", 5, "(23.6%) -  %$");
   ObjectSet("FiboMn",OBJPROP_FIRSTLEVEL+6,1.000);  // =====================================================

   ObjectSet("FiboMn",OBJPROP_RAY,true);
   ObjectSet("FiboMn",OBJPROP_BACK,true);
//=============================================================
   if(ObjectFind("FiboUp")==-1) ObjectCreate("FiboUp",OBJ_FIBO,0,StartTime,highPrice,StartTime);
   else
     {
      ObjectSet("FiboUp",OBJPROP_TIME2,StartTime);
      ObjectSet("FiboUp",OBJPROP_TIME1,StartTime);
      ObjectSet("FiboUp",OBJPROP_PRICE1,highPrice);
      ObjectSet("FiboUp",OBJPROP_PRICE2,lowPrice);
     }
   ObjectSet("FiboUp",OBJPROP_LEVELCOLOR,FiboColor);
   ObjectSet("FiboUp",OBJPROP_FIBOLEVELS,18);
   ObjectSet("FiboUp", OBJPROP_FIRSTLEVEL + 0, 4.000); ObjectSetFiboDescription("FiboUp", 0, "(400.0%) -  %$");
   ObjectSet("FiboUp", OBJPROP_FIRSTLEVEL + 1, 3.764); ObjectSetFiboDescription("FiboUp", 1, "(376.4%) -  %$");
   ObjectSet("FiboUp", OBJPROP_FIRSTLEVEL + 2, 3.618); ObjectSetFiboDescription("FiboUp", 2, "(361.8%) -  %$");
   ObjectSet("FiboUp", OBJPROP_FIRSTLEVEL + 3, 3.500); ObjectSetFiboDescription("FiboUp", 3, "(350.0%) -  %$");
   ObjectSet("FiboUp", OBJPROP_FIRSTLEVEL + 4, 3.382); ObjectSetFiboDescription("FiboUp", 4, "(338.2%) -  %$");
   ObjectSet("FiboUp", OBJPROP_FIRSTLEVEL + 5, 3.236); ObjectSetFiboDescription("FiboUp", 5, "(323.6%) -  %$");
   ObjectSet("FiboUp", OBJPROP_FIRSTLEVEL + 6, 3.000); ObjectSetFiboDescription("FiboUp", 6, "(300.0%) -  %$");
   ObjectSet("FiboUp", OBJPROP_FIRSTLEVEL + 7, 2.764); ObjectSetFiboDescription("FiboUp", 7, "(276.4%) -  %$");
   ObjectSet("FiboUp", OBJPROP_FIRSTLEVEL + 8, 2.618); ObjectSetFiboDescription("FiboUp", 8, "(261.8%) -  %$");
   ObjectSet("FiboUp", OBJPROP_FIRSTLEVEL + 9, 2.500); ObjectSetFiboDescription("FiboUp", 9, "(250.0%) -  %$");
   ObjectSet("FiboUp", OBJPROP_FIRSTLEVEL + 10, 2.382); ObjectSetFiboDescription("FiboUp", 10, "(238.2%) -  %$");
   ObjectSet("FiboUp", OBJPROP_FIRSTLEVEL + 11, 2.236); ObjectSetFiboDescription("FiboUp", 11, "(223.6%) -  %$");
   ObjectSet("FiboUp", OBJPROP_FIRSTLEVEL + 12, 2.000); ObjectSetFiboDescription("FiboUp", 12, "(200.0%) -  %$");
   ObjectSet("FiboUp", OBJPROP_FIRSTLEVEL + 13, 1.764); ObjectSetFiboDescription("FiboUp", 13, "(176.4%) -  %$");
   ObjectSet("FiboUp", OBJPROP_FIRSTLEVEL + 14, 1.618); ObjectSetFiboDescription("FiboUp", 14, "(161.8%) -  %$");
   ObjectSet("FiboUp", OBJPROP_FIRSTLEVEL + 15, 1.500); ObjectSetFiboDescription("FiboUp", 15, "(150.0%) -  %$");
   ObjectSet("FiboUp", OBJPROP_FIRSTLEVEL + 16, 1.382); ObjectSetFiboDescription("FiboUp", 16, "(138.2%) -  %$");
   ObjectSet("FiboUp", OBJPROP_FIRSTLEVEL + 17, 1.236); ObjectSetFiboDescription("FiboUp", 17, "(123.6%) -  %$");

   ObjectSet("FiboUp",OBJPROP_RAY,true);
   ObjectSet("FiboUp",OBJPROP_BACK,true);
//=============================================================
   if(ObjectFind("FiboDn")==-1) ObjectCreate("FiboDn",OBJ_FIBO,0,StartTime,highPrice,StartTime);
   else
     {
      ObjectSet("FiboDn",OBJPROP_TIME2,StartTime);
      ObjectSet("FiboDn",OBJPROP_TIME1,StartTime);
      ObjectSet("FiboDn",OBJPROP_PRICE1,highPrice);
      ObjectSet("FiboDn",OBJPROP_PRICE2,lowPrice);
     }
   ObjectSet("FiboDn",OBJPROP_LEVELCOLOR,FiboColor);
   ObjectSet("FiboDn",OBJPROP_FIBOLEVELS,18);
   ObjectSet("FiboDn", OBJPROP_FIRSTLEVEL + 0, -0.236); ObjectSetFiboDescription("FiboDn", 0, "(-123.6%) -  %$");
   ObjectSet("FiboDn", OBJPROP_FIRSTLEVEL + 1, -0.382); ObjectSetFiboDescription("FiboDn", 1, "(-138.2%) -  %$");
   ObjectSet("FiboDn", OBJPROP_FIRSTLEVEL + 2, -0.500); ObjectSetFiboDescription("FiboDn", 2, "(-150.0%) -  %$");
   ObjectSet("FiboDn", OBJPROP_FIRSTLEVEL + 3, -0.618); ObjectSetFiboDescription("FiboDn", 3, "(-161.8%) -  %$");
   ObjectSet("FiboDn", OBJPROP_FIRSTLEVEL + 4, -0.764); ObjectSetFiboDescription("FiboDn", 4, "(-176.4%) -  %$");
   ObjectSet("FiboDn", OBJPROP_FIRSTLEVEL + 5, -1.000); ObjectSetFiboDescription("FiboDn", 5, "(-200.0%) -  %$");
   ObjectSet("FiboDn", OBJPROP_FIRSTLEVEL + 6, -1.236); ObjectSetFiboDescription("FiboDn", 6, "(-223.6%) -  %$");
   ObjectSet("FiboDn", OBJPROP_FIRSTLEVEL + 7, -1.382); ObjectSetFiboDescription("FiboDn", 7, "(-238.2%) -  %$");
   ObjectSet("FiboDn", OBJPROP_FIRSTLEVEL + 8, -1.500); ObjectSetFiboDescription("FiboDn", 8, "(-250.0%) -  %$");
   ObjectSet("FiboDn", OBJPROP_FIRSTLEVEL + 9, -1.618); ObjectSetFiboDescription("FiboDn", 9, "(-261.8%) -  %$");
   ObjectSet("FiboDn", OBJPROP_FIRSTLEVEL + 10, -1.764); ObjectSetFiboDescription("FiboDn", 10, "(-276.4%) -  %$");
   ObjectSet("FiboDn", OBJPROP_FIRSTLEVEL + 11, -2.000); ObjectSetFiboDescription("FiboDn", 11, "(-300.0%) -  %$");
   ObjectSet("FiboDn", OBJPROP_FIRSTLEVEL + 12, -2.236); ObjectSetFiboDescription("FiboDn", 12, "(-323.6%) -  %$");
   ObjectSet("FiboDn", OBJPROP_FIRSTLEVEL + 13, -2.382); ObjectSetFiboDescription("FiboDn", 13, "(-338.2%) -  %$");
   ObjectSet("FiboDn", OBJPROP_FIRSTLEVEL + 14, -2.500); ObjectSetFiboDescription("FiboDn", 14, "(-350.0%) -  %$");
   ObjectSet("FiboDn", OBJPROP_FIRSTLEVEL + 15, -2.618); ObjectSetFiboDescription("FiboDn", 15, "(-361.8%) -  %$");
   ObjectSet("FiboDn", OBJPROP_FIRSTLEVEL + 16, -2.764); ObjectSetFiboDescription("FiboDn", 16, "(-376.4%) -  %$");
   ObjectSet("FiboDn", OBJPROP_FIRSTLEVEL + 17, -3.000); ObjectSetFiboDescription("FiboDn", 17, "(-400.0%) -  %$");

   ObjectSet("FiboDn",OBJPROP_RAY,true);
   ObjectSet("FiboDn",OBJPROP_BACK,true);
  }
//+------------------------------------------------------------------+
//| 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("Cu_Line");
   ObjectDelete("FiboMn");
   ObjectDelete("FiboDn");
   ObjectDelete("FiboUp");
//----
   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 Hau=iHigh("AUDUSD",TimeFrame,i),Lau=iLow("AUDUSD",TimeFrame,i),Oau=iOpen("AUDUSD",TimeFrame,i),Cau=iClose("AUDUSD",TimeFrame,i);
      double koHa=iHigh(NULL,PERIOD_D1,1)-iHigh("AUDUSD",PERIOD_D1,1),koLa=iLow(NULL,PERIOD_D1,1)-iLow("AUDUSD",PERIOD_D1,1),koCa=iClose(NULL,PERIOD_D1,1)-iClose("AUDUSD",PERIOD_D1,1);
      //---
      double Huc=iHigh("USDCAD",TimeFrame,i),Luc=iLow("USDCAD",TimeFrame,i),Ouc=iOpen("USDCAD",TimeFrame,i),Cuc=iClose("USDCAD",TimeFrame,i);
      double koHc=iHigh(NULL,PERIOD_D1,1)-iHigh("USDCAD",PERIOD_D1,1),koLc=iLow(NULL,PERIOD_D1,1)-iLow("USDCAD",PERIOD_D1,1),koCc=iClose(NULL,PERIOD_D1,1)-iClose("USDCAD",PERIOD_D1,1);
      //---
      double Huj=iHigh("USDJPY",TimeFrame,i)/100,Luj=iLow("USDJPY",TimeFrame,i)/100,Ouj=iOpen("USDJPY",TimeFrame,i)/100,Cuj=iClose("USDJPY",TimeFrame,i)/100;
      double koHj=iHigh(NULL,PERIOD_D1,1)-iHigh("USDJPY",PERIOD_D1,1)/100,koLj=iLow(NULL,PERIOD_D1,1)-iLow("USDJPY",PERIOD_D1,1)/100,koHLj=(koHj+koLj)/2,koCj=iClose(NULL,PERIOD_D1,1)-iClose("USDJPY",PERIOD_D1,1)/100;
      //---
      double Huf=iHigh("EURCHF",TimeFrame,i),Luf=iLow("EURCHF",TimeFrame,i),Ouf=iOpen("EURCHF",TimeFrame,i),Cuf=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 Hgu=iHigh("GBPUSD",TimeFrame,i),Lgu=iLow("GBPUSD",TimeFrame,i),Ogu=iOpen("GBPUSD",TimeFrame,i),Cgu=iClose("GBPUSD",TimeFrame,i);
      double koHg=iHigh(NULL,PERIOD_D1,1)-iHigh("GBPUSD",PERIOD_D1,1),koLg=iLow(NULL,PERIOD_D1,1)-iLow("GBPUSD",PERIOD_D1,1),koCg=iClose(NULL,PERIOD_D1,1)-iClose("GBPUSD",PERIOD_D1,1);
      //---
      double Hnu=iHigh("NZDUSD",TimeFrame,i),Lnu=iLow("NZDUSD",TimeFrame,i),Onu=iOpen("NZDUSD",TimeFrame,i),Cnu=iClose("NZDUSD",TimeFrame,i);
      double koHn=iHigh(NULL,PERIOD_D1,1)-iHigh("NZDUSD",PERIOD_D1,1),koLn=iLow(NULL,PERIOD_D1,1)-iLow("NZDUSD",PERIOD_D1,1),koCn=iClose(NULL,PERIOD_D1,1)-iClose("NZDUSD",PERIOD_D1,1);
      //---
      double H = (Hau + Huc + Huj + Huf + Hgu + Hnu) / 6;
      double L = (Lau + Luc + Luj + Luf + Lgu + Lnu) / 6;
      double O = (Oau + Ouc + Ouj + Ouf + Ogu + Onu) / 6;
      double C = (Cau + Cuc + Cuj + Cuf + Cgu + Cnu) / 6;
      //---
      double koH = (koHa + koHc + koHj + koHf + koHg + koHn) / 6;
      double koL = (koLa + koLc + koLj + koLf + koLg + koLn) / 6;
      double koHL=(koH+koL)/2;
      double koC =(koCa+koCc+koCj+koCf+koCg+koCn)/6;
      //---
      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;
        }
      else if(C<O)
        {
         Line1[i]=C+VertShift; Line2[i]=O+VertShift; Line3[i]=L+VertShift; Line4[i]=H+VertShift;
        }
      else if(C==O)
        {
         Line1[i]=O+VertShift; Line2[i]=Line1[i]+0.01*Point; Line3[i]=L+VertShift; Line4[i]=H+VertShift;
        }
      //==== 
      i--;
     }
   ObjectCreate("Cu_Line",OBJ_FIBO,0,Time[0],C,Time[0],C);
   ObjectSet("Cu_Line",OBJPROP_TIME2,Time[0]);
   ObjectSet("Cu_Line",OBJPROP_TIME1,Time[0]);
   ObjectSet("Cu_Line",OBJPROP_PRICE1,C+VertShift);
   ObjectSet("Cu_Line",OBJPROP_PRICE2,C+VertShift);
   ObjectSet("Cu_Line",OBJPROP_LEVELCOLOR,White);
   ObjectSet("Cu_Line",OBJPROP_FIBOLEVELS,1);
   ObjectSet("Cu_Line",OBJPROP_FIRSTLEVEL+0,0.0);
   ObjectSetFiboDescription("Cu_Line",0,"Usd");
//=========================================================
   double ePr=GlobalVariableGet("EurPrice");
   if(ePr>C+VertShift)
     {
      highPrice= ePr;
      lowPrice = C+VertShift;
     }
   if(ePr<C+VertShift)
     {
      highPrice= C+VertShift;
      lowPrice = ePr;
     }
   StartTime=Time[0];
   Range=highPrice-lowPrice;
   if(Fibo) DrawFibo();
//----
   return(0);
  }
//+------------------------------------------------------------------+

Comments