Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 3241

 
Forester #:

Примерно так же думаю. На большом интервале тесты могут показывать прибыль, но и просадки до полугода - года. Т.е. победит та модель, которая случайно окажется не в периоде просадки в месяце конкурса.

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

А сейчас уже сентябрь, а там уже и декабрь где всё совсем по другому и конец года. 

 
Maxim Kuznetsov #:

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

А сейчас уже сентябрь, а там уже и декабрь где всё совсем по другому и конец года. 

Не, меньше года нет смысла смотреть...

Но, есть смысл участвовать.
 
Renat Fatkhullin #:
Система тестирования будет состоять из трех компонентов:
1) наш единый шаблон робота
2) ваша обертка model.mq5 в исходниках для обеспечения ввода/вывода данных в ONNX модель, интерпретацию результатов и генерации сделок
3) model.onnx - ваша нейро модель

Ещё вопрос по ММ, будут ли тут какие ограничения?

 
Maxim Dmitrievsky #:
вообще поражает желание оффтоперов самоутверждаться за счет неудач других, видимо своих не хватает из-за безынтересного существования :)
Похоже, это позволяет им ощущать себя великими практиками трейдинга, когда более осмысленные способы для этого недоступны по очевидным причинам)
 
Aleksey Vyazmikin #:

Ещё вопрос по ММ, будут ли тут какие ограничения?

Тоже сразу же подумал о необходимости мартингейла)
 
 Я так понял:
Шаблон робота надо вставить как фрагмент
Кода в файл *.mq5, при этом сделав проверку MQLInfoInteger() на признак 
MQL_TESTER?
 
Maxim Dmitrievsky #:

... С нейросетями наверное сложнее, может только на питоне.

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

1. С нейросетями в R нет проблем. Есть портированный Торч(1.13.1), есть Н2О. Оба с применением определенной гимнастики можно конвертировать в ОННХ.

2. Сложность препроцессинга зависит от знаний и умений программиста. И не "любой" можно переписать или перевести в ОННХ.

Вопрос по конкурсу в другом:

  • будет ли возможность использовать собственные предикторы или все будут использовать какие то общие для всех, предложенные разработчиками.
  • если тестирование будет проводится на истории 2023 года, на каком периоде должны обучаться модели? Можно представить модель обученную на том же периоде и она покажет неплохие результаты на тесте. Как Вы это проверите?

" ONNX можно сравнить со специализированным языком программирования в математических функциях. Он определяет все необходимые операции а Модель машинного обучения должна реализовывать функцию вывода с этим языком".  Если учесть, что этот "язык" постоянно расширяется и довольно быстро изменяется то проблем с отладкой собственно кода ОННХ и его реализацией в МКЛ будет море как и потерянного времени.

Иначе задумка интересная для тех у кого свободного времени много.

Удачи

 
Я же говорю, докер это реальное решение..
Любой код, любой язык,  любые библиотеки. 

Но не тут то было... 
 
Vladimir Perervenko #:
  • будет ли возможность использовать собственные предикторы или все будут использовать какие то общие для всех, предложенные разработчиками.
  • если тестирование будет проводится на истории 2023 года, на каком периоде должны обучаться модели? Можно представить модель обученную на том же периоде и она покажет неплохие результаты на тесте. Как Вы это проверите?

Вроде как сказали, что можно использовать свой файл mqh со своим кодом, значит можно и свои предикторы, как я понял.

Но опять же, если нужны индикаторы особые, то через ресурс их уже не приложить...
 

Проверка шаблона на стандартной МАшке, только на тиках.

#include "EMA.mqh" // https://www.mql5.com/ru/code/download/22770/ema.mqh

input int inPeriod1 = 50;
input int inPeriod2 = 150;
input int inSensitivity = 100;

// https://www.mql5.com/ru/forum/86386/page3239#comment_49322318
double SignalONNX( const MqlTick &Tick )
{  
  static EMA EMA1(inPeriod1);
  static EMA EMA2(inPeriod2);
  static int Sensitivity = 0;
    
  const double Price = Tick.bid * Tick.ask;
  
  Sensitivity += Price ? 1 - ((EMA1.Get(Price) > EMA1.Get(Price)) << 1) : 0;  
  Sensitivity = MathMax(-inSensitivity, MathMin(Sensitivity, inSensitivity));

  return((Sensitivity == inSensitivity) ? 1 : -(Sensitivity == -inSensitivity));
} 



Рабочий шаблон.
Причина обращения: