Hull_HAMA





//+------------------------------------------------------------------+
//|                                              Hull_O_H_L_C.mq4 HA |
//|                                           Copyright © 2007, None |
//|Hull_HAMA                             Planet.Earth.Redistribution |
//+------------------------------------------------------------------+
//mod 2008 fxtsd  ki 
#property copyright "Copyright © 2007, None"
#property link      "Planet.Earth.Redistribution"
//----
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 OrangeRed
#property indicator_color2 RoyalBlue
#property indicator_color3 Red
#property indicator_color4 DodgerBlue
//---- parameters
extern int MaMethod =3;  //0-3
extern int MaPeriod  =14;
extern int DrawType =2;  //0-2
extern int OpCl_Width= 2;
extern int ShowBars  =1200;
extern string  notes_ =  "MaMethod: SMA0 EMA1 SMMA2 LWMA3; DrawType: 0line 1section 2Histo";

//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double maOpen, maClose, maLow, maHigh;
double haOpen, haHigh, haLow, haClose;
//----
int ExtCountedBars=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//|------------------------------------------------------------------|
int init()
  {
//---- indicators
   IndicatorBuffers(4);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexEmptyValue(0,EMPTY_VALUE);
//   SetIndexDrawBegin(0,MaPeriod);
   SetIndexStyle(0,DrawType,STYLE_SOLID,1);
   SetIndexLabel(0,"Hull_HA("+MaPeriod+")Hi ");
   //
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexEmptyValue(1,EMPTY_VALUE);
//   SetIndexDrawBegin(1,MaPeriod);
   SetIndexStyle(1,DrawType,STYLE_SOLID,1);
   SetIndexLabel(1,"Hull_HA("+MaPeriod+")Lo");
   //
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexEmptyValue(2,EMPTY_VALUE);
//   SetIndexDrawBegin(2,MaPeriod);
   SetIndexStyle(2,DrawType,STYLE_SOLID,OpCl_Width);
   SetIndexLabel(2,"Hull_HA("+MaPeriod+")OpCl");
   //
   SetIndexBuffer(3,ExtMapBuffer4);
   SetIndexEmptyValue(3,EMPTY_VALUE);
 //  SetIndexDrawBegin(3,MaPeriod);
   SetIndexStyle(3,DrawType,STYLE_SOLID,OpCl_Width);
   SetIndexLabel(3,"Hull_HA("+MaPeriod+")ClOp");
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- TODO: add your code here
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
//   if(Bars<=10) return(0);
   if(Bars<=MathPow(MaPeriod,2)) return(0);
   int   CountedBars=IndicatorCounted();
//---- check for possible errors
   if (CountedBars<0) return(-1);
//---- last counted bar will be recounted
   if (CountedBars>0) CountedBars--;
   //int pos=Bars-ExtCountedBars-2;
   int pos,limit;
   //if (pos>=(Bars-ExtCountedBars-2)) pos=Bars-ExtCountedBars-2;
    limit=Bars-CountedBars;
    limit = MathMin(limit, ShowBars+MathPow(MaPeriod,2));

   for (pos=limit;pos>=0;pos--)
  { 
  //while(pos>=0)

      maOpen =iMA(Symbol(),0,MathFloor(MaPeriod/2),0,MaMethod,PRICE_OPEN ,pos)*2-iMA(Symbol(),0,MaPeriod,0,MaMethod,PRICE_OPEN ,pos);
      maClose=iMA(Symbol(),0,MathFloor(MaPeriod/2),0,MaMethod,PRICE_CLOSE,pos)*2-iMA(Symbol(),0,MaPeriod,0,MaMethod,PRICE_CLOSE,pos);
      maLow  =iMA(Symbol(),0,MathFloor(MaPeriod/2),0,MaMethod,PRICE_LOW  ,pos)*2-iMA(Symbol(),0,MaPeriod,0,MaMethod,PRICE_LOW  ,pos);
      maHigh =iMA(Symbol(),0,MathFloor(MaPeriod/2),0,MaMethod,PRICE_HIGH ,pos)*2-iMA(Symbol(),0,MaPeriod,0,MaMethod,PRICE_HIGH ,pos);
//----
      haHigh=MathMax(maHigh, MathMax(haOpen, haClose));
      haLow=MathMin(maLow, MathMin(haOpen, haClose));
      if (haOpen<haClose)
        {
         ExtMapBuffer1[pos]=haLow;
         ExtMapBuffer2[pos]=haHigh;
        }
      else
        {
         ExtMapBuffer1[pos]=haHigh;
         ExtMapBuffer2[pos]=haLow;
        }
      haOpen=(ExtMapBuffer3[pos+1]+ExtMapBuffer4[pos+1])/2;
      ExtMapBuffer3[pos]=haOpen;
      haClose=(maOpen+maHigh+maLow+maClose)/4;
      ExtMapBuffer4[pos]=haClose;
//      pos--;
  }
//----

    for (int i=0;i<indicator_buffers;i++) SetIndexDrawBegin(i,Bars-ShowBars);   

   return(0);
  }
//+------------------------------------------------------------------+



Sample



image not available


Analysis



Market Information Used:



Indicator Curves created:


Implements a curve of type DrawType

Indicators Used:

Moving average indicator


Custom Indicators Used:

Order Management characteristics:

Other Features: