i-SpectrAnalysis_RVI

Author: Copyright © 2006, klot
Indicators Used
Relative Vigor index
0 Views
0 Downloads
0 Favorites
i-SpectrAnalysis_RVI
ÿþ//+------------------------------------------------------------------+ 

//|                                         i-SpectrAnalysis_RVI.mq5 | 

//|                                           Copyright © 2006, klot | 

//|                                                     klot@mail.ru | 

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

#property copyright "Copyright © 2006, klot" 

#property link      "klot@mail.ru" 

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

#property version   "1.00" 

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

#property indicator_separate_window

//---- 4;O @0AG5B0 8 >B@8A>2:8 8=48:0B>@0 8A?>;L7>20=> 420 1CD5@0

#property indicator_buffers 2

//---- 8A?>;L7>20=> >4=> 3@0D8G5A:>5 ?>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 1 2 2845 F25B=>3> >1;0:0

#property indicator_type1   DRAW_FILLING

//---- 2 :0G5AB25 F25Bjd 8=48:0B>@0 8A?>;L7>20=K

#property indicator_color1  clrDodgerBlue,clrDarkViolet

//--- >B>1@065=85 <5B:8 8=48:0B>@0 

#property indicator_label1  "i-SpectrAnalysis_RVI" 

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

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

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

#property indicator_level1 0.0 

#property indicator_levelcolor clrGray 

#property indicator_levelstyle STYLE_DASHDOTDOT 

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

//| 1JO2;5=85 :>=AB0=B                          | 

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

#define RESET 0     // :>=AB0=B0 4;O 2>72@0B0 B5@<8=0;C :><0=4K =0 ?5@5AG5B 8=48:0B>@0 

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

//| ?8A0=85 181;8>B5:8 dt_FFT.mqh               | 

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

#include <dt_FFT.mqh> 

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

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

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

input uint RVIPeriod=14;                          // averaging period 

input uint N = 7;                                 // number Length 

input uint SS = 20;                               // smoothing factor 

input int Shift=0;                                // The shift indicator in the horizontal bars

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

//---- >1JO2;5=85 48=0<8G5A:8E <0AA82>2, :>B>@K5 2 40;L=59H5< 1C4CB 8A?>;L7>20=K 2 :0G5AB25 8=48:0B>@=KE 1CD5@>2

double RVIBuffer[],SignBuffer[];

//--- 

int M,tnn1,ss;

//--- 

double aa[];

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

int min_rates_total;

//--- >1JO2;5=85 F5;>G8A;5==KE ?5@5<5==KE 4;O E5=4;>2 8=48:0B>@>2 

int Ind_Handle;

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

//| i-SpectrAnalysis_RVI indicator initialization function           | 

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

int OnInit()

  {

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

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

   M=ArrayResize(aa,tnn1+1);

   ArraySetAsSeries(aa,true);

   ss=int(MathMin(SS,M));

   min_rates_total=int(M);

//--- ?>;CG5=85 E5=4;0 8=48:0B>@0 iRVI 

   Ind_Handle=iRVI(Symbol(),PERIOD_CURRENT,RVIPeriod);

   if(Ind_Handle==INVALID_HANDLE)

     {

      Print(" 5 C40;>AL ?>;CG8BL E5=4; 8=48:0B>@0 iRVI");

      return(INIT_FAILED);

     }

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

   SetIndexBuffer(0,RVIBuffer,INDICATOR_DATA);

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

   SetIndexBuffer(1,SignBuffer,INDICATOR_DATA);

//--- >ACI5AB2;5=85 A42830 8=48:0B>@0 1 ?> 3>@87>=B0;8 

   PlotIndexSetInteger(0,PLOT_SHIFT,Shift);

//--- >ACI5AB2;5=85 A42830 =0G0;0 >BAG5B0 >B@8A>2:8 8=48:0B>@0 

   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,min_rates_total);

//--- CAB0=>2:0 7=0G5=89 8=48:0B>@0, :>B>@K5 =5 1C4CB 2848<K =0 3@0D8:5 

   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);

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

   ArraySetAsSeries(RVIBuffer,true);

   ArraySetAsSeries(SignBuffer,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,"i-SpectrAnalysis_RVI");

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

   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);

//--- 7025@H5=85 8=8F80;870F88 

   return(INIT_SUCCEEDED);

  }

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

//| i-SpectrAnalysis_RVI 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[],

                const double &low[],

                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 @0AG5B0 

   if(rates_total<min_rates_total || BarsCalculated(Ind_Handle)<rates_total) return(RESET);

//--- 

   int end=M-1;

//---- >ACI5AB2;5=85 A42830 =0G0;0 >BAGQB0 >B@8A>2:8 8=48:0B>@>2

   int drawbegin=rates_total-end;

   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,drawbegin);

   PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,drawbegin);

//--- 45;05< @0AGQB RVI 

   if(CopyBuffer(Ind_Handle,0,0,M,aa)<=0) return(RESET);

   fastcosinetransform(aa,tnn1,false);

   for(int kkk=0; kkk<=end && !IsStopped(); kkk++) if(kkk>=ss) aa[kkk]=0.0;

   fastcosinetransform(aa,tnn1,true);

   for(int rrr=0; rrr<=end && !IsStopped(); rrr++) RVIBuffer[rrr]=aa[rrr];

//--- 45;05< @0AGQB A83=0;L=>9 ;8=88 

   if(CopyBuffer(Ind_Handle,1,0,M,aa)<=0) return(RESET);

   fastcosinetransform(aa,tnn1,false);

   for(int kkk=0; kkk<=end && !IsStopped(); kkk++) if(kkk>=ss) aa[kkk]=0.0;

   fastcosinetransform(aa,tnn1,true);

   for(int rrr=0; rrr<=end && !IsStopped(); rrr++) SignBuffer[rrr]=aa[rrr];

//---     

   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 ---