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

 
elibrarius:
Думаю что проще с файлов бары считывать.

я Вам написал решение в одну строку - добавьте в это условие дату тестирования и в тестере тестируйте без проблем, производительность минимум упадет

или  тогда проще сделать как админ предлагает, с файлом конечно не проблема, но велик соблазн потом подглядеть нейросетью куда не следовало бы - у меня так обычно все заканчивалось )))

 
Roman:

В коде используется  lock_guard
Но если его закомментировать, то не каких изменений не наблюдается.

Всё же начало течь, ну это понятно почему, из за не правильного sizeof
С отпуска вернусь, если не в ломы будет, то изучу вопрос. Но, по логике вещей, баг не в mql, а у Вас в коде. Кстати, чисто так, а вдруг, у Вас в библиотека с какой кодировкой работает? Вы точно уверены, что utf-16, а вдруг все таки utf-8, как-никак, самая распространенная.
 
Igor Makanu:

я Вам написал решение в одну строку - добавьте в это условие дату тестирования и в тестере тестируйте без проблем, производительность минимум упадет

или  тогда проще сделать как админ предлагает, с файлом конечно не проблема, но велик соблазн потом подглядеть нейросетью куда не следовало бы - у меня так обычно все заканчивалось )))

Проверил - не помогло.

Да и не должно. Ведь по статье, которую админ процитировал:
Минимальный объем истории при скачивании с торгового сервера для таймфреймов D1 и меньше составляет один год.

А запрошенные мной 100000 баров М15 - это около 3х лет. За первый год бары копируются, это 37 тыс баров, а дальше их просто нет в тестере, ожидание не поможет.

 
elibrarius:

Проверил - не помогло.

Да и не должно. Ведь по статье, которую админ процитировал:
Минимальный объем истории при скачивании с торгового сервера для таймфреймов D1 и меньше составляет один год.

А запрошенные мной 100000 баров М15 - это около 3х лет. За первый год бары копируются, это 37 тыс баров, а дальше их просто нет в тестере, ожидание не поможет.

у меня все работает, поставил тест 2000 г - 2019 на М15, код эксперта:

input int InpBars = 100000;

void OnTick()
{  static bool print_once = true;
   int bars = Bars(_Symbol, _Period);
   if(bars < InpBars) return;

   if(print_once)
   {  Print("OK - ", TimeCurrent());
      print_once = false; }

}

получил в логе:

2019.10.04 22:15:19.567 Core 1 EURUSD,M15: testing of Experts\IgorM\tst.ex5 from 2000.01.01 00:00 to 2019.10.03 00:00 started with inputs:

2019.10.04 22:15:19.567 Core 1   InpBars=100000

2019.10.04 22:15:19.567 Core 1 2003.01.16 19:30:00   OK - 2003.01.16 19:30:00

2019.10.04 22:15:19.567 Core 1 final balance 10000.00 USD

добавьте в условие дату с которой нужно начать тестирование и обучайте НС, ну или делайте как предложил админ
 
Igor Makanu:

у меня все работает, поставил тест 2000 г - 2019 на М15, код эксперта:

получил в логе:

2019.10.04 22:15:19.567 Core 1 EURUSD,M15: testing of Experts\IgorM\tst.ex5 from 2000.01.01 00:00 to 2019.10.03 00:00 started with inputs:

2019.10.04 22:15:19.567 Core 1   InpBars=100000

2019.10.04 22:15:19.567 Core 1 2003.01.16 19:30:00   OK - 2003.01.16 19:30:00

2019.10.04 22:15:19.567 Core 1 final balance 10000.00 USD

добавьте в условие дату с которой нужно начать тестирование и обучайте НС, ну или делайте как предложил админ

Теперь понял вашу идею)

Т.е. тест надо не за 2 последних месяца запускать, а за 3 года, все эти 3 года пропустить в OnTick и начинать расчеты только на последних 2х месяцах.

Да - это самое простое решение. Спасибо!

 
elibrarius:

А запрошенные мной 100000 баров М15 - это около 3х лет. За первый год бары копируются, это 37 тыс баров, а дальше их просто нет в тестере, ожидание не поможет. 

Быстрей будет работать со своим файлом истории в режиме оптимизатора "Математические вычисления".

 
elibrarius:

Теперь понял вашу идею)

Т.е. тест надо не за 2 последних месяца запускать, а за 3 года, все эти 3 года пропустить в OnTick и начинать расчеты только на последних 2х месяцах.

Да - это самое простое решение. Спасибо!

время в условие добавьте

input int InpBars = 100000;
input datetime InpDataTest = D'2015.01.01 00:00'; 
void OnTick()
{  static bool print_once = true;
   int bars = Bars(_Symbol, _Period);
   datetime t = TimeCurrent();
   if(bars < InpBars || t < InpDataTest  ) return;

   if(print_once)
   {  Print("OK, TimeCurrent() =  ", t);
      print_once = false; }

}

2019.10.04 22:36:42.729 Core 1 EURUSD,M15: testing of Experts\IgorM\tst.ex5 from 2000.01.01 00:00 to 2019.10.03 00:00 started with inputs:

2019.10.04 22:36:42.729 Core 1   InpBars=100000

2019.10.04 22:36:42.729 Core 1   InpDataTest=1420070400

2019.10.04 22:36:42.729 Core 1 2015.01.02 09:00:00   OK, TimeCurrent() =  2015.01.02 09:00:00

2019.10.04 22:36:43.041 Core 1 final balance 10000.00 USD



 
Igor Makanu:

время в условие добавьте

2019.10.04 22:36:42.729 Core 1 EURUSD,M15: testing of Experts\IgorM\tst.ex5 from 2000.01.01 00:00 to 2019.10.03 00:00 started with inputs:

2019.10.04 22:36:42.729 Core 1   InpBars=100000

2019.10.04 22:36:42.729 Core 1   InpDataTest=1420070400

2019.10.04 22:36:42.729 Core 1 2015.01.02 09:00:00   OK, TimeCurrent() =  2015.01.02 09:00:00

2019.10.04 22:36:43.041 Core 1 final balance 10000.00 USD



Да, спасибо. Все работает.

 
Aleksey Vyazmikin:

Быстрей будет работать со своим файлом истории в режиме оптимизатора "Математические вычисления".

Ну это если чисто в самой НС и результат смотреть.

Я сейчас торговлю тестирую, чтобы и издержки и спреды были учтены. Поэтому интересует именно готовый робот, который можно и в тестере посмотреть и к реальной торговле подключить.

 
elibrarius:

Ну это если чисто в самой НС и результат смотреть.

Я сейчас торговлю тестирую, чтобы и издержки и спреды были учтены. Поэтому интересует именно готовый робот, который можно и в тестере посмотреть и к реальной торговле подключить.

Всё равно не понимаю - у Вас предикторам требуется большая глубина расчета? У меня вот действительно требуется одному - МАшке на дневках :) Я запуская просто тестирование на год раньше, а торговлю до этой даты можно запретить...