MetaTrader 4 Client Terminal build 604 - страница 41

 

Иногда в советниках приходится реализовывать геометрические построения, идущие в историю на 1000 и более баров. Сегодня к большому сожалению обнаружил, что в тестере глубина истории ограничена 1000 барами (независимо от символа и таймфрейма). Имеется ввиду количество баров истории влево (в прошлое), начиная от начальной даты интервала тестирования. Для проверки написал простейший советник, который выдал сообщение об ошибке (Testing pass stopped due to a critical error in the EA). Журнал:

20:23:06 Expert hist-test: loaded successfully
20:23:06 TestGenerator: spread set to 10
20:23:08 hist-test test started
20:23:08 2014.02.03 00:00 hist-test EURUSD,H4: i=990 Время=2013.06.12 00:00
20:23:08 2014.02.03 00:00 hist-test EURUSD,H4: i=991 Время=2013.06.11 20:00
20:23:08 2014.02.03 00:00 hist-test EURUSD,H4: i=992 Время=2013.06.11 16:00
20:23:08 2014.02.03 00:00 hist-test EURUSD,H4: i=993 Время=2013.06.11 12:00
20:23:08 2014.02.03 00:00 hist-test EURUSD,H4: i=994 Время=2013.06.11 08:00
20:23:08 2014.02.03 00:00 hist-test EURUSD,H4: i=995 Время=2013.06.11 04:00
20:23:08 2014.02.03 00:00 hist-test EURUSD,H4: i=996 Время=2013.06.11 00:00
20:23:08 2014.02.03 00:00 hist-test EURUSD,H4: i=997 Время=2013.06.10 20:00
20:23:08 2014.02.03 00:00 hist-test EURUSD,H4: i=998 Время=2013.06.10 16:00
20:23:08 2014.02.03 00:00 hist-test EURUSD,H4: i=999 Время=2013.06.10 12:00
20:23:08 2014.02.03 00:00 hist-test EURUSD,H4: i=1000 Время=2013.06.10 08:00
20:23:08 2014.02.03 00:00 array out of range in 'hist-test.mq4' (20,47)
20:23:08 2014.02.03 00:00 Testing pass stopped due to a critical error in the EA
20:23:08 EURUSD,H4: 1 tick events (1007 bars, 1012 bar states) processed within 16 ms (total time 2047 ms)
20:23:23 Expert hist-test EURUSD,H4: removed

Вопрос к разработчикам-как увеличить глубину истории в тестере хотя бы вдвое?

#property strict

int OnInit()
{
   return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason)
{
   
}
void OnTick()
{
   for(int i=990; i<1090; i++)
   {
      Print("i=",i," Время=",TimeToString(Time[i],TIME_DATE|TIME_MINUTES));
   }
}
 
FxRoller:

Иногда в советниках приходится реализовывать геометрические построения, идущие в историю на 1000 и более баров. Сегодня к большому сожалению обнаружил, что в тестере глубина истории ограничена 1000 барами (независимо от символа и таймфрейма). Имеется ввиду количество баров истории влево (в прошлое), начиная от начальной даты интервала тестирования. Для проверки написал простейший советник, который выдал сообщение об ошибке (Testing pass stopped due to a critical error in the EA). Журнал:

20:23:06 Expert hist-test: loaded successfully
20:23:06 TestGenerator: spread set to 10
20:23:08 hist-test test started
20:23:08 2014.02.03 00:00 hist-test EURUSD,H4: i=990 Время=2013.06.12 00:00
20:23:08 2014.02.03 00:00 hist-test EURUSD,H4: i=991 Время=2013.06.11 20:00
20:23:08 2014.02.03 00:00 hist-test EURUSD,H4: i=992 Время=2013.06.11 16:00
20:23:08 2014.02.03 00:00 hist-test EURUSD,H4: i=993 Время=2013.06.11 12:00
20:23:08 2014.02.03 00:00 hist-test EURUSD,H4: i=994 Время=2013.06.11 08:00
20:23:08 2014.02.03 00:00 hist-test EURUSD,H4: i=995 Время=2013.06.11 04:00
20:23:08 2014.02.03 00:00 hist-test EURUSD,H4: i=996 Время=2013.06.11 00:00
20:23:08 2014.02.03 00:00 hist-test EURUSD,H4: i=997 Время=2013.06.10 20:00
20:23:08 2014.02.03 00:00 hist-test EURUSD,H4: i=998 Время=2013.06.10 16:00
20:23:08 2014.02.03 00:00 hist-test EURUSD,H4: i=999 Время=2013.06.10 12:00
20:23:08 2014.02.03 00:00 hist-test EURUSD,H4: i=1000 Время=2013.06.10 08:00
20:23:08 2014.02.03 00:00 array out of range in 'hist-test.mq4' (20,47)
20:23:08 2014.02.03 00:00 Testing pass stopped due to a critical error in the EA
20:23:08 EURUSD,H4: 1 tick events (1007 bars, 1012 bar states) processed within 16 ms (total time 2047 ms)
20:23:23 Expert hist-test EURUSD,H4: removed

Вопрос к разработчикам-как увеличить глубину истории в тестере хотя бы вдвое?

У вас вылет по критической ошибке не из-за истории, а из-за выхода за пределы массива в строке 20, в позиции 47 исходника
 
artmedia70:
У вас вылет по критической ошибке не из-за истории, а из-за выхода за пределы массива в строке 20, в позиции 47 исходника

Специально выложил исходник-там вообще нет никаких массивов.
 
FxRoller:
Специально выложил исходник-там вообще нет никаких массивов.

17 строк
 
ОК. Суть ясна. Вылетает когда i превышает значение Bars
 
FxRoller:

...-как увеличить глубину истории в тестере хотя бы вдвое?

Никак. Задать начало интервала пораньше, и подождать, когда Bars дорастут до необходимого значения.
 
TarasBY:

Олег, тогда тебе придётся смириться с тем, что переход неизбежен, а, значит, нужно приспосабливаться с наименьшими головными болями для себя.

Мой опыт: я долго (на сколько это было возможно не обновлялся на 500-е билды, так как у меня всё нормально работало на 429-ом). Тогда я и получил опыт блокирования принудительного автообновления. Теперь ситуация несколько другая - апгрэйд языка. Вся файловая структура работы нескольких терминалов организована так же как и у тебя - через символические ссылки. С учётом неизбежности движения вперёд и возможных коллизий с историей, я при первом автообновлении принудительно (копированием файлов) обновил все свои терминалы. Организовал отдельную "песочницу" для работы старого Эдитора, отдельную песочницу для нового Эдитора. Теперь то, что не закончено, правлю в "старой песочнице" и "скармливаю" новому терминалу. И параллельно "щупаю" новый терминал.

ИМХО.

P.S. Естественно, работаю в портабле режиме. :)


Насколько я понимаю из сообщения выше в новой версии так же можно использовать линки, вместо размножения идентичных файлов во всех терминалах? Если не секрет какие объединены у тебя? Вообще, разработчиков уже просили предложить решение с тем чтобы была возможность объединить все эти папки с указанием пути к ним в настройках МТ4 (решило бы множество проблем), но как и следовало ожидать они это проигнорировали.
 
FxRoller:
Специально выложил исходник-там вообще нет никаких массивов.

Что-то раньше видел на форуме, вроде для тестера не существует больше 1000 баров истории, это особенность тестера МТ4 и разработчики ничего менять не собираются пока.
 
artmedia70:
ОК. Суть ясна. Вылетает когда i превышает значение Bars
Так и есть. Проблема в том, что история загружена с 1999г. и обычные графики (не тестерные) показывают все существующие бары правильно. А в тестере независимо от выбранного интервала тестирования (пробовал разные даты и интервалы тестирования и в этом году и в прошлом году)-вылетает всегда после 1000 баров. А иногда бывает необходимо посчитать какую-нибудь МА с большим периодом, например 50-дневную SMA без использования дневного таймфрейма - на часовиках это будет 1200 периодная машка, а в тестере максимум 1000 баров...
 
Вопрос насчет "/portable" (хочу убедиться в том что все понял правильно) - если запустить терминал дважды, один раз с этим ключом, а второй без него - будут созданы две базы данных (MQL4), одна локальная, а вторая в "Documents and Settings\..."?

Терминал который у меня обновился до версии 604 создал новую папку MQL4 внутри инсталляционной директории (а не в "Documents and Settings\..."), ОС WinXP SP3, запускал как обычно, без ключа "/portable".
- Почему эта папка в таком случае была создана локально? - это хорошо что локально, но я хочу понять почему и так ли это должно быть?
Причина обращения: