Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 320

 
Mihail Marchukajtes:

<Gráficos>.

Eu encurtaria as datas de otimização por um fator de seis, para que o otimizador só veja a ponta de todos estes gráficos, e otimizaria com uma data de rollover nos parâmetros, como escrevi acima.

E depois, para verificar os melhores resultados encontrados, já execute o teste em vários meses de dados, avalie puramente visualmente.

 
Mihail Marchukajtes:

A questão é que não estamos falando de NS, mas de Sequent, então olhe para sua equidade com diferentes valores de entrada no mesmo período de trabalho. Não o optimizei, só o passei à mão.

5-5

6-6

7-7

Este caso é ainda mais interessante com 4-8, mesmo período. E funciona com um stop-loss de 300 pips.

Isto é de 1 de Janeiro até agora. Confesso que escolhi a última tela com o otimizador, bem, há apenas 49 passes no otimizador. Assim, na verdade, tenho de aprender a escolher correctamente os parâmetros necessários não a partir do conjunto sem dimensões, mas a partir do conjunto finito com uma quantidade tão pequena de variantes. So..........


Por que você não usa o RNN da Reshetov mas o classificador? Ele tem um núcleo lógico interessante lá, e o bot pode ser feito para funcionar por padrão

Agora existe essa tarefa, alimentar a entrada de NS com oscilador e inclinação de regressão para um determinado número de barras. Em teoria, os osciladores só funcionam em planos, e estão a verter na tendência. Se adicionarmos valores normalizados da inclinação da regressão, a grade levará em conta a inclinação da tendência. Aqui ainda não decidi, se devo tomar valores em graus ou em pontos. Por enquanto, deve ser em pontos, e de quantos a quantos pontos normalizá-los :)

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);
     }

E este é o próprio neurônio RNN; apenas 3 valores do oscilador são alimentados com o input, o que, naturalmente, não é muito correto.

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 que você não usa o RNN da Reshetov? Ele tem um mecanismo lógico interessante e você pode fazer o bot ganhar por padrão

A teoria é que os osciladores só funcionam no apartamento, enquanto na tendência eles estão derramando para fora. Em teoria, os osciladores só funcionam no apartamento, enquanto eles estão despejando na tendência. Se adicionarmos valores normalizados da inclinação da regressão, a grade levará em conta a inclinação da tendência. Aqui ainda não decidi, se devo tomar valores em graus ou em pontos. Por enquanto, deve ser em pontos, e de quantos a quantos pontos normalizá-los :)

E este é o próprio neurônio RNN - apenas 3 valores do oscilador são alimentados a ele, o que não é muito correto.


Obrigado pela dica, vou definitivamente tentar nos meus dados hoje.

Por favor, diz-me onde a arranjar, não a consigo encontrar de forma impudente. Não consigo encontrá-lo bisbilhotando por aí.

 
Mihail Marchukajtes:


Obrigado pela dica, vou definitivamente tentar nos meus dados hoje.

Por favor, diga-me de onde posso fazer o download, não consigo encontrá-lo. Obrigado!

Há o RNN e o RNN3 e o seu artigo inédito na MQL5, mas é inútil. O RNN funciona melhor no otimizador do que o RNN3.
Arquivos anexados:
RNN_MT5.zip  223 kb
 
Maxim Dmitrievsky:

E este é o próprio neurônio RNN, apenas 3 valores do oscilador são alimentados à entrada, o que, naturalmente, não é muito correto.

Um código interessante, obrigado. E para o artigo também.


RNN(double p1,double p2,double p3)

Todos os valores dos parâmetros p1, p2, p3 devem ser de 0 a 1. Se você passar B da regressão para um desses parâmetros, certifique-se de normalizá-lo para o mesmo intervalo [0;1].


Geralmente, esta estratégia é baseada na teoria de que um valor RSI elevado significa que o preço está prestes a descer. Por uma questão de precisão são tomados três valores RSI, e pelas regras da teoria da probabilidade obtemos uma estimativa a partir de três parâmetros.
Portanto, se em vez do terceiro RSI você der seu próprio sinal, então o alto valor deste sinal deve significar que o preço irá descer. Caso contrário, você vai quebrar a estratégia.

 
Dr. Trader:

Um código interessante, obrigado. E para o artigo também.

Se você passar um valor B da regressão para um desses parâmetros, ele deve ser normalizado para o mesmo intervalo [0;1].


Sim, isso é correcto. Só devemos inverter os valores da regressão se quisermos que ele compre num mercado em alta e venda num em queda, porque ele comprará se a probabilidade <0,5 à saída do neurónio, enquanto o rsi deverá tender para zero e a regressão também cairá quando <0,5, enquanto queremos que ele cresça >0,5
 
Dr. Trader:

Geralmente, esta estratégia é baseada na teoria de que um valor RSI elevado significa que o preço irá descer. Para fazer uma previsão precisa, tomamos três valores RSI, então de acordo com a teoria da probabilidade obtemos a mesma estimativa a partir de três parâmetros.
Portanto, se em vez do terceiro RSI você der seu próprio sinal, então o alto valor deste sinal deve significar que o preço irá descer. Caso contrário, você vai quebrar a estratégia.


Sim, exactamente, acabei de escrever sobre isso acima :)

Grelha por defeito optimizada na m5 colocada em monitorização https://www.mql5.com/ru/signals/297732

Depois vou experimentar mais com inputs diferentes para o neurónio.

Торговые сигналы для 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ó que há um erro no código, acho que o indicador está racionado incorretamente.

Наклон линейной регрессии
Наклон линейной регрессии
  • votos: 24
  • 2010.07.05
  • Vladimir
  • www.mql5.com
Наклон линейной регрессии, нормализованный к SMA
 
Maxim Dmitrievsky:
Há o RNN e o RNN3 e o seu artigo inédito na MQL5. O RNN funciona melhor no otimizador do que o RNN3.


Obrigado!!! É uma pena que seja um 5, mas vou tentar com os meus dados de qualquer maneira....

 
Mihail Marchukajtes:


Obrigado!!! É uma pena que seja um cinco, mas vou tentar com os meus dados de qualquer maneira....


a versão 5 é conveniente porque você pode fazer testes de avanço, é a coisa certa para NS, e para a versão 4 a mesma coisa, na minha opinião, estava na base de código, se você olhar

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

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