Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 320

 
Mihail Marchukajtes:

<Gráficos>.

Yo acortaría las fechas de optimización por un factor de seis, para que el optimizador sólo vea la punta de todos estos gráficos, y optimizaría con una fecha de renovación en los parámetros como escribí arriba.

Y luego, para comprobar los mejores resultados encontrados, ya ejecutamos la prueba sobre varios meses de datos, evaluando puramente de forma visual.

 
Mihail Marchukajtes:

La cuestión es que no estamos hablando de NS, sino de Sequent, así que mira su equidad con diferentes valores de entrada en el mismo período de trabajo. No lo optimicé, sólo lo repasé a mano.

5-5

6-6

7-7

Este caso es aún más interesante con 4-8, el mismo período. Y funciona con un stop-loss de 300 pips.

Esto es desde el 1 de enero hasta ahora. Confieso que he escogido la última pantalla con el optimizador, bueno, sólo hay 49 pases en el optimizador. Así que, de hecho, tengo que aprender a elegir correctamente los parámetros necesarios no del conjunto adimensional, sino del conjunto finito con una cantidad tan pequeña de variantes. Así pues, ..........


¿Por qué no usas la RNN de Reshetov pero el clasificador? Tiene un núcleo lógico interesante allí, y el bot puede hacerse funcionar por defecto

Ahora hay una tarea de este tipo, para alimentar la entrada de NS con el oscilador y la pendiente de regresión para un número determinado de barras. En teoría, los osciladores sólo funcionan en plano, y se vierten en la tendencia. Si añadimos valores normalizados de la pendiente de la regresión, la cuadrícula tendrá en cuenta la pendiente de la tendencia. Aquí no he decidido aún, si tomar los valores en grados o en puntos, de momento debería ser en puntos, y de cuántos a cuántos puntos normalizarlos :)

double CalcRegression(double &PricesArray[])
     {
      double Summ_x=0.0;
      double Summ_y=0.0;
      double Summ_xy=0.0;
      double Summ_x_2=0.0;
      int jcount;
      for(int xcount=1; xcount<=глубина_анализа && !IsStopped(); xcount++)
        {
         jcount=глубина_анализа-xcount;
         Summ_x+=xcount;
         Summ_y+=PricesArray[jcount];
         Summ_xy+=xcount*PricesArray[jcount];
         Summ_x_2+=MathPow(xcount,2);
        }

      double bcoef=(глубина_анализа*Summ_xy-Summ_x*Summ_y)/(глубина_анализа*Summ_x_2-MathPow(Summ_x,2));  
      return(bcoef);
     }

Y esta es la propia neurona de la RNN; sólo se alimentan 3 valores del oscilador a la entrada, lo que por supuesto no es muy correcto

double RNN(double p1,double p2,double p3)
  {
//--- вероятности для правил из базы знаний экспертной системы
   double y0 = x0; // Вероятность правила №0 в процентах
   double y1 = x1; // Вероятность правила №1 в процентах
   double y2 = x2; // Вероятность правила №2 в процентах
   double y3 = x3; // Вероятность правила №3 в процентах
   double y4 = x4; // Вероятность правила №4 в процентах
   double y5 = x5; // Вероятность правила №5 в процентах
   double y6 = x6; // Вероятность правила №6 в процентах
   double y7 = x7; // Вероятность правила №7 в процентах

//--- база знаний, состоящая из набора взаимоисключающих правил
   double probability=
                      (1.0 - p1) * (1.0 - p2) * (1.0 - p3) * y0 + // Правило №0
                      (1.0 - p1) * (1.0 - p2) * p3 * y1 +         // Правило №1
                      (1.0 - p1) * p2 * (1.0 - p3) * y2 +         // Правило №2
                      (1.0 - p1) * p2 * p3 * y3 +                 // Правило №3
                      p1 * (1.0 - p2) * (1.0 - p3) * y4 +         // Правило №4
                      p1 * (1.0 - p2) * p3 * y5 +                 // Правило №5
                      p1 * p2 * (1.0 - p3) * y6 +                 // Правило №6
                      p1 * p2 * p3 * y7;                          // Правило №7

//--- конвертируем проценты в вероятности 
   probability=probability/100.0;

//--- возвращаем результат в виде вероятности
   return(probability);
  }
 
Maxim Dmitrievsky:


¿Por qué no usas el RNN de Reshetov? Tiene un motor lógico interesante y puedes hacer que el bot funcione por defecto

La teoría es que los osciladores sólo funcionan en el plano, mientras que en la tendencia se derraman. En teoría, los osciladores sólo funcionan en el plano, mientras que se vierten en la tendencia. Si añadimos valores normalizados de la pendiente de la regresión, la cuadrícula tendrá en cuenta la pendiente de la tendencia. Aquí no he decidido aún, si tomar los valores en grados o en puntos, de momento debería ser en puntos, y de cuántos a cuántos puntos normalizarlos :)

Y esta es la propia neurona de la RNN - sólo se alimentan 3 valores del oscilador, lo que no es muy correcto


Gracias por el consejo, definitivamente lo probaré con mis datos hoy.

Por favor, díganme dónde conseguirlo, no lo encuentro impúdicamente. No puedo encontrarlo rebuscando.

 
Mihail Marchukajtes:


Gracias por el consejo, definitivamente lo probaré con mis datos hoy.

Por favor, díganme de dónde descargarlo, no lo encuentro. Gracias.

Hay RNN y RNN3 y su artículo no publicado en MQL5, pero es inútil. RNN funciona mejor en el optimizador que RNN3.
Archivos adjuntos:
RNN_MT5.zip  223 kb
 
Maxim Dmitrievsky:

Y esta es la propia neurona de la RNN, sólo se alimentan 3 valores del oscilador a la entrada, lo que por supuesto no es muy correcto

Un código interesante, gracias. Y también por el artículo.


RNN(double p1,double p2,double p3)

Todos los valores de los parámetros p1, p2, p3 deben ser de 0 a 1. Si pasas B de regresión a uno de estos parámetros, asegúrate de normalizarlo al mismo intervalo [0;1].


Generalmente, esta estrategia se basa en la teoría de que un valor alto del RSI significa que el precio está a punto de bajar. Para una predicción precisa se toman tres valores del RSI, y mediante algunas reglas de la teoría de la probabilidad se obtiene una estimación a partir de tres parámetros.
Por lo tanto, si en lugar del tercer RSI da su propia señal, entonces el alto valor de esta señal debe significar que el precio bajará. De lo contrario, romperás la estrategia.

 
Dr. Trader:

Un código interesante, gracias. Y también por el artículo.

Si se pasa un valor B de la regresión a uno de estos parámetros, debe normalizarse al mismo intervalo [0;1].


Sí, eso es correcto. Sólo debemos invertir los valores de la regresión si queremos que compre en un mercado alcista y venda en uno bajista, porque comprará si la probabilidad <0,5 a la salida de la neurona, mientras que el rsi debe tender a cero y la regresión también caerá cuando sea <0,5, mientras que nosotros queremos que crezca >0,5
 
Dr. Trader:

Generalmente, esta estrategia se basa en la teoría de que un valor alto del RSI significa que el precio bajará. Para hacer una predicción precisa tomamos tres valores del RSI, por lo que según la teoría de la probabilidad obtenemos la misma estimación a partir de tres parámetros.
Por lo tanto, si en lugar del tercer RSI da su propia señal, entonces el alto valor de esta señal debe significar que el precio bajará. De lo contrario, romperás la estrategia.


Sí, exactamente, acabo de escribir sobre ello más arriba :)

Rejilla por defecto optimizada en m5 puesta en vigilancia https://www.mql5.com/ru/signals/297732

Entonces experimentaré más con diferentes entradas para la neurona

Торговые сигналы для MetaTrader 5: NEUROSHELL test
Торговые сигналы для MetaTrader 5: NEUROSHELL test
  • Maxim Dmitrievsky
  • www.mql5.com
Торговый Сигнал NEUROSHELL test для MetaTrader 5: копирование сделок, мониторинг счета, автоматическое исполнение сигналов и социальный трейдинг
 

https://www.mql5.com/ru/code/127

Sólo que hay un error en el código, creo que el indicador está mal racionado

Наклон линейной регрессии
Наклон линейной регрессии
  • votos: 24
  • 2010.07.05
  • Vladimir
  • www.mql5.com
Наклон линейной регрессии, нормализованный к SMA
 
Maxim Dmitrievsky:
Hay RNN y RNN3 y su artículo inédito en MQL5. RNN funciona mejor en el optimizador que RNN3.


¡¡¡Gracias!!! Es una pena que sea un 5, pero de todas formas lo probaré con mis datos....

 
Mihail Marchukajtes:


¡¡¡Gracias!!! Es una pena que sea un cinco, pero de todas formas lo intentaré con mis datos....


la versión 5 es conveniente porque puedes hacer pruebas de avance, es lo justo para NS, y para la versión 4 lo mismo, en mi opinión, estaba en el codebase, si miras

https://www.mql5.com/ru/code/10616

RNN_MT4
RNN_MT4
  • votos: 2
  • 2012.02.20
  • Yury Reshetov
  • www.mql5.com
Советник со встроенной экспертной системой