Volatility_Pivot_AplPrice_mtf





//+------------------------------------------------------------------+
//|                                             Volatility.Pivot.mq4 |
//+------------------------------------------------------------------+
//2008fxtsd mtf; price(0-6)
#property copyright "thanks to S.B.T. (Japan)" //RisenbergVolatilityCapture
#property link      "http://sufx.core.t3-ism.net/" //<<< convert this from VT, thanks mate !!!
//----
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 BlueViolet
//---- input parameters
extern double     atr_range      =  100;
extern double     ima_range      =  10;
extern double     atr_factor     =  3;
extern int        applied_Price  =  0;
extern bool       atr_Mode       =  true;
extern double     DeltaPrice     =  30;

//extern int MaxBarsToCount        =  500;
extern int TimeFrame = 0;
extern string  TimeFrames = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN|0-CurrentTF";
extern string   note_Price = "0C 1O 2H 3L 4Md 5Tp 6WghC: Md(HL/2)4,Tp(HLC/3)5,Wgh(HLCC/4)6";

string  IndicatorFileName;


//---- buffers
double TrStop[];
double ATR[];
double PriceBuff[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+

int init()
  {
   IndicatorBuffers(3);

   SetIndexStyle(0, DRAW_LINE);
   SetIndexBuffer(0, TrStop);
   SetIndexBuffer(1, ATR);
   SetIndexBuffer(2, PriceBuff);

//----
   string short_name="RisenbergVolatilityCapture";
   IndicatorShortName(short_name);
   SetIndexLabel(0,"range base");
   IndicatorFileName = WindowExpertName();
   if (TimeFrame < Period()) TimeFrame = Period();

//----

   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {

   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted();
   int      limit,i;
   if(counted_bars < 0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit = Bars-counted_bars;
//  limit= MathMin(limit,MaxBarsToCount);

   if (TimeFrame != Period())
      {
          limit = MathMax(limit,TimeFrame/Period());

         datetime TimeArray[];
        ArrayCopySeries(TimeArray ,MODE_TIME ,NULL,TimeFrame);
            for(i=0,int y=0; i<limit; i++)
           {
              if(Time[i]<TimeArray[y]) y++;
  TrStop[i]= iCustom(NULL,TimeFrame,IndicatorFileName,
             atr_range,ima_range,atr_factor,applied_Price,atr_Mode,DeltaPrice,0,y);
           }
         return(0);         
      }

   double DeltaStop;
//----

     for(i=0; i < limit; i ++) 
     {
      PriceBuff[i] = iMA(NULL,0,1,0,MODE_EMA,applied_Price,i);
      ATR[i]=iATR(NULL,0,atr_range,i);
     }
 
     for(i=limit - 1; i>=0; i --) 
      {
        if (atr_Mode) 
         {
         DeltaStop=iMAOnArray(ATR,0,ima_range,0,MODE_EMA,i) * atr_factor;
         //DeltaStop = iATR(NULL,0,atr_range,i) * atr_factor;
         }
          else 
         {
         DeltaStop=DeltaPrice*Point;
         }

        if (PriceBuff[i]==TrStop[i + 1]) 
         {
         TrStop[i]=TrStop[i + 1];
         }
          else 
         {
           if (PriceBuff[i+1]<TrStop[i+1] && PriceBuff[i]<TrStop[i+1]) 
           {
            TrStop[i]=MathMin(TrStop[i + 1], PriceBuff[i] + DeltaStop);
            }
             else 
            {
              if (PriceBuff[i+1]>TrStop[i+1] && PriceBuff[i]>TrStop[i+1]) 
               {
               TrStop[i]=MathMax(TrStop[i+1], PriceBuff[i] - DeltaStop);
               }
                else 
               {
               if (PriceBuff[i] > TrStop[i+1]) TrStop[i]=PriceBuff[i] - DeltaStop; 
               else TrStop[i]=PriceBuff[i] + DeltaStop;
               }
            }
        }
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

Series array that contains open time of each bar


Indicator Curves created:

Implements a curve of type DRAW_LINE


Indicators Used:

Moving average indicator
Indicator of the average true range


Custom Indicators Used:

Order Management characteristics:

Other Features: