Price Data Components
Miscellaneous
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