Помогите с индикатором АМА

 
Всем добрый день!
Я довольно не плохо программирую индикаторы в MetaStock, однако что касается МетаТрейдера, то я полный тук-тук.
Индикатор АМА у меня уже есть, но только в пакете МетаСток. Теперь хотелось бы запрограммировать его в МетаТрейдер. Покопался на сайте и нашел, за что автору большое спасибо.
Однако есть несколько ньюансов. Во-первых, как сделать так, чтобы когда наносишь индикатор на график он не показывал крупных (синих и красных) точек (на сколько я понял это торговые сигналы).
И во-вторых, как на базе этого индикатора сделать другой, который бы находил разницу между текущим значением АМА и предыдущим, при этом выводил индикатор в отдельное окно в виде гистограммы.
Ниже привожу пример индикатора АМА который нашел на этом сайте.
//+------------------------------------------------------------------+
//|                                                          AMA.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                        https://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, by konKop,wellx"
#property link      "https://www.metaquotes.net/"
 
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Sienna
#property indicator_color2 Blue
#property indicator_color3 Red
 
//---- input parameters
extern int       periodAMA = 9;
extern int       nfast = 2;
extern int       nslow = 30;
extern double    G = 2.0;
extern double    dK = 2.0; 
 
//---- buffers
double kAMAbuffer[];
double kAMAupsig[];
double kAMAdownsig[];
 
//+------------------------------------------------------------------+
 
int    cbars=0, prevbars=0, prevtime=0;
 
double slowSC,fastSC;
 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
    //---- indicators
    SetIndexStyle(0, DRAW_LINE, 0, 2);
    SetIndexStyle(1, DRAW_ARROW);
    SetIndexArrow(1, 108);
    SetIndexStyle(2, DRAW_ARROW);
    SetIndexArrow(2, 108);
    //SetIndexDrawBegin(0,nslow+nfast);
    SetIndexBuffer(0, kAMAbuffer);
    SetIndexBuffer(1, kAMAupsig);
    SetIndexBuffer(2, kAMAdownsig);
 //----
    IndicatorDigits(4);
   
    //slowSC=0.064516;
    //fastSC=0.2;
    //cbars=IndicatorCounted();
    //----
    return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
    return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int    i, pos = 0;
    double noise = 0.000000001, AMA, AMA0, signal, ER;
    double dSC, ERSC, SSC, ddK;
    //----
    if(prevbars == Bars) 
        return(0);
    //---- TODO: add your code here
    slowSC = (2.0 / (nslow + 1));
    fastSC = (2.0 /(nfast + 1));
    cbars = IndicatorCounted();
    if(Bars <= (periodAMA + 2)) 
        return(0);
    //---- check for possible errors
    if(cbars < 0) 
        return(-1);
    //---- last counted bar will be recounted
    if(cbars > 0) 
        cbars--;
    pos = Bars - periodAMA - 2;
    AMA0 = Close[pos+1];
    while(pos >= 0)
      {
        if(pos == Bars - periodAMA - 2) 
            AMA0 = Close[pos+1];
        signal = MathAbs(Close[pos] - Close[pos+periodAMA]);
        noise = 0.000000001;
        for(i = 0; i < periodAMA; i++)
          {
            noise = noise + MathAbs(Close[pos+i] - Close[pos+i+1]);
          }
        ER = signal / noise;
        dSC = (fastSC - slowSC);
        ERSC = ER*dSC;
        SSC = ERSC + slowSC;
        AMA = AMA0 + (MathPow(SSC, G) * (Close[pos] - AMA0));
        kAMAbuffer[pos] = AMA;
        //----
        ddK = (AMA - AMA0);
        if((MathAbs(ddK)) > (dK*Point) && (ddK > 0)) 
            kAMAupsig[pos] = AMA; 
        else 
            kAMAupsig[pos] = 0;
        if((MathAbs(ddK)) > (dK*Point) && (ddK < 0)) 
            kAMAdownsig[pos] = AMA; 
        else kAMAdownsig[pos] = 0; 
        AMA0 = AMA;
        pos--;
      }
//----
    prevbars=Bars;
    return(0);
  }
//+------------------------------------------------------------------+
Заранее спасибо за ответы.
 

Ну хорошо раз уж никто не осмеливается мне помочь, тогда подскажите пожайлуста какую нибудь литературу или ссылку на информацию типа "Создание индикаторов в MQL4 для ЧАЙНИКОВ". Чтоб там не было заумных слов таких как .. функция возвращает предыдущее значение. .. или прочее. А на элементарном примере с полным пошаговым разжовыванием каждой строчки кода.
Ну например, трейлинг стоп на основе ATR в пакете МетаСток будет записан достаточно понятно.
При покупке H-ATR(14). Это означает что линия индикатора будет находиться от максимального значения цены с текущем баре на растоянии ATR расчитанного за 14 периодов.
При продаже L+ATR(14).

 
Спасибо Rosh, обязательно прочитаю и вникну.