MAMA. Ошибка в расчетах? - страница 3

 
Integer:
Глядя на то как индикатор работает в МТ, явно видно, что он переписан неправильно. В Wealth Lab он наверно не перерисовывает?

Что значит "перерисовывает"? Он должен рисовать значения из массива, которые высчитываются 1 раз.

 
Renat:
Я так понимаю, что мне приходится Вам объяснять прописные истины.

Повторю еще раз: докажите, что код абсолютно одинаков. Без этого даже не тратьте время на общие и бездоказательные сравнения. Если нет построкового доказательства, то и темы нет.


А я выложил что есть, остальное пусть народ смотрит, если захочет. Я уверен что код одинаков, вы его даже не смотрели и не сравнивали. О чем тогда речь?

А тема есть. Ибо не на все темы нужны построковые доказательства.

 
Mr_Diesel:
Integer:
Глядя на то как индикатор работает в МТ, явно видно, что он переписан неправильно. В Wealth Lab он наверно не перерисовывает?

Что значит "перерисовывает"? Он должен рисовать значения из массива, которые высчитываются 1 раз.


Запустите в тестер в визуальном режиме по всем тикам, подключите индикатор, посмотрите что происходит, потом остановите тестирование и переподключите индикатор и тоже обратите внимание на то что произойдет.
 
Integer:
Mr_Diesel:
Integer:
Глядя на то как индикатор работает в МТ, явно видно, что он переписан неправильно. В Wealth Lab он наверно не перерисовывает?

Что значит "перерисовывает"? Он должен рисовать значения из массива, которые высчитываются 1 раз.


Запустите в тестер в визуальном режиме по всем тикам, подключите индикатор, посмотрите что происходит, потом остановите тестирование и переподключите индикатор и тоже обратите внимание на то что произойдет.

