i-spectranalysis_osma

Author: Copyright © 2006, klot
Indicators Used
Moving Average of Oscillator
0 Views
0 Downloads
0 Favorites
i-spectranalysis_osma
ÿþ//+------------------------------------------------------------------+ 

//|                                        i-SpectrAnalysis_OsMA.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 

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

#property indicator_buffers 2 

//--- 8A?>;L7>20=> 2A53> >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 2 2845 G5BK@QEF25B=>9 38AB>3@0<<K

#property indicator_type1 DRAW_COLOR_HISTOGRAM

//---- 2 :0G5AB25 F25B>2 G5BK@QEF25B=>9 38AB>3@0<<K 8A?>;L7>20=K

#property indicator_color1 clrDodgerBlue,clrDarkGreen,clrGray,clrPurple,clrMagenta

//--- ;8=8O 8=48:0B>@0 - =5?@5@K2=0O :@820O 

#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 8=48:0B>@0 

#property indicator_label1  "i-SpectrAnalysis_OsMA" 

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

//| 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 FastEMA=12;

input uint SlowEMA=26;                         

input uint MacdEMA=9;                                                

input ENUM_APPLIED_PRICE   MAPrice=PRICE_CLOSE;

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 1C4CB 2 40;L=59H5< 8A?>;L7>20=K 2 :0G5AB25 8=48:0B>@=KE 1CD5@>2

double IndBuffer[],ColorIndBuffer[];

//--- 

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

   Ind_Handle=iOsMA(Symbol(),PERIOD_CURRENT,FastEMA,SlowEMA,MacdEMA,MAPrice);

   if(Ind_Handle==INVALID_HANDLE)

     {

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

      return(INIT_FAILED);

     }

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

   SetIndexBuffer(0,IndBuffer,INDICATOR_DATA);

//---- ?@52@0I5=85 48=0<8G5A:>3> <0AA820 2 F25B>2>9, 8=45:A=K9 1CD5@   

   SetIndexBuffer(1,ColorIndBuffer,INDICATOR_COLOR_INDEX);

//--- >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,EMPTY_VALUE);

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

   ArraySetAsSeries(IndBuffer,true);

   ArraySetAsSeries(ColorIndBuffer,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_OsMA");

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

   IndicatorSetInteger(INDICATOR_DIGITS,0);

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

   return(INIT_SUCCEEDED);

  }

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

//| i-SpectrAnalysis_OsMA 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);

//----  

   for(int bar=rates_total-1; bar>=prev_calculated && !IsStopped(); bar--) IndBuffer[bar]=NULL;

//---- :>?8@C5< 2=>2L ?>O282H85AO 40==K5 2 <0AA82 

   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]=NULL;

   fastcosinetransform(aa,tnn1,true);

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

//---- 

if(prev_calculated>rates_total || prev_calculated<=0) end--;

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

   for(int rrr=0; rrr<=end && !IsStopped(); rrr++)

     {

      int clr=2;

      double diff=IndBuffer[rrr]-IndBuffer[rrr+1]; 

      double OsMA=IndBuffer[rrr];



      if(OsMA>0)

        {

         if(diff>0.0) clr=0;

         if(diff<0.0) clr=1;

        }



      if(OsMA<0)

        {

         if(diff<0.0) clr=4;

         if(diff>0.0) clr=3;

        }

      ColorIndBuffer[rrr]=clr;

     }

//----         

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