Ткните где ошибка, плз...

 
Проба пера так сказать.
Почемуто не работает и не рисует. Ткните носом где ошибка
//+------------------------------------------------------------------+
//|                                                      Kaufman.mq4 |
//|                              Copyright © 2004, by konKop & wellx |
//|                                        "http://www.metaquotes.net" |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, by konKop, GOODMAN, Mstera, af + wellx"
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- input parameters
extern int       periodAMA=9;
extern int       nfast=2;
extern int       nslow=30;
extern int       G=2;

//---- buffers
double kAMAbuffer[];

int    cbars=0;
double slowSC,fastSC;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   //SetIndexDrawBegin(0,nslow+nfast);
   SetIndexBuffer(0,kAMAbuffer);
   
   slowSC=2/(nslow+1);
   fastSC=2/(nfast+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    i,pos=0;
   double noise,noise0,AMA,AMA0,signal,ER,SSC;
   
//---- TODO: add your code here
   if (Bars<=(periodAMA+2)) return(0);
   cbars=IndicatorCounted();
   
   //---- check for possible errors
   if (cbars<0) return(-1);
//---- last counted bar will be recounted
   if (cbars>0) cbars--;
   pos=Bars-periodAMA-2;
   Print("cbars: ", cbars);
   
   while (pos>=0)
     {
      if(pos==Bars-periodAMA-2) AMA0=Close[pos+1];
      signal=MathAbs(Close[pos]-Close[pos+periodAMA]);
      noise=0;
      for(i=0;i<periodAMA;i++)
       {
        noise=noise+MathAbs(Close[pos+i]-Close[pos+i+1]);
       };
      ER =signal/noise;
      SSC=(ER*(fastSC-slowSC))+slowSC;
      AMA=AMA0+(MathPow(SSC,G)*(Close[pos]-AMA0));
      kAMAbuffer[pos]=AMA;
      AMA0=AMA;
      pos--;
     };
//----
   return(0);
  }
 
Не бери в голову. Это один из первых индикаторов, которые я попробовал перенести в четверку. Все остальные работают. ASCTrend, все "Силверы". А АМА не рисует. Я "пронюхал" весь код программы посимвольно. Все верно, но не рисует. Отсюда совет - обожди пока с АМА. Дождемся более-менее рабочей беты. Потом будем копья ломать.
 
Похоже что явная ошибка в реализации формул расчета.
Я попробовал - получается горизонтальная линия, которая очень далека от рыночных цен
(поэтому ее не видно). Пример: рынок на 1.3640, а расчетное значение АМА 1.3035 .
Проверьте, пожалуйста, формулы. И переменную AMA0 надо изначально инициализовать!
 
Уважаемый Ренат!
Вы совершенно правы в смысле отображения графика этого индикатора. Но дело в том, что я "перенёс" кучку аналогичных индикаторов в четверку из тройки. Все работают на ура, кроме этого. Алгоритм АМА (как и прочих) соблюл один к одному, как в тройке. В тройке рисует шарики на положенных местах. В четверке нету шариков. Моя интерпретация троешного варианта чуть-чуть отличается от приведённого выше г-ном wellx'ом и полностью совпадает с "шарикоподобным" троешным вариантом. Если хотите, вышлю Вам в мыло троешный и четвёрошный варианты. Но пока, лично мне, не хотелось бы Вас грузить излишне. На 90% всё что хочется, работает. Хотелось бы получить побыстрее рабочую (хотя бы бету) версию, которая "поддержала" бы наши реальные счета. А с мелочёвкой типа этой мы (или Вы) разберёмся потом в рабочем порядке. Как в тройке. Она же (тройка) была совершенно функциональной независимо от того, что были 3.40, 3.50, 3.60 ... 3.83 версии.
 
К сожалению, я не совсем в курсе - что это за индикатор и как он считается.
Могу начать разбираться только через дня 3 - Новый Год уже.
 
AMA = adaptive MA by Kaufman.
или по русски адаптивная средняя скользящая.
Прочитать можно здесь:

http://forum.viac.ru/viewtopic.php?p=21166#21166

Спасибо за ответы, а то я уже начал думать что совсем плох стал в программинге.

Если логика права ,то похоже проблема в функции MathPow or Mathabs.

To renat: когда писал индикатор, то долго ломал голову над логикой indikcator-counted, Bars & etc.

Также долго вникал с особенностями инит и старт функций. Может имеет смысл написать более обширный материал по философии работы модулей при инициализации и старта, подсчета баров и оптимизаций , какие переменные видны при инит и старт функциях и т.д. так сказать developer guide from authors. И может встроите какой никакой отладчик, если не пошаговый хоть инспектор для отслеживания переменных. А то малейшая ошибка и лог уходит в ГИГАБАЙТЫ.

Спасибо всем за ответы .

С Новым годом и удач в Новом Году!!!
Причина обращения: