ama_slope_v1

Author: Copyright � 2007, Kalenzo
0 Views
0 Downloads
0 Favorites
ama_slope_v1
//+------------------------------------------------------------------+
//|                                                    AMA_SLOPE.mq5 |
//|                                        Copyright © 2007, Kalenzo |
//|                                      bartlomiej.gorski@gmail.com | 
//+------------------------------------------------------------------+
//--- àâòîðñòâî èíäèêàòîðà
#property copyright "Copyright © 2007, Kalenzo"
//--- ññûëêà íà ñàéò àâòîðà
#property link      "bartlomiej.gorski@gmail.combartlomiej.gorski@gmail.com"
//--- íîìåð âåðñèè èíäèêàòîðà
#property version   "1.00"
//--- îòðèñîâêà èíäèêàòîðà â îòäåëüíîì îêíå
#property indicator_separate_window
//--- äëÿ ðàñ÷åòà è îòðèñîâêè èíäèêàòîðà èñïîëüçîâàí îäèí áóôåð
#property indicator_buffers 1
//--- èñïîëüçîâàíî îäíî ãðàôè÷åñêå ïîñòðîåíèå
#property indicator_plots   1
//+----------------------------------------------+
//| Ïàðàìåòðû îòðèñîâêè èíäèêàòîðà               |
//+----------------------------------------------+
//--- îòðèñîâêà èíäèêàòîðà 1 â âèäå ëèíèè
#property indicator_type1   DRAW_LINE
//--- â êà÷åñòâå öâåòà áû÷åé ëèíèè èíäèêàòîðà èñïîëüçîâàí ñèíå-ôèîëåòîâûé öâåò
#property indicator_color1  clrBlueViolet
//--- ëèíèÿ èíäèêàòîðà 1 - íåïðåðûâíàÿ êðèâàÿ
#property indicator_style1  STYLE_SOLID
//--- òîëùèíà ëèíèè èíäèêàòîðà 1 ðàâíà 3
#property indicator_width1  3
//--- îòîáðàæåíèå áû÷åé ìåòêè èíäèêàòîðà
#property indicator_label1  "AMA_SLOPE"
//+----------------------------------------------+
//| Âõîäíûå ïàðàìåòðû èíäèêàòîðà                 |
//+----------------------------------------------+
input uint ama_period=9;        // Ïåðèîä AMA
input uint fast_ma_period=2;    // Ïåðèîä áûñòðîé ñêîëüçÿùåé
input uint slow_ma_period=30;   // Ïåðèîä ìåäëåííîé ñêîëüçÿùåé
input double G=2.0;             // Ñòåïåíü, â êîòîðóþ âîçâîäèòñÿ ñãëàæèâàþùàÿ êîíñòàíòà
input int AMAShift = 0;         // Ñäâèã èíäèêàòîðà ïî ãîðèçîíòàëè â áàðàõ 
input double dK = 1.0;          // Êîýôôèöèåíò äëÿ ôèëüòðà
//+----------------------------------------------+
//--- îáúÿâëåíèå äèíàìè÷åñêèõ ìàññèâîâ, êîòîðûå â äàëüíåéøåì
//--- áóäóò èñïîëüçîâàíû â êà÷åñòâå èíäèêàòîðíûõ áóôåðîâ
double AMABuffer[];
//--- îáúÿâëåíèå ïåðåìåííûõ ñ ïëàâàþùåé òî÷êîé äëÿ êîíñòàíò
double dSC,slowSC,fastSC;
int AMA_Handle,dAMA_Handle;
//--- îáúÿâëåíèå öåëûõ ïåðåìåííûõ íà÷àëà îòñ÷åòà äàííûõ
int min_rates_total;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+ 
void OnInit()
  {
//--- èíèöèàëèçàöèÿ ãëîáàëüíûõ ïåðåìåííûõ
   min_rates_total=int(ama_period+1);
//--- ïðåâðàùåíèå äèíàìè÷åñêîãî ìàññèâà AMABuffer â èíäèêàòîðíûé áóôåð
   SetIndexBuffer(0,AMABuffer,INDICATOR_DATA);
//--- îñóùåñòâëåíèå ñäâèãà èíäèêàòîðà 1 ïî ãîðèçîíòàëè íà ama_shift
   PlotIndexSetInteger(0,PLOT_SHIFT,AMAShift);
//--- îñóùåñòâëåíèå ñäâèãà íà÷àëà îòñ÷åòà îòðèñîâêè èíäèêàòîðà 1 íà 1
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,min_rates_total);
//--- çàïðåò íà îòðèñîâêó èíäèêàòîðîì ïóñòûõ çíà÷åíèé
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
//--- èíèöèàëèçàöèè ïåðåìåííîé äëÿ êîðîòêîãî èìåíè èíäèêàòîðà
   string shortname;
   StringConcatenate(shortname,"AMA_SLOPE( ",ama_period,", ",fast_ma_period,", ",slow_ma_period," )");
//--- ñîçäàíèå èìåíè äëÿ îòîáðàæåíèÿ â îòäåëüíîì ïîäîêíå è âî âñïëûâàþùåé ïîäñêàçêå
   IndicatorSetString(INDICATOR_SHORTNAME,shortname);
//--- îïðåäåëåíèå òî÷íîñòè îòîáðàæåíèÿ çíà÷åíèé èíäèêàòîðà
   IndicatorSetInteger(INDICATOR_DIGITS,0);
//--- èíèöèàëèçàöèÿ êîíñòàíò 
   slowSC = (2.0 / (slow_ma_period + 1));
   fastSC = (2.0 / (fast_ma_period + 1));
   dSC=fastSC-slowSC;
//---
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,    // êîëè÷åñòâî èñòîðèè â áàðàõ íà òåêóùåì òèêå
                const int prev_calculated,// êîëè÷åñòâî èñòîðèè â áàðàõ íà ïðåäûäóùåì òèêå
                const int begin,          // íîìåð íà÷àëà äîñòîâåðíîãî îòñ÷åòà áàðîâ
                const double &price[])    // öåíîâîé ìàññèâ äëÿ ðàñ÷åòà èíäèêàòîðà
  {
//--- ïðîâåðêà êîëè÷åñòâà áàðîâ íà äîñòàòî÷íîñòü äëÿ ðàñ÷åòà
   if(rates_total<min_rates_total+begin) return(0);
//--- îáúÿâëåíèÿ ëîêàëüíûõ ïåðåìåííûõ 
   int first,bar;
   double noise,AMA,signal,ER,ERSC,SSC,price0,price1;
   static double AMA_;
//--- ðàñ÷åò ñòàðòîâîãî íîìåðà first äëÿ öèêëà ïåðåñ÷åòà áàðîâ
   if(prev_calculated>rates_total || prev_calculated<=0) // ïðîâåðêà íà ïåðâûé ñòàðò ðàñ÷åòà èíäèêàòîðà
     {
      first=min_rates_total+begin+1; // ñòàðòîâûé íîìåð äëÿ ðàñ÷åòà âñåõ áàðîâ
      AMA_=price[first-1];
      AMA=AMA_;
      //--- óâåëè÷èì ïîçèöèþ íà÷àëà äàííûõ íà begin áàðîâ, âñëåäñòâèå ðàñ÷åòîâ íà äàííûõ äðóãîãî èíäèêàòîðà
      if(begin>0)
        {
         PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,min_rates_total+begin);
        }
     }
   else
     {
      first=prev_calculated-1; // ñòàðòîâûé íîìåð äëÿ ðàñ÷åòà íîâûõ áàðîâ
      AMA=AMA_;
     }
//--- îñíîâíîé öèêë ðàñ÷åòà èíäèêàòîðà AMA
   for(bar=first; bar<rates_total && !IsStopped(); bar++)
     {
      //---
      noise=_Point/10000;
      for(int iii=0; iii<int(ama_period); iii++)
        {
         price0=price[bar-iii-0];
         price1=price[bar-iii-1];
         noise+=MathAbs(price0-price1);
        }
      //---
      price0=price[bar];
      price1=price[bar-ama_period];
      signal=MathAbs(price0-price1);
      ER=signal/noise;
      ERSC=ER*dSC;
      SSC=ERSC+slowSC;
      AMA=AMA+(MathPow(SSC,G)*(price0-AMA));
      //--- èíèöèàëèçàöèÿ ÿ÷åéêè èíäèêàòîðíîãî áóôåðà ïîëó÷åííûì çíà÷åíèåì AMA
      AMABuffer[bar]=(AMA-AMA_)/_Point;
      if(bar<rates_total-1) AMA_=AMA;
     }
//---     
   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 ---