Author: Copyright © 2008, Ilnur
0 Views
0 Downloads
0 Favorites
iVAR_v1
ÿþ//+------------------------------------------------------------------+

//|                                                         iVAR.mq5 |

//|                                          Copyright © 2008, Ilnur |

//|                                        http://www.metaquotes.net |

//+------------------------------------------------------------------+

/* =48:0B>@ >B>1@0605B 8=45:A 20@80F88 F5=>2>3> @O40, 2KG8A;5==>3>

 * =0 <8=8<0;L=>< ?@54H5AB2CNI5< 8=B5@20;5 4;8=K 2^n. =45:A 20@80F88

 * ?>:07K205B, GB> ?@5>1;0405B 2> 2@5<5==>< @O4C   B@5=4>20O 8;8

 * D;5B>20O A>AB02;ONI0O, 8;8 65 @O4 2545B A51O A;CG09=>.

 *

 * .. C1>28:>2 8 4@. -  07<5@=>ABL <8=8<0;L=>3> ?>:@KB8O 8

 * ;>:0;L=K9 0=0;87 D@0:B0;L=KE 2@5<5==KE @O4>2.

 */

//---- 02B>@AB2> 8=48:0B>@0

#property copyright "Copyright © 2008, Ilnur"

//---- AAK;:0 =0 A09B 02B>@0

#property link      "http://www.metaquotes.net"

//---- =><5@ 25@A88 8=48:0B>@0

#property version   "1.20"

#property description "=45:A 20@80F88"

//---- >B@8A>2:0 8=48:0B>@0 2 >B45;L=>< >:=5

#property indicator_separate_window

//---- :>;8G5AB2> 8=48:0B>@=KE 1CD5@>2 1

#property indicator_buffers 1 

//---- 8A?>;L7>20=> 2A53> >4=> 3@0D8G5A:85 ?>AB@>5=85

#property indicator_plots   1

//+-----------------------------------+

//|  0@0<5B@K >B@8A>2:8 8=48:0B>@0   |

//+-----------------------------------+

//---- >B@8A>2:0 8=48:0B>@0 2 2845 ;8=88

#property indicator_type1 DRAW_LINE

//---- 2 :0G5AB25 F25B0 ;8=88 8A?>;L7>20= :@0A=K9 F25B

#property indicator_color1 clrRed

//---- ;8=8O 8=48:0B>@0 - A?;>H=0O

#property indicator_style1 STYLE_SOLID

//---- B>;I8=0 ;8=88 8=48:0B>@0 @02=0 2

#property indicator_width1 2

//---- >B>1@065=85 <5B:8 A83=0;L=>9 ;8=88

#property indicator_label1  "iVAR"

//+----------------------------------------------+

//| 0@0<5B@K >B>1@065=8O 3>@87>=B0;L=KE C@>2=59 |

//+----------------------------------------------+

#property indicator_level1 0.5

#property indicator_levelcolor clrBlue

#property indicator_levelstyle STYLE_DASHDOTDOT

//+----------------------------------------------+

//| E>4=K5 ?0@0<5B@K 8=48:0B>@0                 |

//+----------------------------------------------+

input int N=5; // ?5@8>4 8=48:0B>@0  

//+----------------------------------------------+

//---- >1JO2;5=85 48=0<8G5A:8E <0AA82>2, :>B>@K5 1C4CB 2 

// 40;L=59H5< 8A?>;L7>20=K 2 :0G5AB25 8=48:0B>@=KE 1CD5@>2

double ExtLineBuffer[];



//---- 1JO2;5=85 ?5@5<5==>9 4;O E@0=5=8O 7=0G5=8O =><5@0

int Num;

//---- 1JO2;5=85 ?5@5<5==>9 4;O E@0=5=8O 7=0G5=8O ;>30@8D<0

double MathLogX2;

//---- 1JO2;5=85 F5;KE ?5@5<5==KE =0G0;0 >BAGQB0 40==KE

int StartBars;

//+------------------------------------------------------------------+

//| Custom indicator initialization function                         |

//+------------------------------------------------------------------+  

void OnInit()

  {

//---- =8F80;870F8O ?5@5<5==KE =0G0;0 >BAGQB0 40==KE

   StartBars=int(MathPow(2,N));

//---- =8F80;870F8O ?5@5<5==KE 

   Num=N+1;

   MathLogX2=MathLog(2.0);

//---- ?@52@0I5=85 48=0<8G5A:>3> <0AA820 ExtLineBuffer 2 8=48:0B>@=K9 1CD5@

   SetIndexBuffer(0,ExtLineBuffer,INDICATOR_DATA);

//---- 8=8F80;870F88 ?5@5<5==>9 4;O :>@>B:>3> 8<5=8 8=48:0B>@0

   string shortname;

   StringConcatenate(shortname,"iVAR(",N,")");

//---- A>740=85 <5B:8 4;O >B>1@065=8O 2 :=5 40==KE

   PlotIndexSetString(0,PLOT_LABEL,shortname);

//---- 70?@5B =0 >B@8A>2:C 8=48:0B>@>< ?CABKE 7=0G5=89

   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);

//---- 8=45:A0F8O M;5<5=B>2 2 1CD5@5 :0: 2 B09<A5@88

   ArraySetAsSeries(ExtLineBuffer,true);

//---- A>740=85 8<5=8 4;O >B>1@065=8O 2 >B45;L=>< ?>4>:=5 8 2> 2A?;K20NI59 ?>4A:07:5

   IndicatorSetString(INDICATOR_SHORTNAME,shortname);

//---- >?@545;5=85 B>G=>AB8 >B>1@065=8O 7=0G5=89 8=48:0B>@0

   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);

//----

  }

//+------------------------------------------------------------------+

//| Custom indicator iteration function                              |

//+------------------------------------------------------------------+

int OnCalculate(

                const int rates_total,    // :>;8G5AB2> 8AB>@88 2 10@0E =0 B5:CI5< B8:5

                const int prev_calculated,// :>;8G5AB2> 8AB>@88 2 10@0E =0 ?@54K4CI5< B8:5

                const datetime &time[],

                const double &open[],

                const double& high[],     // F5=>2>9 <0AA82 <0:A8<C<>2 F5=K 4;O @0AGQB0 8=48:0B>@0

                const double& low[],      // F5=>2>9 <0AA82 <8=8<C<>2 F5=K  4;O @0AGQB0 8=48:0B>@0

                const double &close[],

                const long &tick_volume[],

                const long &volume[],

                const int &spread[]

                )

  {

//---- ?@>25@:0 :>;8G5AB20 10@>2 =0 4>AB0B>G=>ABL 4;O @0AGQB0

   if(rates_total<StartBars) return(0);



//---- >1JO2;5=8O ;>:0;L=KE ?5@5<5==KE 

   int limit,ihigh,ilow,nInterval;

   double Delta,Xc,Yc,Sx,Sy,Sxx,Sxy;



//---- @0AGQB AB0@B>2>3> =><5@0 first 4;O F8:;0 ?5@5AGQB0 10@>2

   if(prev_calculated>rates_total || prev_calculated<=0) // ?@>25@:0 =0 ?5@2K9 AB0@B @0AGQB0 8=48:0B>@0

      limit=rates_total-StartBars-1; // AB0@B>2K9 =><5@ 4;O @0AGQB0 2A5E 10@>2

   else limit=rates_total-prev_calculated; // AB0@B>2K9 =><5@ 4;O @0AGQB0 =>2KE 10@>2



//---- 8=45:A0F8O M;5<5=B>2 2 <0AA820E :0: 2 B09<A5@8OE  

   ArraySetAsSeries(high,true);

   ArraySetAsSeries(low,true);



//---- >A=>2=>9 F8:; @0AGQB0 8=48:0B>@0

   for(int bar=limit; bar>=0; bar--)

     {

      Sx=Sy=Sxx=Sxy=NULL;



      for(int iii=0; iii<=N; iii++)

        {

         Delta=NULL;

         nInterval=int(MathPow(2,N-iii));

         double res=MathPow(2,iii);

         //---- AC<<8@C5< @07=8FK <0:A8<0;L=>9 8 <8=8<0;L=>9 F5= =0 8=B5@20;5

         for(int kkk=0; kkk<res; kkk++)

           {

            int barx=bar+nInterval*kkk;

            ihigh=ArrayMaximum(high,barx,nInterval);

            ilow=ArrayMinimum(low,barx,nInterval);

            Delta+=high[ihigh]-low[ilow];

           }

         //---- 2KG8A;O5< :>>@48=0BK 20@80F88 2 42>9=>< ;>30@8D<8G5A:>< <0AHB015

         Xc = (N-iii)*MathLogX2;

         Yc = MathLog(Delta);



         //---- =0:0?;8205< 40==K5 4;O =0E>645=8O :>MDD8F85=B>2 ;8=88 @53@5AA88 A ?><>ILN 

         Sx += Xc;

         Sy += Yc;

         Sxx += Xc*Xc;

         Sxy += Xc*Yc;

        }

      //---- 2KG8A;O5< 8=45:A 20@80F88 (:>MDD8F85=B =0:;>=0 ;8=88 @53@5AA88)

      ExtLineBuffer[bar]=-(Sx*Sy-Num*Sxy)/(Sx*Sx-Num*Sxx);

     }

//----     

   return(rates_total);

  }

//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---