В каких случаях есть смысл держать часть кода робота в индикаторе? - страница 22

 
Integer:


Было и про это. Точно такой же аргумент как полтергейс и вода капающая с потолка.

Если не трудно, повторите (можно копи-пастом), что я пропустил. А то не понимаю, о чем вообще идет речь. Если вам кажется, что мой код не подходит для РЕАЛА. Прошу конкретизировать причину, чтобы не только особо умным было понятно. Вы же можете сформулировать то, что думаете.
 
hrenfx:
Если не трудно, повторите (можно копи-пастом), что я пропустил. А то не понимаю, о чем вообще идет речь. Если вам кажется, что мой код не подходит для РЕАЛА. Прошу конкретизировать причину, чтобы не только особо умным было понятно. Вы же можете сформулировать то, что думаете.

ДеЖаВю! Можете начать читать с самого начала страницы 19. Абсолютное повторение. Не забудьте про оператор break или return или определитесь заранее с количеством циклов.
 
Прочел, так и не понял, почему вы решили, что мой советник не подходит для РЕАЛА. Вы можете лить воду "уже все написано, перечитывайте", а можете конкретно (к чему несклолько раз призывал в этой ветке) аргументировать свою точку зрения. А так пока одна вода по непонятной мне причине.
 
hrenfx:
Прочел, так и не понял, почему вы решили, что мой советник не подходит для РЕАЛА. Вы можете лить воду "уже все написано, перечитывайте", а можете конкретно (к чему несклолько раз призывал в этой ветке), аргументировать свою точку зрения. А так пока одна вода по непонятной мне причине.

Был этот вопрос, отвечал на него, что НЕ БУДУ! Объяснение причины тоже было. Так что, давайте go to page 19 & while(true)...
 
hrenfx:
Прочел, так и не понял, почему вы решили, что мой советник не подходит для РЕАЛА. Вы можете лить воду "уже все написано, перечитывайте", а можете конкретно (к чему несклолько раз призывал в этой ветке) аргументировать свою точку зрения. А так пока одна вода по непонятной мне причине.


Для корректного расчета нужно использовать свой аналог IndicatorCounted(). Если разность между Bars и значением нашей функции (переменной) больше 1, то необходимо делать полный перерасчет.

Если разность равна 1, то расчет предыдущего бара и расчет нового. Если 0, то только перерасчет текущего бара

 
Хотя еще есть одна проблема при переносе расчета индикатора в советник. Это в том случае если нужно обращаться к значениям 5 или 10, или больше баров назад. Проблема решаемая конечно с определенными извратами. Но решаемая
 
Vinin:


Для корректного расчета нужно использовать свой аналог IndicatorCounted(). Если разность между Bars и значением нашей функции (переменной) больше 1, то необходимо делать полный перерасчет.

Если разность равна 1, то расчет предыдущего бара и расчет нового. Если 0, то только перерасчет текущего бара

Вам что-то в этом коде не нравится?:

double GetEMA()
{
  static int PrevTime = 0;
  
  if (PrevTime == Time[0])
    return(EMA);

  int i = iBarShift(Symbol(), Period(), PrevTime) - 1;  

  PrevTime = Time[0];    
  
  while (i >= 0)
  {
    EMA = EMA * Alpha + (1 - Alpha) * GetPrice(i);
    
    i--;
  }
  
  return(EMA);
} 
 
hrenfx:

Вам что-то в этом коде не нравится?:


Конечно не нравится. Он зря считает с ошибками
 
Конкретизируйте, пожалуйста.
 
hrenfx:
Конкретизируйте, пожалуйста.

Значения ЕМА при обрыве связи берется неверным. Оно берется последним рассчитанным. Но это не верно. В итоге функция будет работать ошибочно не на n барах, а на значительно большем количестве баров. Если конечно сохранять ее значения