Ошибка в тестере билд 215.

 
Здравсвуйте, господа проверил 20 раз. Странно, но в некоторых работает терминалах, в некоторых нет. Следующее уравнение:
   // Cube D leveles set
   double Side1_High=iHigh("EURUSD",PERIOD_D1,0);
   double Side2_High=iHigh("EURJPY",PERIOD_D1,0);
   ...   
   // Cube U levels set
   double Side1_Low=iLow("EURUSD",PERIOD_D1,0);
   double Side2_Low=iLow("EURJPY",PERIOD_D1,0);
   ...


Возваршает цену iOpen(пара, период_д1, 0);

На текущей (евробакс) возвращаются верные значения, а вот кросс (евройену) возвращает криво.

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

 
Ulterior:
Red.Line писал (а):
Здравсвуйте, господа проверил 20 раз. Странно, но в некоторых работает терминалах, в некоторых нет. Следующее уравнение:
   // D leveles set
   double Side1_High=iHigh("EURUSD",PERIOD_D1,0);
   double Side2_High=iHigh("EURJPY",PERIOD_D1,0);
   double Side3_High=iHigh("USDJPY",PERIOD_D1,0);
   
   // U levels set
   double Side1_Low=iLow("EURUSD",PERIOD_D1,0);
   double Side2_Low=iLow("EURJPY",PERIOD_D1,0);
   double Side3_Low=iLow("USDJPY",PERIOD_D1,0);


Возваршает цену iOpen(пара, период_д1, 0);

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


Jesli bar tolko sto sformirovalsia ( i ja vizu, vi isplozujete 0 bar), tak i high i low i close budut rovni open, a volume - 1

Это не при чем.

 

Еще раз проверил:

if(iHigh("EURJPY",PERIOD_D1,0)==iLow("EURJPY",PERIOD_D1,0)){
Print("Равенство: верно");
} else {
Print("Равенство: не верно");
}

2008.04.16 17:08:00 2008.04.16 16:07 test EURUSD,M15: Равенство: врено
2008.04.16 17:08:00 2008.04.16 16:07 test EURUSD,M15: Равенство: врено
2008.04.16 17:08:00 2008.04.16 16:07 test EURUSD,M15: Равенство: врено
2008.04.16 17:08:00 2008.04.16 16:07 test EURUSD,M15: Равенство: врено
2008.04.16 17:08:00 2008.04.16 16:07 test EURUSD,M15: Равенство: врено
2008.04.16 17:08:00 2008.04.16 16:06 test EURUSD,M15: Равенство: врено


2008.04.15 13:11:29 2008.04.15 16:03 test EURUSD,M15: Равенство: врено
2008.04.15 13:11:29 2008.04.15 16:03 test EURUSD,M15: Равенство: врено
2008.04.15 13:11:28 2008.04.15 16:03 test EURUSD,M15: Равенство: врено
2008.04.15 13:11:24 2008.04.15 16:03 test EURUSD,M15: Равенство: врено
2008.04.15 13:11:24 2008.04.15 16:03 test EURUSD,M15: Равенство: врено
2008.04.15 13:11:24 2008.04.15 16:03 test EURUSD,M15: Равенство: врено


Тест проходил на евробаксе.

 
иХай и иЛоу возвращают значения типа double, которые нужно нормализовать перед сравнением. Прибейте это к стенке...
 
KimIV:
иХай и иЛоу возвращают значения типа double, которые нужно нормализовать перед сравнением. Прибейте это к стенке...

Игорь, ну почему бы сначала не проверить, а потом кричать: (Запишите это себе)

