Ошибки, баги, вопросы - страница 3533

 
Aleksandr Sergeyevich Buldakov #:

Версия программы 4380 от 7 июня 2024 года.

При тесте советника. Если предварительно интервал тестирования был указан 6 месяцев а потом выбираем интервал 1 год, то программа все равно тестирует за 6 месяцев.

Если 01.05.2024 поставить тестировать 6 месяцев или последний год, то тестирование будет только 4 месяца. А вот в августе будет уже разница. Наверное так…

 
fxsaber #:
Не воспроизводится. Все создается.

Ясно, спасибо. То есть, к сожалению, ничего не ясно. / У меня проблема стабильно повторяется. Более того, опробовал тот же код в MT4 и получил такой же результат - в OnTesterInit файл не записывается. Единственное объяснение, не связанное с мистикой, которое пришло в голову - само название функции OnTesterInit написано неправильно, и компилятор её не воспринимает. Но это явно не так - названия стандартных функций подсвечиваются, да и код у вас отрабатывает корректно.

Не понимаю, как такое может быть. /

 
Quantum_Logic #:

Ясно, спасибо. То есть, к сожалению, ничего не ясно. / У меня проблема стабильно повторяется. Более того, опробовал тот же код в MT4 и получил такой же результат - в OnTesterInit файл не записывается. Единственное объяснение, не связанное с мистикой, которое пришло в голову - само название функции OnTesterInit написано неправильно, и компилятор её не воспринимает. Но это явно не так - названия стандартных функций подсвечиваются, да и код у вас отрабатывает корректно.

Не понимаю, как такое может быть. /

А права доступа к папке, в которую файл пишете, каковы?

 
Artyom Trishkin #:

А права доступа к папке, в которую файл пишете, каковы?

Как я понял, оба файла пишутся в одну и туже папку, один файл успешно пишется, а другой нет. Поэтому, похоже, дело не в правах папки.
 
Artyom Trishkin #:

А права доступа к папке, в которую файл пишете, каковы?

У меня в эту папку без проблем пишутся файлы в OnTester, не пишутся только в OnTesterInit. Так что права в порядке. /

 

объяснимо, но неудобно:

const string CURRENCY_NAMES[]={
   "USD",
   "EUR",
   "GBP",
   "CHF",
   "AUD",
   "NZD",
   "CAD",
   "JPY"
};
const int TOTAL_CURRENCYS=ArraySize(CURRENCY_NAMES);

#property indicator_separate_window

//#property indicator_buffers (1+TOTAL_CURRENCYS) // '+' - constant expected
#property indicator_buffers (1+ArraySize(CURRENCY_NAMES)) // ok

с const expr ok, а c const value ошибка :-)

 

Немного прояснил ситуацию с OnTesterInit - он действительно просто не выполняется вообще.

Пишу int OnTesterInit() { return -1; } - оптимизация всё равно стартует, хотя не должна. Имя функции корректно, и никаких предупреждений типа "'OnTesterInit' function declared with wrong type or/and parameters" при компиляции не выдаёт.

Был бы признателен за совет, что ещё можно с этим сделать. /
 
Quantum_Logic #:

Немного прояснил ситуацию с OnTesterInit - он действительно просто не выполняется вообще.

Пишу int OnTesterInit() { return -1; } - оптимизация всё равно стартует, хотя не должна. Имя функции корректно, и никаких предупреждений типа "'OnTesterInit' function declared with wrong type or/and parameters" при компиляции не выдаёт.

Был бы признателен за совет, что ещё можно с этим сделать. /
На всякий случай уточню, помните ли вы, что вывод в лог по из OnTesterInit() надо смотреть не в журнале тестера, а в журнале экспертов терминала?
Будет ли туда что-то выводиться функцией Print() из OnTesterInit()?
 
Quantum_Logic #:

Немного прояснил ситуацию с OnTesterInit - он действительно просто не выполняется вообще.

Пишу int OnTesterInit() { return -1; } - оптимизация всё равно стартует, хотя не должна. Имя функции корректно, и никаких предупреждений типа "'OnTesterInit' function declared with wrong type or/and parameters" при компиляции не выдаёт.

Был бы признателен за совет, что ещё можно с этим сделать. /

Почему не должна стартовать? Должна.

В справке написано так:

"Функция должна быть определена с типом void, параметров не имеет."

 
Yuriy Bykov #:
На всякий случай уточню, помните ли вы, что вывод в лог по из OnTesterInit() надо смотреть не в журнале тестера, а в журнале экспертов терминала?
Будет ли туда что-то выводиться функцией Print() из OnTesterInit()?

Благодарю, этот совет помог на 100% и даже больше. ) (Нет, это я напрочь упустил, думал, из OnTesterInit получится передать информацию только через файл или return значение). Собственно, вывод о том, работает или нет делал, просто глядя, запустилась оптимизация после возврата ненулевого значения или нет.

В общем, результат: строка из Print появилась, и вот теперь сразу было видно, что OnTesterInit работает: return -1 остановило оптимизацию, никаких тестовых прогонов не было. После этого откомпилировал свой основной эксперт, на котором изначально столкнулся с проблемой (для начала просто пересобрал, не добавляя Print). Всё сразу заработало как надо. (?!) Убрал Print в тестовом эксперте - а всё равно теперь работает. Прэлестно.

Н-да, выглядит странно. Но я определённо нахожусь в здравом уме и весьма уверен, что все эти дни проблема вполне себе существовала. Кстати, проверил в MT4, что с тем же тестовым экспертом - там ошибка повторяется как ни в чём не бывало,  int OnTesterInit() { return -1; } не прекращает оптимизацию. Пробовать добавлять Print пока не стал - вдруг волшебство снова растает.