SemperAugustusTFV

Author: Semper Augustus
SemperAugustusTFV
Price Data Components
Series array that contains the highest prices of each barSeries array that contains the lowest prices of each bar
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
SemperAugustusTFV
//+------------------------------------------------------------------+
//|                                            SemperAugustusTFV.mq4 |
//|                                                  Semper Augustus |
//|                                             http://forexninja.nl |
//+------------------------------------------------------------------+
#property copyright "Semper Augustus"
#property link      "http://forexninja.nl"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 White

extern int Exponential = 2;
extern int WingDing = 108;

//--- buffers
double tfv[];

bool start = true;
int askTiks;
int bidTiks;
double askCum;
double bidCum;
double dezeBar;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{

   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,WingDing);
   SetIndexBuffer(0,tfv);
   SetIndexEmptyValue(0,0.0);

   dezeBar = Bars;
   askTiks = 0;
   bidTiks = 0;
   askCum = 0;
   bidCum = 0;   

   return(0);
}

int deinit()
{


   return(0);
}


int start()
{
   int counted_bars=IndicatorCounted();
   
   if( start )
   {
      // ouwe koeien
      for( int i = 0; i <= Bars; i++ )
      {
         tfv[i] = OuweKoeien(i);
      }
      askCum = Bid;
      askTiks = 1;
      start = false;
      return(0);
   }
   
   if( dezeBar == Bars )
   {
      // huidige bar
      askCum = ( ( askCum * askTiks ) + ( Bid * Exponential ) ) / ( Exponential + askTiks );
      askTiks++;
      tfv[0] = askCum;
   }
   else
   {  
      askTiks = 1;
      dezeBar = Bars;
   }
   return(0);
}

double OuweKoeien(int index)
{
   if( Period() == PERIOD_M1 )
      return( ( iHigh(NULL, 0, index) + iLow(NULL, 0, index) ) / 2.0 );
   else
   {
      datetime begin = iTime(NULL, 0, index);
      datetime eind = iTime(NULL, 0, index-1);
      
      int beginindex = iBarShift(NULL, PERIOD_M1, begin, false);
      int eindindex = iBarShift(NULL, PERIOD_M1, eind, false);
      
      double waarde = 0;
      int teller = 1; 
      for(int i = eindindex+1; i<= beginindex; i++ )
      {
         waarde = ( (waarde * teller) + ( (( iHigh(NULL, PERIOD_M1, i) + iLow(NULL, PERIOD_M1, i) ) / 2) * Exponential ) ) / ( teller + Exponential );
      }
      return( waarde );
   }
}

Comments