- //+------------------------------------------------------------------+
  - //|                                                  Heiken Ashi.mq4 |
  - //|                        Copyright 2004, metaQuotes Software Corp. |
  - //|                                        http://www.metaquotes.net |
  - //+------------------------------------------------------------------+
  - //| For Heiken Ashi we recommend next chart settings ( press F8 or   |
  - //| select on menu 'Charts'->'Properties...'):                       |
  - //|  - On 'Color' Tab select 'Black' for 'Line Graph'                |
  - //|  - On 'Common' Tab disable 'Chart on Foreground' checkbox and    |
  - //|    select 'Line Chart' radiobutton                               |
  - //+------------------------------------------------------------------+
  - #property copyright "Copyright 2004, metaQuotes Software Corp."
  - #property link      "http://www.metaquotes.net"
  
 - #property indicator_chart_window
  - #property indicator_buffers 4
  - #property indicator_color1 Red
  - #property indicator_color2 Blue
  - #property indicator_color3 Red
  - #property indicator_color4 Blue
  - //---- buffers
  - double ExtMapBuffer1[];
  - double ExtMapBuffer2[];
  - double ExtMapBuffer3[];
  - double ExtMapBuffer4[];
  - //----
  - int ExtCountedBars=0;
  - //+------------------------------------------------------------------+
  - //| Custom indicator initialization function                         |
  - //|------------------------------------------------------------------|
  - int init()
  -   {
  - //---- indicators
  -    SetIndexStyle(0,DRAW_HISTOGRAM, 0, 1, Red);
  -    SetIndexBuffer(0, ExtMapBuffer1);
  -    SetIndexStyle(1,DRAW_HISTOGRAM, 0, 1, Blue);
  -    SetIndexBuffer(1, ExtMapBuffer2);
  -    SetIndexStyle(2,DRAW_HISTOGRAM, 0, 3, Red);
  -    SetIndexBuffer(2, ExtMapBuffer3);
  -    SetIndexStyle(3,DRAW_HISTOGRAM, 0, 3, Blue);
  -    SetIndexBuffer(3, ExtMapBuffer4);
  - //----
  -    SetIndexDrawBegin(0,10);
  -    SetIndexDrawBegin(1,10);
  -    SetIndexDrawBegin(2,10);
  -    SetIndexDrawBegin(3,10);
  - //---- indicator buffers mapping
  -    SetIndexBuffer(0,ExtMapBuffer1);
  -    SetIndexBuffer(1,ExtMapBuffer2);
  -    SetIndexBuffer(2,ExtMapBuffer3);
  -    SetIndexBuffer(3,ExtMapBuffer4);
  - //---- initialization done
  -    return(0);
  -   }
  - //+------------------------------------------------------------------+
  - //| Custor indicator deinitialization function                       |
  - //+------------------------------------------------------------------+
  - int deinit()
  -   {
  - //---- TODO: add your code here
  -    
  - //----
  -    return(0);
  -   }
  - //+------------------------------------------------------------------+
  - //| Custom indicator iteration function                              |
  - //+------------------------------------------------------------------+
  - int start()
  -   {
  -    double haOpen, haHigh, haLow, haClose;
  -    if(Bars<=10) return(0);
  -    ExtCountedBars=IndicatorCounted();
  - //---- check for possible errors
  -    if (ExtCountedBars<0) return(-1);
  - //---- last counted bar will be recounted
  -    if (ExtCountedBars>0) ExtCountedBars--;
  -    int pos=Bars-ExtCountedBars-1;
  -    while(pos>=0)
  -      {
  -       haOpen=(ExtMapBuffer3[pos+1]+ExtMapBuffer4[pos+1])/2;
  -       haClose=(Open[pos]+High[pos]+Low[pos]+Close[pos])/4;
  -       haHigh=MathMax(High[pos], MathMax(haOpen, haClose));
  -       haLow=MathMin(Low[pos], MathMin(haOpen, haClose));
  -       if (haOpen<haClose) 
  -         {
  -          ExtMapBuffer1[pos]=haLow;
  -          ExtMapBuffer2[pos]=haHigh;
  -         } 
  -       else
  -         {
  -          ExtMapBuffer1[pos]=haHigh;
  -          ExtMapBuffer2[pos]=haLow;
  -         } 
  -       ExtMapBuffer3[pos]=haOpen;
  -       ExtMapBuffer4[pos]=haClose;
  -             pos--;
  -      }
  - //----
  -    return(0);
  -   }
  - //+------------------------------------------------------------------+
 
  |