2008.04.16 18:05:40 2008.04.16 17:05 test EURUSD,M15: zero divide
2008.04.16 18:05:40 2008.04.16 17:05 test EURUSD,M15: Равенство: верно160.81=160.81
2008.04.16 18:05:40 2008.04.16 17:05 test EURUSD,M15: zero divide
2008.04.16 18:05:40 2008.04.16 17:05 test EURUSD,M15: Равенство: верно160.81=160.81
2008.04.16 18:05:40 2008.04.16 17:04 test EURUSD,M15: zero divide
2008.04.16 18:05:40 2008.04.16 17:04 test EURUSD,M15: Равенство: верно160.81=160.81
2008.04.16 18:05:40 2008.04.16 17:04 test EURUSD,M15: zero divide
2008.04.16 18:05:40 2008.04.16 17:04 test EURUSD,M15: Равенство: верно160.81=160.81
2008.04.16 18:05:40 2008.04.16 17:04 test EURUSD,M15: zero divide
2008.04.16 18:05:40 2008.04.16 17:04 test EURUSD,M15: Равенство: верно160.81=160.81
2008.04.16 18:05:40 2008.04.16 17:04 test EURUSD,M15: zero divide
2008.04.16 18:05:40 2008.04.16 17:04 test EURUSD,M15: Равенство: верно160.81=160.81
2008.04.16 18:05:40 2008.04.16 17:03 test EURUSD,M15: zero divide
2008.04.16 18:05:40 2008.04.16 17:03 test EURUSD,M15: Равенство: верно160.81=160.81
2008.04.16 18:05:40 2008.04.16 17:03 test EURUSD,M15: zero divide
2008.04.16 18:05:40 2008.04.16 17:03 test EURUSD,M15: Равенство: верно160.81=160.81
2008.04.16 18:05:40 2008.04.16 17:03 test EURUSD,M15: zero divide
2008.04.16 18:05:40 2008.04.16 17:03 test EURUSD,M15: Равенство: верно160.81=160.81
2008.04.16 18:05:40 2008.04.16 17:03 test EURUSD,M15: zero divide
2008.04.16 18:05:40 2008.04.16 17:03 test EURUSD,M15: Равенство: верно160.81=160.81
2008.04.16 18:05:40 2008.04.16 17:03 test EURUSD,M15: zero divide
2008.04.16 18:05:40 2008.04.16 17:03 test EURUSD,M15: Равенство: верно160.81=160.81
2008.04.16 18:05:40 2008.04.16 17:03 test EURUSD,M15: zero divide
2008.04.16 18:05:40 2008.04.16 17:03 test EURUSD,M15: Равенство: верно160.81=160.81
2008.04.16 18:05:40 2008.04.16 17:03 test EURUSD,M15: zero divide
2008.04.16 18:05:40 2008.04.16 17:03 test EURUSD,M15: Равенство: верно160.81=160.81
2008.04.16 18:05:40 2008.04.16 17:03 test EURUSD,M15: zero divide
2008.04.16 18:05:40 2008.04.16 17:03 test EURUSD,M15: Равенство: верно160.81=160.81
2008.04.16 18:05:40 2008.04.16 17:03 test EURUSD,M15: zero divide
2008.04.16 18:05:40 2008.04.16 17:03 test EURUSD,M15: Равенство: верно160.81=160.81
2008.04.16 18:05:40 2008.04.16 17:03 test EURUSD,M15: zero divide
2008.04.16 18:05:40 2008.04.16 17:03 test EURUSD,M15: Равенство: верно160.81=160.81
2008.04.16 18:05:40 2008.04.16 17:03 test EURUSD,M15: zero divide
2008.04.16 18:05:40 2008.04.16 17:03 test EURUSD,M15: Равенство: верно160.81=160.81
2008.04.16 18:05:40 2008.04.16 17:02 test EURUSD,M15: zero divide
2008.04.16 18:05:40 2008.04.16 17:02 test EURUSD,M15: Равенство: верно160.81=160.81
2008.04.16 18:05:40 2008.04.16 17:02 test EURUSD,M15: zero divide
2008.04.16 18:05:40 2008.04.16 17:02 test EURUSD,M15: Равенство: верно160.81=160.81




if(NormalizeDouble(iHigh("EURJPY",PERIOD_D1,0),2)==NormalizeDouble(iLow("EURJPY",PERIOD_D1,0),2)){
Print("Равенство: верно ", iHigh("EURJPY",PERIOD_D1,0), " = ", iLow("EURJPY",PERIOD_D1,0));
} else {
Print("Равенство: не верно");
}

2008.04.16 18:08:46 2008.04.16 16:58 test EURUSD,M15: Равенство: верно 160.81 = 160.81
2008.04.16 18:08:46 2008.04.16 16:57 test EURUSD,M15: zero divide
2008.04.16 18:08:46 2008.04.16 16:57 test EURUSD,M15: Равенство: верно 160.81 = 160.81
2008.04.16 18:08:46 2008.04.16 16:57 test EURUSD,M15: zero divide
2008.04.16 18:08:46 2008.04.16 16:57 test EURUSD,M15: Равенство: верно 160.81 = 160.81
2008.04.16 18:08:46 2008.04.16 16:57 test EURUSD,M15: zero divide
2008.04.16 18:08:46 2008.04.16 16:57 test EURUSD,M15: Равенство: верно 160.81 = 160.81
2008.04.16 18:08:46 2008.04.16 16:57 test EURUSD,M15: zero divide
2008.04.16 18:08:46 2008.04.16 16:57 test EURUSD,M15: Равенство: верно 160.81 = 160.81
2008.04.16 18:08:46 2008.04.16 16:57 test EURUSD,M15: zero divide
2008.04.16 18:08:46 2008.04.16 16:57 test EURUSD,M15: Равенство: верно 160.81 = 160.81
2008.04.16 18:08:46 2008.04.16 16:57 test EURUSD,M15: zero divide
2008.04.16 18:08:46 2008.04.16 16:57 test EURUSD,M15: Равенство: верно 160.81 = 160.81
2008.04.16 18:08:46 2008.04.16 16:56 test EURUSD,M15: zero divide
2008.04.16 18:08:46 2008.04.16 16:56 test EURUSD,M15: Равенство: верно 160.81 = 160.81
2008.04.16 18:08:46 2008.04.16 16:56 test EURUSD,M15: zero divide
2008.04.16 18:08:46 2008.04.16 16:56 test EURUSD,M15: Равенство: верно 160.81 = 160.81
2008.04.16 18:08:46 2008.04.16 16:56 test EURUSD,M15: zero divide
2008.04.16 18:08:46 2008.04.16 16:56 test EURUSD,M15: Равенство: верно 160.81 = 160.81

 
Red.Line писал (а):
KimIV:
иХай и иЛоу возвращают значения типа double, которые нужно нормализовать перед сравнением. Прибейте это к стенке...

Игорь, ну почему бы сначала не проверить, а потом кричать:

Я среагировал на то, что знаю. Увидел, что нет нормализации и отреагировал. Текущий Ваш вопрос это не решает, но поможет избежать проблем в будущем и в других местах. Возьмите это за правило. Перед сравнением double всегда нормализовать. А впрочем, как хотите. Не по делу я влез. Извините...

 
KimIV:
Red.Line писал (а):
KimIV:
иХай и иЛоу возвращают значения типа double, которые нужно нормализовать перед сравнением. Прибейте это к стенке...

Игорь, ну почему бы сначала не проверить, а потом кричать:

Я среагировал на то, что знаю. Увидел, что нет нормализации и отреагировал. Текущий Ваш вопрос это не решает, но поможет избежать проблем в будущем и в других местах. Возьмите это за правило. Перед сравнением double всегда нормализовать. А впрочем, как хотите. Не по делу я влез. Извините...

Да и Вы простите, спасибо, учту обязательно. :)

 

вот я на GBPCHF проверил:


2008.04.16 20:20:46 2001.01.09 06:16 e-VisualTest GBPCHF,H1: Равенство: верно
2008.04.16 20:20:46 2001.01.09 06:16 e-VisualTest GBPCHF,H1: Равенство: верно
2008.04.16 20:20:46 2001.01.09 06:16 e-VisualTest GBPCHF,H1: Равенство: верно
2008.04.16 20:20:45 2001.01.09 06:16 e-VisualTest GBPCHF,H1: Равенство: верно
2008.04.16 20:20:45 2001.01.09 06:16 e-VisualTest GBPCHF,H1: Равенство: верно
2008.04.16 20:20:45 2001.01.09 06:16 e-VisualTest GBPCHF,H1: Равенство: верно
2008.04.16 20:20:45 2001.01.09 06:16 e-VisualTest GBPCHF,H1: Равенство: верно

а что за "zero divide" у Вас?

 

на EURUSD, как у Вас тоже ок:


2008.04.16 20:24:08 2007.11.23 16:12 e-VisualTest EURUSD,H1: Равенство: верно
2008.04.16 20:24:08 2007.11.23 16:12 e-VisualTest EURUSD,H1: Равенство: верно
2008.04.16 20:24:08 2007.11.23 16:12 e-VisualTest EURUSD,H1: Равенство: верно
2008.04.16 20:24:08 2007.11.23 16:12 e-VisualTest EURUSD,H1: Равенство: верно
2008.04.16 20:24:08 2007.11.23 16:11 e-VisualTest EURUSD,H1: Равенство: верно
2008.04.16 20:24:08 2007.11.23 16:11 e-VisualTest EURUSD,H1: Равенство: верно

вот код:

void start() {
  if (iHigh("EURJPY", PERIOD_D1, 0)==iLow("EURJPY", PERIOD_D1, 0)) {
    Print("Равенство: верно");
  } else {
    Print("Равенство: не верно");
  }
}
 
KimIV:

вот я на GBPCHF проверил:


2008.04.16 20:20:46 2001.01.09 06:16 e-VisualTest GBPCHF,H1: Равенство: верно
2008.04.16 20:20:46 2001.01.09 06:16 e-VisualTest GBPCHF,H1: Равенство: верно
2008.04.16 20:20:46 2001.01.09 06:16 e-VisualTest GBPCHF,H1: Равенство: верно
2008.04.16 20:20:45 2001.01.09 06:16 e-VisualTest GBPCHF,H1: Равенство: верно
2008.04.16 20:20:45 2001.01.09 06:16 e-VisualTest GBPCHF,H1: Равенство: верно
2008.04.16 20:20:45 2001.01.09 06:16 e-VisualTest GBPCHF,H1: Равенство: верно
2008.04.16 20:20:45 2001.01.09 06:16 e-VisualTest GBPCHF,H1: Равенство: верно

а что за "zero divide" у Вас?

В том-то и дело, что iHigh всегда равно iLow и iHigh-iLow всегда 0. :(

В предидущей версии такого небыло. У меня это всплыло вчера при автооптимизации. Сильно поетрял я на этом. :(

 

у меня получается, что иХай, иЛоу на нулевом баре равны иСлоуз:


2008.04.16 20:35:11 2007.11.27 14:23 e-VisualTest EURUSD,H1: Равенство: верно 159.81 159.81 159.81
2008.04.16 20:35:11 2007.11.27 14:23 e-VisualTest EURUSD,H1: Равенство: верно 159.81 159.81 159.81
2008.04.16 20:35:11 2007.11.27 14:23 e-VisualTest EURUSD,H1: Равенство: верно 159.81 159.81 159.81
2008.04.16 20:35:11 2007.11.27 14:23 e-VisualTest EURUSD,H1: Равенство: верно 159.81 159.81 159.81
2008.04.16 20:35:11 2007.11.27 14:23 e-VisualTest EURUSD,H1: Равенство: верно 159.81 159.81 159.81
2008.04.16 20:35:11 2007.11.27 14:23 e-VisualTest EURUSD,H1: Равенство: верно 159.81 159.81 159.81

код:


void start() {
  if (iHigh("EURJPY", PERIOD_D1, 0)==iLow("EURJPY", PERIOD_D1, 0)) {
    Print("Равенство: верно", " ",
          iHigh("EURJPY", PERIOD_D1, 0), " ",
          iLow("EURJPY", PERIOD_D1, 0), " ",
          iClose("EURJPY", PERIOD_D1, 0));
  } else {
    Print("Равенство: не верно", " ",
          iHigh("EURJPY", PERIOD_D1, 0), " ",
          iLow("EURJPY", PERIOD_D1, 0), " ",
          iClose("EURJPY", PERIOD_D1, 0));
  }
}

а если брать не нулевой бар, а, например, первый, то всё ОК:


2008.04.16 20:37:34 2007.11.26 13:05 e-VisualTest EURUSD,H1: Равенство: не верно 161.65 159.45 160.64
2008.04.16 20:37:34 2007.11.26 13:05 e-VisualTest EURUSD,H1: Равенство: не верно 161.65 159.45 160.64
2008.04.16 20:37:34 2007.11.26 13:05 e-VisualTest EURUSD,H1: Равенство: не верно 161.65 159.45 160.64
2008.04.16 20:37:33 2007.11.26 12:13 e-VisualTest EURUSD,H1: Равенство: не верно 161.65 159.45 160.64

код:


void start() {
  if (iHigh("EURJPY", PERIOD_D1, 1)==iLow("EURJPY", PERIOD_D1, 1)) {
    Print("Равенство: верно", " ",
          iHigh("EURJPY", PERIOD_D1, 1), " ",
          iLow("EURJPY", PERIOD_D1, 1), " ",
          iClose("EURJPY", PERIOD_D1, 1));
  } else {
    Print("Равенство: не верно", " ",
          iHigh("EURJPY", PERIOD_D1, 1), " ",
          iLow("EURJPY", PERIOD_D1, 1), " ",
          iClose("EURJPY", PERIOD_D1, 1));
  }
}
Причина обращения: