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

 
sibirqk #:

Что именно? 

Можно и деревянные модели
 
sibirqk #:

Что именно? 

Где-то видел, что можно помещать в ONNX все, что имеется в библе Scikit, а там самые разные модели и довольно много.

 
mytarmailS #:
Можно и деревянные модели
СанСаныч Фоменко #:

Где-то видел, что можно помещать в ONNX все, что имеется в библе Scikit, а там самые разные модели и довольно много.

Ну не буду спорить, Я не слишком силен в ONNX. 

 
Вопрос к разработчикам, ONNX модели в МТ выполняются на процессоре или видеокарте?
 

Ещё важный вопрос - получит ли модель информацию о торговом окружении - какие позиции открыты, что там в истории....

 
Rorschach #:
Вопрос к разработчикам, ONNX модели в МТ выполняются на процессоре или видеокарте?
На процессоре с использованием AVX/AVX2/AVX512 инструкций при любой сборке терминала или тестера. Это исполнительная система, которая работает мало и быстро.

Причем ONNX без проблем работает и в Линуксе и Маках. Никаких дополнительных систем поддержки не требуется.

GPU критичны именно на этапе обучения.
 
Aleksey Vyazmikin #:

Ещё важный вопрос - получит ли модель информацию о торговом окружении - какие позиции открыты, что там в истории....

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

Пользуйтесь поиском, пожалуйста.
 

Renat Fatkhullin #:

GPU критичны именно на этапе обучения.

ONNX могло бы стать альтернативой для OpenCL. Но это пока просто идея.

 
Renat Fatkhullin #:
1) наш единый шаблон робота

На обсуждение шаблон робота для Тестера.

// Торговый сигнал.
double SignalONNX( const MqlTick &Tick ) { return(0); }

#define MT4ORDERS_AUTO_VALIDATION // Торговые приказы отправляются только в случае успешной проверки на корректность
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

void OnTick()
{
  MqlTick Tick;
  
  if (SymbolInfoTick(_Symbol, Tick))
  {
    const double Signal = SignalONNX(Tick);        
    const int Type = (MathAbs(Signal) < 1) ? -1 : (Signal < 0);
    
    if (Type != -1)
    {
      int Count = 0;

      for (uint i = OrdersTotal(); (bool)i--;)
        if (OrderSelect(i, SELECT_BY_POS))
        {
          if (OrderType() == Type)
            Count++;
          else
            OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0);
        }
        
      if (!Count)
        OrderSend(_Symbol, Type, 1, Type ? Tick.bid : Tick.ask, 0, 0, 0);
    }
  }
}

Код лаконичный, поэтому сразу читаем. В нем три состояния: купить, продать, ничего не делать.

Не вижу смысла усложнять, добавлять ММ и т.д. Тогда с МО постараться нужно.


Элемент случайности сильно отпадает, если требовать, чтобы частота сделок (одна в день, например) соответствовала предыдущим значениям. В общем, пообсуждать можно уже что-то на уровне кода.

Причина обращения: