//+------------------------------------------------------------------+ //| 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 clrOrangeRed 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,clrOrangeRed); 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; if(counted_bars==0) limit-=HV_Period; //---- основной цикл for(int i=0; i0 ? HV_Period : 1); 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)>0 ?(HV_Period-1) : 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)); } //+------------------------------------------------------------------+