после компиляции с #property strict советник тестируется только до 2012 года,а без #property strict нет ограничений с любой даты по любую..

 
Pavel Malyshko:
почему так может выходить?)

Смотрите журналы. Скорее всего, фатальная ошибка выскакивает в районе 2012-го года.

Возможно даже 21 декабря )))

 
Ihor Herasko:

Смотрите журналы. Скорее всего, фатальная ошибка выскакивает в районе 2012-го года.

Возможно даже 21 декабря )))

void time(){
   tradetime=true;
   if(usetimefilter)if(checktime(summergmtshift,wintergmtshift,mondayfilter,mondayhour,mondayminute,weekfilter,
   starthour,startminute,endhour,endminute,tradesunday,fridayfilter,fridayhour,fridayminute))tradetime=false;
}
bool checktime(int summergmtshift,int wintergmtshift,bool mondayfilter,int mondayhour,int mondayminute,bool weekfilter,
int starthour,int startminute,int endhour,int endminute,bool tradesunday,bool fridayfilter,int fridayhour,int fridayminute){
   sum[2012-1999]=D'2012.03.28 02:00:00';win[2012-1999]=D'2012.10.31 03:00:00';sum[2011-1999]=D'2011.03.29 02:00:00';win[2011-1999]=D'2011.10.25 03:00:00';
   sum[2010-1999]=D'2010.03.30 02:00:00';win[2010-1999]=D'2010.10.26 03:00:00';sum[2009-1999]=D'2009.03.29 02:00:00';win[2009-1999]=D'2009.10.25 03:00:00';
   sum[2008-1999]=D'2008.03.30 02:00:00';win[2008-1999]=D'2008.10.26 03:00:00';sum[2007-1999]=D'2007.03.25 02:00:00';win[2007-1999]=D'2007.10.28 03:00:00';
   sum[2006-1999]=D'2006.03.26 02:00:00';win[2006-1999]=D'2006.10.29 03:00:00';sum[2005-1999]=D'2005.03.27 02:00:00';win[2005-1999]=D'2005.10.30 03:00:00';
   sum[2004-1999]=D'2004.03.28 02:00:00';win[2004-1999]=D'2004.10.31 03:00:00';sum[2003-1999]=D'2003.03.30 02:00:00';win[2003-1999]=D'2003.10.26 03:00:00';
   sum[2002-1999]=D'2002.03.31 02:00:00';win[2002-1999]=D'2002.10.27 03:00:00';sum[2001-1999]=D'2001.03.25 02:00:00';win[2001-1999]=D'2001.10.28 03:00:00';
   sum[2000-1999]=D'2000.03.26 02:00:00';win[2000-1999]=D'2000.10.29 03:00:00';sum[1999-1999]=D'1999.03.28 02:00:00';win[1999-1999]=D'1999.10.31 03:00:00';
   if(TimeCurrent()<win[TimeYear(TimeCurrent())-1999]
   && TimeCurrent()>sum[TimeYear(TimeCurrent())-1999])gmtshift=summergmtshift;
   else gmtshift=wintergmtshift;
 
я так понял тут 2012 годом стоит ограничение..как исправить не подскажите?)пробовал ставить везде вместо 2012 -2099 ..но не работает вообще так...
 
Pavel Malyshko:

Я ж говорю - журналы. Хотя уже по коду видно, что происходит выход за пределы массивов win и sum. Проверки то никакой нет. Нельзя вот так в лоб подходить к индексации, запихивая туда вызов двух функций и не проверяя результат.

 
Ihor Herasko:

Я ж говорю - журналы. Хотя уже по коду видно, что происходит выход за пределы массивов win и sum. Проверки то никакой нет. Нельзя вот так в лоб подходить к индексации, запихивая туда вызов двух функций и не проверяя результат.

но без 

#property strict 

всё работает нормально...
как сделать чтобы работало одинаково что с property strict,что без него?)
 
Pavel Malyshko:

но без 

#property strict 

всё работает нормально...
как сделать чтобы работало одинаково что с property strict,что без него?)

Для этого нужно писать без ошибок :)

 
Vladimir Karputov:

Для этого нужно писать без ошибок :)

в данном коде стоит ведь ограничение по 2012 год..разве нет?)поэтому и не тестируется по 2012 год и дальше тест не идёт)
исправить разве данную ошибку в этом коде который прикрепил не видится возможным?)

 
Pavel Malyshko:

в данном коде стоит ведь ограничение по 2012 год..разве нет?)поэтому и не тестируется по 2012 год и дальше тест не идёт)
исправить разве данную ошибку в этом коде который прикрепил не видится возможным?)

#property strict  специально придумали, чтобы сильно бить по шаловливым ручкам тех кто бездумно работает с массивами, кто вызывает функции без проверки и тому подобное.

Повторю последний раз: пишите код грамотно, а не пуляйте индексы массивов в космос. 

 
Pavel Malyshko:

но без 

#property strict 

всё работает нормально...
как сделать чтобы работало одинаково что с property strict,что без него?)

Раньше (без strict) терминал не обращал внимание на такие мелочи, как фатальная ошибка. Код попросту продолжал выполняться дальше с непредсказуемыми последствиями. Сейчас, благодаря директиве strict, такого можно избежать.

 
Pavel Malyshko:

в данном коде стоит ведь ограничение по 2012 год..разве нет?)поэтому и не тестируется по 2012 год и дальше тест не идёт)
исправить разве данную ошибку в этом коде который прикрепил не видится возможным?)

Это не код, а лишь его часть. Ведь запустить его невозможно. Чтобы исправить что-либо, нужно запустить это у себя.

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