Тестер стратегий MetaTrader 5: ошибки, баги, предложения по улучшению работы - страница 39

 
Если отлаживать скрипт или советника и бродить по коллстеку, слева в исходниках появляется зелёная стрелочка, показывающая, на какой строчке сейчас находишься. Если ходить по коллстеку в разных файлах, например много разных инклудов, по сути в каждой открытой вкладке со своим файлом будет своя зелёная стрелочка. Но после остановки отладки они не пропадают, а так и продожают висеть. Баг или фича?
 
Не знаю писали уже об этом в этой ветке или нет. Может наконец сделают доступ ко всем имеющимся барам из тестера ? Вот реально задолбало работая на 5минутках подгружать старшие ТФ за несколько лет через костыли !!!
 
traveller00:

Используется билд 2280. Берётся символ и период, когда котировок на нём не было. В данном случае это биржа, брокер Открытие, символ UCAD-12.19, период 01.09.2019-03.09.2019. Запускается простой советник (ниже). Если его гонять проходами по одному, всё в порядке, просто скажет, что нету истории, 0 баров и 0 тиков. Если запустить оптимизацию, неважно генетик или полную, в лог посыпятся кучей ошибки

Похоже, что реакция на доступ к массиву OldTicks, но неизвестно, почему. Заменять результат возврата функции на размер массива не помогает. Что с этим делать, неизвестно.

Для воспроизведения и исправления этой ошибки нужен эксперт в виде ex5 и условия оптимизации.

Если Вас не затруднит, то мне в личные сообщения. После исследований эксперт будет безвозвратно стёрт

 
Slava:

Для воспроизведения и исправления этой ошибки нужен эксперт в виде ex5 и условия оптимизации.

Если Вас не затруднит, то мне в личные сообщения. После исследований эксперт будет безвозвратно стёрт

Исходник эксперта приведён в том же посте. На всякий случай ещё раз отпостил ниже.

Символ и период, когда котировок на нём не было. В моём случае это биржа, брокер Открытие, символ UCAD-12.19, период 01.09.2019-03.09.2019.

Оптимизация генетик или полный перебор-неважно. По единственной переменной test, проходов побольше, поставьте от 0 до 1000000.

input int test=1;

double OnTester()
{
  return 0;
}

void Test(const MqlTick &Tick)
{
}

void OnInit()
{
  MqlTick OldTicks[];
  int OldTicksCount=CopyTicks(_Symbol,OldTicks,COPY_TICKS_ALL);
  while(OldTicksCount>=1000)
    OldTicksCount=CopyTicks(_Symbol,OldTicks,COPY_TICKS_ALL,OldTicks[OldTicksCount-500].time_msc);
  for(int i=0;i!=ArraySize(OldTicks);++i)
    Test(OldTicks[i]);
}
 
traveller00:

Используется билд 2280. Берётся символ и период, когда котировок на нём не было. В данном случае это биржа, брокер Открытие, символ UCAD-12.19, период 01.09.2019-03.09.2019. Запускается простой советник (ниже). Если его гонять проходами по одному, всё в порядке, просто скажет, что нету истории, 0 баров и 0 тиков. Если запустить оптимизацию, неважно генетик или полную, в лог посыпятся кучей ошибки

Похоже, что реакция на доступ к массиву OldTicks, но неизвестно, почему. Заменять результат возврата функции на размер массива не помогает. Что с этим делать, неизвестно.

Спасибо за сообщение!

Проблему нашли и исправили.

 
Anton:

Спасибо за сообщение!

Проблему нашли и исправили.

Спасибо.

 
Не было закачанной истории. Запустил по всем символам.
2019.12.16 16:41:50.787 Tester  Experts\fxsaber\Research\Research03.ex5 on EURGBP,H1 from 2015.01.01 00:00 to 2019.12.16 00:00
2019.12.16 16:41:50.787 Tester  optimization on all MarketWatch symbols started
2019.12.16 16:41:50.790 Core 1  agent process started on 127.0.0.1:3000
2019.12.16 16:41:50.791 Core 2  agent process started on 127.0.0.1:3001
2019.12.16 16:41:50.792 Core 3  agent process started on 127.0.0.1:3002
2019.12.16 16:41:50.793 Core 4  agent process started on 127.0.0.1:3003
2019.12.16 16:41:50.794 Core 5  agent process started on 127.0.0.1:3004
2019.12.16 16:41:50.795 Core 6  agent process started on 127.0.0.1:3005
2019.12.16 16:41:51.145 Core 4  connecting to 127.0.0.1:3003
2019.12.16 16:41:51.145 Core 4  connected
2019.12.16 16:41:51.155 Core 2  connecting to 127.0.0.1:3001
2019.12.16 16:41:51.155 Core 2  connected
2019.12.16 16:41:51.162 Core 4  authorized (agent build 2280)
2019.12.16 16:41:51.162 Core 1  connecting to 127.0.0.1:3000
2019.12.16 16:41:51.162 Core 1  connected
2019.12.16 16:41:51.162 Core 3  connecting to 127.0.0.1:3002
2019.12.16 16:41:51.163 Core 3  connected
2019.12.16 16:41:51.163 Tester  EURGBP: history data begins from 2003.02.06 00:00
2019.12.16 16:41:51.163 Core 4  pass 0 started on EURGBP
2019.12.16 16:41:51.167 Core 4  common synchronization completed
2019.12.16 16:41:51.171 Core 2  authorized (agent build 2280)
2019.12.16 16:41:51.178 Core 3  authorized (agent build 2280)
2019.12.16 16:41:51.178 Core 1  authorized (agent build 2280)
2019.12.16 16:41:51.276 Tester  EURUSD: history data begins from 1971.01.04 00:00
2019.12.16 16:41:51.276 Core 2  pass 1 started on EURUSD
2019.12.16 16:41:51.280 Core 2  common synchronization completed
2019.12.16 16:41:51.476 Core 3  GBPUSD: preliminary downloading of M1 history started
2019.12.16 16:41:51.694 Core 2  EURUSD: history for 2014 year synchronized
2019.12.16 16:41:52.009 Core 2  EURUSD: history for 2015 year synchronized
2019.12.16 16:41:52.351 Core 2  EURUSD: history for 2016 year synchronized
2019.12.16 16:41:52.663 Core 2  EURUSD: history for 2017 year synchronized
2019.12.16 16:41:52.958 Core 2  EURUSD: history for 2018 year synchronized
2019.12.16 16:41:53.080 Core 2  EURUSD: history for 2019 year synchronized
2019.12.16 16:41:53.080 Core 2  EURUSD: history synchronization completed [13567 Kb]
2019.12.16 16:41:53.080 Core 2  EURUSD: 13.25 Mb of history processed in 0:01.778
2019.12.16 16:41:56.077 Core 4  pass 0 on EURGBP returned result 100000.00 in 0:00:04.862
2019.12.16 16:41:57.077 Core 2  pass 1 on EURUSD returned result 100000.00 in 0:00:03.961
2019.12.16 16:42:05.052 Core 3  pass 2 started on GBPUSD
2019.12.16 16:42:05.059 Core 3  common synchronization completed
2019.12.16 16:42:05.276 Core 3  GBPUSD: history synchronization started
2019.12.16 16:42:06.143 Core 4  pass 3 started on AUDCAD
2019.12.16 16:42:06.143 Core 5  connecting to 127.0.0.1:3004
2019.12.16 16:42:06.144 Core 6  connecting to 127.0.0.1:3005
2019.12.16 16:42:06.144 Core 5  connected
2019.12.16 16:42:06.144 Tester  testing on MarketWatch symbols finished, total passes 2
2019.12.16 16:42:06.144 Statistics      optimization done in 0 minutes 16 seconds
2019.12.16 16:42:06.144 Statistics      local 2 tasks (100%), remote 0 tasks (0%)
2019.12.16 16:42:06.144 Core 6  connected
2019.12.16 16:42:06.167 Tester  2 new records saved to cache file 'tester\cache\Research03.all_symbols.H1.20150101.20191216.22.FBC21040E327AF5F62DDA1A545DE091D.opt'
2019.12.16 16:42:06.168 Core 1  connection closed
2019.12.16 16:42:06.168 Core 2  connection closed
2019.12.16 16:42:06.168 Core 3  connection closed
2019.12.16 16:42:06.172 Core 6  authorized (agent build 2280)
2019.12.16 16:42:06.177 Core 5  authorized (agent build 2280)
2019.12.16 16:42:06.349 Core 4  AUDCAD: history synchronization started
2019.12.16 16:42:11.777 Core 3  GBPUSD: history downloading completed
2019.12.16 16:42:11.777 Core 3  GBPUSD: history synchronization interrupted
2019.12.16 16:42:11.777 Core 4  connection closed
2019.12.16 16:42:24.794 Core 4  AUDCAD: history downloading completed
2019.12.16 16:42:24.794 Core 4  AUDCAD: history synchronization interrupted
2019.12.16 16:42:24.794 Core 5  connection closed
2019.12.16 16:42:24.794 Core 6  connection closed
2019.12.16 16:42:24.794 Tester  stopped by user
После выделенной строки нажал Стоп. Терминал вошел в режим "Не отвечает". Отвис через 27 секунд (сужу по логу).
 
Как по одиночному прогону EX5 вычислить количество всех ошибок? Например, неправильный лот или нехватка маржи.
 
Билд 2280. Берётся символ и период, когда котировок на нём не было. В данном случае это биржа, брокер Открытие, символ 1MFR-1.20, период 01.09.2019-01.12.2019. Запускается любой советник, скажем из примеров Examples\Moving Average\Moving Average.ex5. Ставится генетическая оптимизация (хотя подозреваю, что и на других этот баг есть), критерий без разницы (тиков всё равно нету), каждый тик на основе реальных тиков, прибыль в пипсах. Делаем оптимизацию, получаем по сути набор нулевых проходов. Почему в каждом проходе profit_factor и margin_level заполнены мусором? Не инициализируются где-то переменные нулём? В закладке бэктеста это выглядит как просто пустое место, он ничего не выводит. Если парсить opt-файл руками, будут значения profit_factor = 1.797693134862316e+308 и margin_level = 1.797693134862316e+308.
 
traveller00:
profit_factor = 1.797693134862316e+308 и margin_level = 1.797693134862316e+308.

DBL_MAX