Вопросы от "чайника" - страница 188

 
Karlson:
Еще не пробовал.Но идея собрать в один файл понятна.Может разработчики укажут вариант-способ подключить неизменные данные из папки.
А Вы сразу в СД с таким предложением: подключить неизменные данные из папки.
 

Добрый день! 

 Вот функцию написал. Она вычисляет отношение текущего курса к курсу на начало 2010 года. 

 

double CalcKorr()
{
   double Bid = SymbolInfoDouble(_Symbol,SYMBOL_BID); 

   double OtkrVal[1]; 

   datetime time=D'2010.01.01 00:00:00';

   if (CopyOpen(_Symbol,PERIOD_MN1,time,1,OtkrVal) != 1) return(0);

   return(Bid / OtkrVal[0]);

}

 

Она корректно работает если запускать тестирование советника за 2011 год или ранние периоды, но возвращает 0 если тестировать 2012 год :(

 Подскажите пожалуйста в чем может быть дело.

Советник работает на 10-минутках, использую для тестирования сервер и счет от чемпионата 2012. 

 
MegaVoin:

Добрый день! 

 Вот функцию написал. Она вычисляет отношение текущего курса к курсу на начало 2010 года. 

 

double CalcKorr()
{
   double Bid = SymbolInfoDouble(_Symbol,SYMBOL_BID); 

   double OtkrVal[1]; 

   datetime time=D'2010.01.01 00:00:00';

   if (CopyOpen(_Symbol,PERIOD_MN1,time,1,OtkrVal) != 1) return(0);

   return(Bid / OtkrVal[0]);

}

 

Она корректно работает если запускать тестирование советника за 2011 год или ранние периоды, но возвращает 0 если тестировать 2012 год :(

 Подскажите пожалуйста в чем может быть дело.

Советник работает на 10-минутках, использую для тестирования сервер и счет от чемпионата 2012. 

Поставьте распечатку ошибки - посмотрим.
 
Yedelkin:
Да, не знаю, какова логика работы программы, но период в 10 мин. обозначается немного по-другому.

Все остальное работает на 10-минутках, например вот так:

 

CopyHigh(_Symbol, _Period, 0, 2, MaxVal ) 

 

Только эта функция данные пытается с месяца брать.

 

А как ошибку вывести? Я так понимаю CopyOpen(_Symbol,PERIOD_MN1,time,1,OtkrVal) возвращает -1 вместо 1. А вот почему это происходит, разве можно в ошибку вывести? 

 
MegaVoin:

А как ошибку вывести? Я так понимаю CopyOpen(_Symbol,PERIOD_MN1,time,1,OtkrVal) возвращает -1 вместо 1. А вот почему это происходит, разве можно в ошибку вывести? 

 

double CalcKorr()
{
   double Bid = SymbolInfoDouble(_Symbol,SYMBOL_BID); 
   double OtkrVal[1]; 
   datetime time=D'2010.01.01 00:00:00';
   ResetLastError();
   if (CopyOpen(_Symbol,PERIOD_MN1,time,1,OtkrVal) != 1) 
     {
      Print("error = ",_LastError);
      return(0);
     }
   return(Bid / OtkrVal[0]);
}
 
Yedelkin:
Поставьте распечатку ошибки - посмотрим.

error = 4401

 

 

Что-то не найду в метатрейдере где расшифровки  кодов ошибок...

Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений - Документация по MQL5
 
MegaVoin:

error = 4401

 

 

Что-то не найду в метатрейдере где расшифровки  кодов ошибок...

https://www.mql5.com/ru/docs/constants/errorswarnings/errorcodes
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки времени выполнения
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки времени выполнения
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки времени выполнения - Документация по MQL5
 
MegaVoin: error = 4401

Так-с, "запрашиваемая история не найдена". Т.е. в 2012 году не обнаруживается январь 2010 года, правильно?

А на демо-счёте (не в тестере) что показывает? 

 
Yedelkin:

Так-с, "запрашиваемая история не найдена". Т.е. в 2012 году не обнаруживается январь 2010 года, правильно?

А на демо-счёте (не в тестере) что показывает? 

Угу не обнаруживается.

Создал новый демо-счет (не чемпионатный). Лоты больше 5 теперь пропускаются, если тестировать за 2011 год, но за 2012 все та же ошибка.

Наверно где-то настраивать надо сколько истории доступно до тестового периода. А по умолчанию наверно 2 года... Только где это настраивается...

 
MegaVoin: Создал новый демо-счет (не чемпионатный). Лоты больше 5 теперь пропускаются, если тестировать за 2011 год, но за 2012 все та же ошибка.

То есть на демо-счете (не в тестере) тоже возникает такая ошибка?

MegaVoin: Наверно где-то настраивать надо сколько истории доступно до тестового периода. А по умолчанию наверно 2 года... Только где это настраивается...

 А про историю для тестирования лучше почитать в разделе "Тестирование торговых стратегий".

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