Да, значения изменяются:(((
 
Я посмотрел код индикатора MAMA.mq4, и увидел, что он написан явно неправильно. Как он должен выглядеть правильно - я не знаю. То, что приведенный код будет перерисовываться - тоже сразу видно. Чтобы не гадать на кофейной гуще, приведите пожалуйста ссылку на правильный алгоритм, из которого можно понять идею. Ссылки на коды из WL или EL ничего не дают, так как придется изучать скрупулезно эти языки ради частного случая.
 
Но на истории (при первом присоединении) он по идее должен правильно рисовать. Наверняка есть ошибка. Попробуйте рисовать на графике промежуточные значения используемые в расчетах - и в МТ и в WL - так и найдете что не правильно. Обеспечить работу по тикам без перерисовки будет посложней...
 
Rosh:
Я посмотрел код индикатора MAMA.mq4, и увидел, что он написан явно неправильно. Как он должен выглядеть правильно - я не знаю. То, что приведенный код будет перерисовываться - тоже сразу видно. Чтобы не гадать на кофейной гуще, приведите пожалуйста ссылку на правильный алгоритм, из которого можно понять идею. Ссылки на коды из WL или EL ничего не дают, так как придется изучать скрупулезно эти языки ради частного случая.


Вобщем-то алгоритм правильный в Mama.mq4, как и в #Mama.mq4 =) О чем я выше и говорил. Возможно, проблема именно в перерисовке, как указывает уважаемый Integer, и как заметили вы. Я использовал статью автора индикатора, http://www.mesasoftware.com/Papers/MAMA.exe там в архиве вордовский док и исходник на Easy Language. Насколько я разобрался с ним и с WL, алгоритм правильный.

 
Mr_Diesel:
Renat:
Я так понимаю, что мне приходится Вам объяснять прописные истины.

Повторю еще раз: докажите, что код абсолютно одинаков. Без этого даже не тратьте время на общие и бездоказательные сравнения. Если нет построкового доказательства, то и темы нет.

Вы хотите чтобы я вам под каждой строчкой из МТ отписал строчку из ВЛ с комментами?
Именно. Ведь это же Вы задали вопрос по MAMA, а не я.

Так как Вы не нашли причины сами, то я Вам указал путь решения проблемы. Путь в сравнении исходников.
 
Mr_Diesel:


Вобщем-то алгоритм правильный в Mama.mq4, как и в #Mama.mq4 =) О чем я выше и говорил. Возможно, проблема именно в перерисовке, как указывает уважаемый Integer, и как заметили вы. Я использовал статью автора индикатора, http://www.mesasoftware.com/Papers/MAMA.exe там в архиве вордовский док и исходник на Easy Language. Насколько я разобрался с ним и с WL, алгоритм правильный.


Код как раз таки абсолютно неправильный, это видно уже по первым двум циклам, которые были перенесены в МТ4 просто копи-пастом. То есть, тот кто пытался переписать код на MQL4, даже не вникал в него (возможно, тот человек знал EL, но не знал MQL4):

int start()
  {
  if (Bars <= 5) return(0);
  int i, j, counted_bars = IndicatorCounted();
 
  double jI, jQ, DeltaPhase, alpha; 
  double Price[4], Smooth[7], Detrender[7], Q1[7], I1[7], I2[2], Q2[2];
  double Re[2], Im[2], SmoothPeriod[2], Period_[2], Phase[2], MAMA[2], FAMA[2];
 
  for (i = 6; i >= 0; i--)
  {
    Smooth[i] = 0;
    Detrender[i] = 0;
    Q1[i]=0;
    I1[i]=0;
  }
 
  for (i = 1; i >= 0; i--)
  {
    I2[i]=0;
    Q2[i]=0;
    Re[i]=0;
    Im[i]=0;
    SmoothPeriod[i]=0;
    Period_[i]=0;
    Phase[i]=0;
    MAMA[i]=0;
    FAMA[i]=0;
  }
Что мы видим? Зачем то рассчитываются данные для последних шести баров (коэффициенты сглаживания и детрендевости) и потом применяются ко все барам.
 
Rosh:
Mr_Diesel:


Вобщем-то алгоритм правильный в Mama.mq4, как и в #Mama.mq4 =) О чем я выше и говорил. Возможно, проблема именно в перерисовке, как указывает уважаемый Integer, и как заметили вы. Я использовал статью автора индикатора, http://www.mesasoftware.com/Papers/MAMA.exe там в архиве вордовский док и исходник на Easy Language. Насколько я разобрался с ним и с WL, алгоритм правильный.


Код как раз таки абсолютно неправильный, это видно уже по первым двум циклам, которые были перенесены в МТ4 просто копи-пастом. То есть, тот кто пытался переписать код на MQL4, даже не вникал в него (возможно, тот человек знал EL, но не знал MQL4):

int start()
  {
  if (Bars <= 5) return(0);
  int i, j, counted_bars = IndicatorCounted();
 
  double jI, jQ, DeltaPhase, alpha; 
  double Price[4], Smooth[7], Detrender[7], Q1[7], I1[7], I2[2], Q2[2];
  double Re[2], Im[2], SmoothPeriod[2], Period_[2], Phase[2], MAMA[2], FAMA[2];
 
  for (i = 6; i >= 0; i--)
  {
    Smooth[i] = 0;
    Detrender[i] = 0;
    Q1[i]=0;
    I1[i]=0;
  }
 
  for (i = 1; i >= 0; i--)
  {
    I2[i]=0;
    Q2[i]=0;
    Re[i]=0;
    Im[i]=0;
    SmoothPeriod[i]=0;
    Period_[i]=0;
    Phase[i]=0;
    MAMA[i]=0;
    FAMA[i]=0;
  }
Что мы видим? Зачем то рассчитываются данные для последних шести баров (коэффициенты сглаживания и детрендевости) и потом применяются ко все барам.

Они не расчитываются в приведенном участке, а обнуляются после создания для чистоты эксперимента. А расчитываются они в основном цикле. И расчитываются именно для последних 7 баров и потом используются в расчетах по алгоритму. Так что это не указывает на ошибку.

Причина обращения: