Используете ли вы CExpert при создании роботов? - страница 14

 

У меня

2016.10.01 19:24:30.023 Terminal        MetaTrader 5 x64 build 1434 started (MetaQuotes Software Corp.)
2016.10.01 19:24:30.024 Terminal        Windows 10 Pro (x64 based PC), IE 11.00, UAC, Intel Core i3-3120M  @ 2.50GHz, RAM: 3813 / 8077 Mb, HDD: 55016 / 233310 Mb, GMT+02:00
2016.10.01 19:24:30.024 Terminal        C:\Users\KVN\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075

тест занял

2016.10.01 19:24:46.177 TestClasses (AUDUSD,M5) 2016.10.01 19:24:46
...
2016.10.01 19:28:02.134 TestClasses (AUDUSD,M5) 2016.10.01 19:28:02

3 минуты 16 секунд (и это заметьте на ноутбуке).

 
Maxim Kuznetsov:

***и это при том что торговая часть глючит..

А это уже беспринципный наезд. Без доказательств, без исходников, без подтверждений. 
 
Karputov Vladimir:
А это уже беспринципный наезд. Без доказательств, без исходников, без подтверждений. 
треды fxsaber наверное уже стали эпичными..и при этом он не первый на этом поприще
 
fxsaber:
Как выяснить причину таких тормозов, по сравнению с результатами у других?
Ключик в конфиге не сносили? Который optimize?
 
0 error(s), 0 warning(s), compile time: 94216 msec              1       1
Комбинатор:
Ключик в конфиге не сносили? Который optimize?

У меня этого ключа просто нет. На всякий случай прикладываю metaeditor.ini.

TestClasses.ex5 у меня занимает 7 959 716 байт. Таких монстров я тоже раньше не видел!

После перекомпиляции (первая компиляция была после обновления - автоматическая) результаты выправились

2016.10.01 20:59:30.202 TestClasses (Si-12.16,M1)       2016.10.01 20:59:30
...
2016.10.01 20:57:17.162 TestClasses (Si-12.16,M1)       2016.10.01 20:57:17

Похоже, автоматическая компиляция прошла без оптимизации.

Файлы:
 

Каким образом отлаживался этот mq5? Я в день F7 несколько сотен раз нажимаю. Каждый раз ждать 100 секунд - это десятки часов в сутки на компиляцию. Выдержать такое не реально.

Мои проекты < 100 кб. За 300 мс компилируются. 

 
fxsaber:

Каким образом отлаживался этот mq5? Я в день F7 несколько сотен раз нажимаю. Каждый раз ждать 100 секунд - это десятки часов в сутки на компиляцию. Выдержать такое не реально.

Мои проекты < 100 кб. За 300 мс компилируются. 


Раздельная компиляция .mqh вестимо..

 
Alexey Volchanskiy:

Раздельная компиляция .mqh вестимо..

Не, похоже, все по F5.
0 error(s), 0 warning(s), compile time: 880 msec                1       1
А затем сразу SHIFT+F5.
 

Я использую связку mql5 + R, синхронизация самодельная через файлы.

У меня mql5 используется только для торговли, вся логика принятия решений вынесена в R. Для торговли брал за основу автоматически сгенерированный советник с CExpert, единственное что поменял это немного кода в ontick чтобы на новых барах писать в csv файл значения ohlc и индикаторов. Плюс новый класс на основе CExpertSignal, в котором LongCondition() и ShortCondition() читают из файлов ответы полученные от R. Вся торговая логика, стопы, тейки, итд использую без изменений, я считаю что класс CExpert вообще отлично с этим справляется.

От R мне нужно чтоб он генетикой перебрал все полученные данные по особым критериям, и из таблицы с сотнями колонок (ohlc + индикаторы с разными параметрами и лагами) оставил их гораздо меньше, плюс наделать новые колонки из имеющихся со всякими математическими операциями. А дальше нейронка всё это обрабатывает и даёт ответ торговать или нет, пишет результат в файл.
От встроенного mql интерфейса к R я бы не отказался, но это не критично. Это было бы важно только для частого скальпинга; а я на новых барах торгую, это совсем редко и задержки в пару секунд неважны.

Спасибо за Alglib, неожиданный сюрприз, генетика и нейронка есть, можно что-то делать. То чего сильно не хватает - это многопоточность в mql без костылей. Я нейронку постоянно дообучаю новыми данными запущенным на фоне R скриптом, в mql для этого нужно делать отдельный скрипт, и общаться процессами через глобальные переменные или как-то так (точно не скажу, сам не пробовал). Мне бы даже хватило что-то наподобие форка, с возможностью некоторые переменные сделать общими на оба процесса.

Но Alglib всё равно не идеальное решение. Если уже есть готовый алгоритм что и как обрабатывать, то это можно повторить прямо в mql с Alglib, это отлично.
А как эфективно работать при создании новой стратегии? В R или Matlab можно и графики наглядные нарисовать; и если что-то не так то остановить выполнение скрипта, подправить код, и продолжить с того места где остановил скрипт в прошлый раз. В mql нужно будет каждый раз компилить код, и запускать сначала. А это будет часы работы алгоритмов на каждый перезапуск, потерянные из-з ошибок. Придётся делать костыли с записью переменных в файл например. В общем для реализации готовой стратегии mql+alglib вполне отлично, но для разработки новой стратегии - я вижу в этом много боли.

 

fxsaber:

Как выяснить причину таких тормозов, по сравнению с результатами у других?

Anatoli Kazharski:

Попробуйте скомпилировать. Запускал сразу после обновления терминала, тоже значительно дольше было.

Компиляция долгая. У меня было около 83 секунд.

Да, у меня аналогично. Первый запуск скрипта шёл больше 4 минут. После повторенной компиляции в редакторе - 2 минуты.