EMA + tester - страница 2

 

Пока внутри if'а нет принта нельзя утверждать, что он не работает. Может не работать то, что внутри if'а.

 
trajor:
extern int EMA_DIFF = 1;

... причем значения отличаются на 5 пунктов, то ....

Где 5 пунктов?

trajor писал (а):
К тому же, здесь вопрос в том, что если бы этого не реализовывалось, то мтс вообще не оотркывала бы сделок, а она открывает просто при простом пересечении, пишет мне через Print(), что ЕМА5 меньше ЕМА9 на 1 пункт а не на 5 и все.

Если не использовать режим визуализации (т.е. просто тестировать, а потом открывать график), изменения на 0-м баре (а он у вас используется) отследить невозможно.
Значения индикаторов на графике - это значения индикаторов на сформировавшихся барах, а что с ними происходило в процессе развития бара - загадка.

Поменяйте 0-й бар на 1-й, а 1-й на 2-й - все сигналы "сохранятся" на графике тестера.
 
komposter:
trajor:
extern int EMA_DIFF = 1;

... причем значения отличаются на 5 пунктов, то ....

Где 5 пунктов?
Ну да, я сразу и подумал, что если в коде прямо написано открываться при разнице в пункт и человек жалуется на то, что сделки открываются при разнице в один пункт, наверное он имеет в виду данные другого советника на этом же графике :)
 
komposter:
trajor:
extern int EMA_DIFF = 1;

... причем значения отличаются на 5 пунктов, то ....

Где 5 пунктов?

trajor писал (а):
К тому же, здесь вопрос в том, что если бы этого не реализовывалось, то мтс вообще не оотркывала бы сделок, а она открывает просто при простом пересечении, пишет мне через Print(), что ЕМА5 меньше ЕМА9 на 1 пункт а не на 5 и все.

Если не использовать режим визуализации (т.е. просто тестировать, а потом открывать график), изменения на 0-м баре (а он у вас используется) отследить невозможно.
Значения индикаторов на графике - это значения индикаторов на сформировавшихся барах, а что с ними происходило в процессе развития бара - загадка.

Поменяйте 0-й бар на 1-й, а 1-й на 2-й - все сигналы "сохранятся" на графике тестера.


Изначально было 5, но потом исправил, наверно потому что редко такое встречается. Спасибо, попробую.

 

Здравствуйте!

Подобный вопрос:

Эта функция по задумке должна возвращать 1 или -1, если имело место пересечение линий.

При проверке на советнике через функцию Alert(), ни разу не была получена единичка =(

Подскажите где ошибка и как ее можно исправить?


double MM0, MM1, MS0, MS1, EMA18, EMA28;
int RVIcross()
   {
   MM0 = iRVI(Symbol(),0,10,MODE_MAIN,0);
   MM1 = iRVI(Symbol(),0,10,MODE_MAIN,1);
   MS0 = iRVI(Symbol(),0,10,MODE_SIGNAL,0);
   MS1 = iRVI(Symbol(),0,10,MODE_MAIN,1);
   
   if ((MS1<MM1)&&(MS0>MM0)) a=-1; else a=0;
   
   if ((MS1>MM1)&&(MS0<MM0)) a=1; else a=0;  
   
   return(a);
   }
 
Woit >>:

Здравствуйте!

Подобный вопрос:

Эта функция по задумке должна возвращать 1 или -1, если имело место пересечение линий.

При проверке на советнике через функцию Alert(), ни разу не была получена единичка =(

Подскажите где ошибка и как ее можно исправить?



double MM0, MM1, MS0, MS1, EMA18, EMA28;
int RVIcross()
  {
  MM0 = iRVI(Symbol(),0,10,MODE_MAIN,0);
  MM1 = iRVI(Symbol(),0,10,MODE_MAIN,1);
  MS0 = iRVI(Symbol(),0,10,MODE_SIGNAL,0);
  MS1 = iRVI(Symbol(),0,10,MODE_MAIN,1);
   
  if ((MS1<MM1)&&(MS0>MM0)) a=-1; else a=0;
   
  if ((MS1>MM1)&&(MS0<MM0)) a=1; else a=0;  
   
  return(a);
  }

 Думаю здесь должно быть SIGNAL

 
Woit писал(а) >>

Здравствуйте!

Подобный вопрос:

Эта функция по задумке должна возвращать 1 или -1, если имело место пересечение линий.

При проверке на советнике через функцию Alert(), ни разу не была получена единичка =(

Подскажите где ошибка и как ее можно исправить?

double MM0, MM1, MS0, MS1, EMA18, EMA28;
int RVIcross(int pos)
  {
   MM0 = iRVI(Symbol(),0,10,MODE_MAIN,  pos);
   MM1 = iRVI(Symbol(),0,10,MODE_MAIN,  pos+1);
   MS0 = iRVI(Symbol(),0,10,MODE_SIGNAL,pos);
   MS1 = iRVI(Symbol(),0,10,MODE_SIGNAL,pos+1);
   
   a=0;   

   if ((MS1-MM1)*(MS0-MM0)<0) 
     {
      if (MS1-MM1<0) a=-1;
      if (MS1-MM1>0) a= 1;
     }
   return(a);
  }
Пооверь такой вариант
 
Vinin >>:
Пооверь такой вариант


Спасибо! И правда, ошибсо =))

За другой вариант тоже спасибо!

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