fibochannels

Author: Copyright 2016, Bola ButBut.
fibochannels
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
fibochannels
//+------------------------------------------------------------------+
//|                                                 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; i<limit; i++)
     {
      MHB=iHighest(Symbol(),0,MODE_HIGH,period,i);
      MLS=iLowest(Symbol(),0,MODE_LOW,period,i);
      body=MathAbs(High[MHB]-Low[MLS]);
      if(Time[MHB]>Time[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);
  }
//+------------------------------------------------------------------+

Comments