Author: piccioli@gmail.com
i-VaR95
12 Views
0 Downloads
0 Favorites
i-VaR95
//+------------------------------------------------------------------+
//|                                                      i-VaR95.mq4 |
//|                                    http://piccstick.blogspot.com |
//|                                    http://piccstick.blogspot.com |
//+------------------------------------------------------------------+
//| Èíäèêàòîð îòîáðàæàåò çíà÷åíèå èñòîðè÷åñêîé âîëàòèëüíîñòè         |
//| Âîçìîæåí ðàñ÷åò âîëàòèëüíîñòè íåñêîëüêèìè ìåòîäàìè               |
//|  - Simple Historical Volatility                                  |
//| - Exponential Historical Volatility                              |
//|  - High-Low Historical Volatility                                |
//|                                                                  |  
//| Íåñêîëüêî çàìå÷àíèé:                                             |
//| 1. Äàííûé èíäèêàòîð íå ïîêàçûâàåò òî÷åê âõîäà â ðûíîê            |
//|    è âûõîäà èç íåãî ;-)                                          |
//| 2. Êàðòèíêà èíäèêàòîðà ïîõîæà íà êðòèíêó èçâåòíîãî ATR, îñîáåííî |
//|    ïðè ðàñ÷åòå ìåòîäîì Ïàðêèíñîíà, çíà÷åíèÿ òåì íå ìåíåå, ðàçíûå |
//| 3. Äëÿ ðàñ÷åòà VaR èñïîëüçóåòñÿ 95-ïðîöåíòíàÿ âåðîÿòíîñòü,       |
//|    òî åñòü èíäèêàòîð îòîáðàæàåò çíà÷åíèå â ïóíêòàõ (áåç ó÷åòà    | 
//|    5-ãî ñèìâîëà), êîòîðîå ìîæåò áûòü äîñòóãíóòî öåíîé ñ          |
//|    âåðîÿòíîñòüþ 5% çà ïåðèîä ðàâíûé èíâåòèöèîííîìó               |
//|    ãîðèçîíòó (grznt)                                             |
//|                                                                  |
//|                                                                  |   
//|                                                                  |
//| Ïî âñåì âîïðîñàì îáðàùàòüñÿ â ëè÷êó íà ýòîì ôîðóìå               |
//| èëè íà ïî÷òó.                                                    |
//|                                                                  |
//| Ïèøó íà çàêàç.                                                   |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "piccioli@gmail.com"
#property link      "http://piccstick.blogspot.com"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 OrangeRed

extern int HV_Period = 21;    // Ïåðèîä ðàñ÷åòà èñòîðè÷åñêîé âîëàòèëüíîñòè
extern int HV_Type = 0;       // Ñïîñîá âû÷èñëåíãèÿ âîëàòèëüíîñòè
                              // Âîçìîæíûå çíà÷åíèÿ:
                              // 0 - ìåòîä ïðîñòîé (ðàâíîâçâåøåííîé) ñêîëüçÿùåé ñðåäíåé
                              // 1 - ìåòîä ýêñïîíåíöèàëüíî-âçâåøåííîé ñêîëüçÿùåé 
                              // 2 - ýêñòðåìàëüíàÿ âîëàòèëüíîñòü, âîëàòèëüíîñòü Ïàðêèíñîíà
                              // Õ - ïðè ëþáîì äðóãîì çíà÷åíèè áóäåò âûâîäèòñÿ 95-ïðîöåíòíûé VaR (ñì. ñïåö. ëèòåðàòóðó)
   
extern double decline=0.94;   // êîýôôèöèåíò ñãëàæèâàíèÿ
                              // Òðàäèöèîííî ïðèíèìàåòñÿ ðàâíûì 0.94
                              // äàííûé ïàðàìåòð âëèÿåò òîëüêî íà åêñïîíåíöèàëüíî-âçâåøåííûé ìåòîä, òî åñòü êîãäà HV_Type = 1

extern int grznt=3;           // èíâåñòèöèîííûé ãîðèçîíò äëÿ âû÷èñëåíèÿ 95% VaR



double VAR[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0, DRAW_LINE, EMPTY, 2, OrangeRed);
   SetIndexBuffer(0,VAR);
   SetIndexLabel(0,"VaR");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted();
   int limit;

//----
   if(counted_bars>0) counted_bars = counted_bars-HV_Period;
     limit=Bars-counted_bars;
  //---- îñíîâíîé öèêë
     for(int i=0; i<limit; i++)
       {
       VAR[i]=HV(i);
       }

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

double HV(int j)
   {
   double shv = 0;
   double tshv = 0;
   double ehv = 0;
   double hlhv = 0;
   double var95 = 0;
   
   for (int i=j; i<(HV_Period+j); i++)
      {
      hlhv = hlhv + (MathLog(iHigh(Symbol(),0,i)/iLow(Symbol(),0,i))*MathLog(iHigh(Symbol(),0,i)/iLow(Symbol(),0,i)))/(4*MathLog(2));
      }

   hlhv = MathSqrt(hlhv/HV_Period);

   for (i=j; i<(HV_Period+j); i++)
   {
      tshv = tshv + MathLog(iClose(Symbol(),0,i)/iClose(Symbol(),0,i+1));
   }

   tshv = tshv/HV_Period;

   for (i=j; i<(HV_Period+j); i++)
   {
      shv = shv + (tshv - (MathLog(iClose(Symbol(),0,i)/iClose(Symbol(),0,i+1))))*(tshv - (MathLog(iClose(Symbol(),0,i)/iClose(Symbol(),0,i+1))));
   }

   shv = MathSqrt(shv/(HV_Period-1));
   
   
   if (decline >= 1 || decline <= 0)
      decline = 0.94;
      
   for (i=j; i<(HV_Period+j); i++)
   {
      ehv = ehv + decline*(tshv - (MathLog(iClose(Symbol(),0,i)/iClose(Symbol(),0,i+1))))*(tshv - (MathLog(iClose(Symbol(),0,i)/iClose(Symbol(),0,i+1))));
   }
   ehv = MathSqrt((1-decline)*shv);

   var95 = 1.65 * (shv) * 10000 * MathSqrt(grznt)+2*MarketInfo(Symbol(),MODE_SPREAD);
   
   if (HV_Type == 0)
      return(shv);
   else if (HV_Type == 1)
      return(ehv);
   else if (HV_Type == 2)
      return(hlhv);
   else 
      return(MathCeil(var95));
}

Comments