//+------------------------------------------------------------------+ //| FiboChannels.mq4 | //| Copyright 2016, Bola ButBut. | //| https://M2P_Design@Hotmail.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2016, Bola ButBut." #property link "https://M2P_Design@Hotmail.com" #property version "1.00" #property strict #property indicator_chart_window #property indicator_buffers 6 input int period=162; input int indShift=0; input int LineWidth=1; input color TextColor=clrBlack; input color Fibonacci000=clrBlue; input color Fibonacci236=clrMediumOrchid; input color Fibonacci382=clrSeaGreen; input color Fibonacci500=clrBlack; input color Fibonacci618=clrRed; input color Fibonacci100=clrSienna; double Fibo53[]; //Fibonacci 0.0 double Fibo52[]; //Fibonacci 23.6 double Fibo51[]; //Fibonacci 38.2 double Fibo50[]; //Fibonacci 50.0 double Fibo49[]; //Fibonacci 61.8 double Fibo48[]; //Fibonacci 100.0 int MHB,MLS; double body; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexStyle(0,DRAW_LINE,0,LineWidth,Fibonacci000); SetIndexBuffer(0,Fibo53); SetIndexShift(0,indShift); SetIndexStyle(1,DRAW_LINE,0,LineWidth,Fibonacci236); SetIndexBuffer(1,Fibo52); SetIndexShift(1,indShift); SetIndexStyle(2,DRAW_LINE,0,LineWidth,Fibonacci382); SetIndexBuffer(2,Fibo51); SetIndexShift(2,indShift); SetIndexStyle(3,DRAW_LINE,0,LineWidth,Fibonacci500); SetIndexBuffer(3,Fibo50); SetIndexShift(3,indShift); SetIndexStyle(4,DRAW_LINE,0,LineWidth,Fibonacci618); SetIndexBuffer(4,Fibo49); SetIndexShift(4,indShift); SetIndexStyle(5,DRAW_LINE,0,LineWidth,Fibonacci100); SetIndexBuffer(5,Fibo48); SetIndexShift(5,indShift); fiboCret(); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ void OnDeinit(const int r) { ObjectDelete("Fibonacci00.0"); ObjectDelete("Fibonacci23.6"); ObjectDelete("Fibonacci38.2"); ObjectDelete("Fibonacci50.0"); ObjectDelete("Fibonacci61.8"); ObjectDelete("Fibonacci100"); ObjectDelete("Fibo00.0"); ObjectDelete("Fibo23.6"); ObjectDelete("Fibo38.2"); ObjectDelete("Fibo50.0"); ObjectDelete("Fibo61.8"); ObjectDelete("Fibo100.0"); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- int limit=rates_total-prev_calculated; //---- main loop for(int i=0; iTime[MLS]) { Fibo53[i]=High[MHB]; Fibo52[i]=High[MHB]-(body*23.6/100); Fibo51[i]=High[MHB]-(body*38.2/100); Fibo50[i]=High[MHB]-(body*50.0/100); Fibo49[i]=High[MHB]-(body*61.8/100); Fibo48[i]=Low[MLS]; } else { Fibo53[i]=Low[MLS]; Fibo52[i]=Low[MLS]+(body*23.6/100); Fibo51[i]=Low[MLS]+(body*38.2/100); Fibo50[i]=Low[MLS]+(body*50.0/100); Fibo49[i]=Low[MLS]+(body*61.8/100); Fibo48[i]=High[MHB]; } } datetime timeS=TimeCurrent()+(Period()*60*indShift); fibolevels(timeS,Fibo53[0],Fibo52[0],Fibo51[0],Fibo50[0],Fibo49[0],Fibo48[0]); //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ //| Object Creation function | //+------------------------------------------------------------------+ void fiboCret() { ObjectCreate("Fibonacci00.0",OBJ_ARROW_RIGHT_PRICE,0,0,0); ObjectCreate("Fibonacci23.6",OBJ_ARROW_RIGHT_PRICE,0,0,0); ObjectCreate("Fibonacci38.2",OBJ_ARROW_RIGHT_PRICE,0,0,0); ObjectCreate("Fibonacci50.0",OBJ_ARROW_RIGHT_PRICE,0,0,0); ObjectCreate("Fibonacci61.8",OBJ_ARROW_RIGHT_PRICE,0,0,0); ObjectCreate("Fibonacci100",OBJ_ARROW_RIGHT_PRICE,0,0,0); ObjectCreate("Fibo00.0",OBJ_TEXT,0,0,0); ObjectSetText("Fibo00.0","Fibo00.0",10,"Arial",TextColor); ObjectCreate("Fibo23.6",OBJ_TEXT,0,0,0); ObjectSetText("Fibo23.6","Fibo23.6",10,"Arial",TextColor); ObjectCreate("Fibo38.2",OBJ_TEXT,0,0,0); ObjectSetText("Fibo38.2","Fibo38.2",10,"Arial",TextColor); ObjectCreate("Fibo50.0",OBJ_TEXT,0,0,0); ObjectSetText("Fibo50.0","Fibo50.0",10,"Arial",TextColor); ObjectCreate("Fibo61.8",OBJ_TEXT,0,0,0); ObjectSetText("Fibo61.8","Fibo61.8",10,"Arial",TextColor); ObjectCreate("Fibo100.0",OBJ_TEXT,0,0,0); ObjectSetText("Fibo100.0","Fibo100.0",10,"Arial",TextColor); } //+------------------------------------------------------------------+ //| Object Modification function | //+------------------------------------------------------------------+ void fibolevels(datetime Fibot,double F53,double F52,double F51,double F50,double F49,double F48) { ObjectSet("Fibonacci00.0",OBJPROP_TIME1,Fibot); ObjectSet("Fibonacci00.0",OBJPROP_PRICE1,F53); ObjectSet("Fibonacci00.0",OBJPROP_COLOR,Fibonacci000); ObjectSet("Fibonacci23.6",OBJPROP_TIME1,Fibot); ObjectSet("Fibonacci23.6",OBJPROP_PRICE1,F52); ObjectSet("Fibonacci23.6",OBJPROP_COLOR,Fibonacci236); ObjectSet("Fibonacci38.2",OBJPROP_TIME1,Fibot); ObjectSet("Fibonacci38.2",OBJPROP_PRICE1,F51); ObjectSet("Fibonacci38.2",OBJPROP_COLOR,Fibonacci382); ObjectSet("Fibonacci50.0",OBJPROP_TIME1,Fibot); ObjectSet("Fibonacci50.0",OBJPROP_PRICE1,F50); ObjectSet("Fibonacci50.0",OBJPROP_COLOR,Fibonacci500); ObjectSet("Fibonacci61.8",OBJPROP_TIME1,Fibot); ObjectSet("Fibonacci61.8",OBJPROP_PRICE1,F49); ObjectSet("Fibonacci61.8",OBJPROP_COLOR,Fibonacci618); ObjectSet("Fibonacci100",OBJPROP_TIME1,Fibot); ObjectSet("Fibonacci100",OBJPROP_PRICE1,F48); ObjectSet("Fibonacci100",OBJPROP_COLOR,Fibonacci100); ObjectSet("Fibo00.0",OBJPROP_TIME1,Fibot+(Period()*2500)); ObjectSet("Fibo00.0",OBJPROP_PRICE1,F53); ObjectSet("Fibo23.6",OBJPROP_TIME1,Fibot+(Period()*2500)); ObjectSet("Fibo23.6",OBJPROP_PRICE1,F52); ObjectSet("Fibo38.2",OBJPROP_TIME1,Fibot+(Period()*2500)); ObjectSet("Fibo38.2",OBJPROP_PRICE1,F51); ObjectSet("Fibo50.0",OBJPROP_TIME1,Fibot+(Period()*2500)); ObjectSet("Fibo50.0",OBJPROP_PRICE1,F50); ObjectSet("Fibo61.8",OBJPROP_TIME1,Fibot+(Period()*2500)); ObjectSet("Fibo61.8",OBJPROP_PRICE1,F49); ObjectSet("Fibo100.0",OBJPROP_TIME1,Fibot+(Period()*2500)); ObjectSet("Fibo100.0",OBJPROP_PRICE1,F48); } //+------------------------------------------------------------------+