O que alimentar a entrada da rede neural? Suas ideias... - página 50

 
Ivan Butko #:



No exemplo de um dos conjuntos: pode-se observar que as retiradas são curtas e os cotovelos são mais fortes. Se ele se sentar demais, deixará um "ranho" verde na forma de queda do patrimônio líquido. Mas se ele encontrar um bom ponto no gráfico, poderá fechar a tempo e, assim, mostrar alguma estabilidade

Otimização - ano: 2021-2022, EURUSD H1

Obrigado por suas pesquisas e desenvolvimentos (por compartilhá-los) - muito interessante... relê-los (eu mesmo estou no assunto) me faz querer continuar os exercícios com eles (NS)... :-)

 
Roman Shiredchenko #:

Obrigado por suas pesquisas e desenvolvimentos (por compartilhá-los) - muito interessante.... relendo (eu mesmo no assunto), há um desejo de continuar os exercícios com eles (NS)... :-)







Obrigado pelo seu feedback. Tenho um ramo de NS simples, feito de joelhos, com base em artigos simples aqui,https://www.mql5.com/ru/articles/497, aqui mais complicados https://www.mql5.com/ru/articles/5486, e este eu às vezes uso https://www.mql5.com/ru/articles/830 Expert Advisors, que modifico para se adequar às ideias - também de lá. Apesar do fato de não haver uma solução segura, os experimentos são fascinantes.


Нейронные сети - от теории к практике
Нейронные сети - от теории к практике
  • www.mql5.com
В наше время, наверное, каждый трейдер слышал о нейронных сетях и знает, как это круто. В представлении большинства те, которые в них разбираются, это какие-то чуть ли не сверхчеловеки. В этой статье я постараюсь рассказать, как устроена нейросеть, что с ней можно делать и покажу практические примеры её использования.
 
Ivan Butko #:

O que também é potencialmente bom é o tamanho intradiário das negociações: pelo menos elas não são negociações de uma única vela, mas às vezes são estendidas ao longo do tempo. Além disso, as negociações são feitas em ambos os sentidos, COMPRA e VENDA. O eterno problema da aproximação (se eu usar o termo corretamente) é que o NS escolhe quais negociações rendem mais e cria pesos para elas. Como resultado, se a tendência na seção otimizada for de baixa e um terço de sua seção for de alta, ocorrerá uma subsidência global no forward ou no backing.

Acho que esse não é o eterno problema da aproximação, mas o eterno problema da classificação na camada de saída. É bom que ele não se manifeste nesse caso.

 
Andrey Dik #:

Acho que esse não é um problema de aproximação perene, mas um problema de classificação perene na camada de saída. É bom que ele não apareça nesse caso.





Qual é o mecanismo do fenômeno? Por que o otimizador do MT5 escolhe pesos que se recusam a negociar em compra em um período de longo prazo (no qual há muitas tendências de alta - esse é o tempo ocioso, o lucro potencial, você precisa explorar essa área) e negociar apenas em venda. Não todos os conjuntos, mas os principais, que parecem ser os mais importantes. Quando você começa, só há vendas. Embora os conjuntos que estão na parte inferior estejam sendo negociados nos dois sentidos, mas mal.

 
Ivan Butko #:





Qual é o mecanismo desse fenômeno? Por que o otimizador do MT5 escolhe pesos que se recusam a negociar em compra em um período de longo prazo (no qual há muitas tendências de alta - esse é o tempo ocioso, o lucro potencial, você precisa explorar essa área) e negociam apenas em venda. Não todos os conjuntos, mas os principais, que são os mais importantes. Quando você começa, só há vendas. Embora os conjuntos que estão na parte inferior estejam negociando nos dois sentidos, mas mal.

O mecanismo é bastante simples.

O primeiro fator: vejo que o treinamento ocorre no EURUSD, e nele as vendas são mais lucrativas, se todas as outras coisas forem iguais (observei isso muitas vezes em diferentes TSs).

O segundo fator, mais importante: a função de aptidão não leva em conta a proporção de compra/venda, os sinais "rolam" em direção à venda como mais eficazes e, eventualmente, levam a uma completa ausência de compra (em outros símbolos, pode haver um rolamento em direção à compra).

Ou seja, precisamos entender o que exatamente a NN está aprendendo, e o critério de seu aprendizado é sempre a função de adequação. A etapa lógica é multiplicar o critério personalizado pela relação mín/máx, em que mín é o número mínimo de negociações de compra ou venda e máx - vice-versa, respectivamente.

FF = Fcustom * MathMin (buys, sells) / MathMax (buys, sells);

Agora vemos que, se houver 100% de distorção, essa FF será igual a 0 e, se as outras coisas forem iguais, o melhor valor será aquele em que o número de direções em ambos os sentidos for o mesmo.

Isso, é claro, não é uma panaceia, mas vale a pena tentar.

A propósito, essa é uma das maneiras de alterar a forma da superfície FF de modo que o valor ideal desejado seja global para uma interpretação inequívoca.

Para estimular ainda mais o aprendizado para um número maior de negociações, você pode fazer o seguinte:

if (FF == 0) FF = -DBL_MAX;
 
Eu estava navegando em um site antigo, um artigo de 10 anos atrás sobre redes neurais em forex. Eles sugerem inserir...











o ângulo entre o fechamento de N velas atrás e o preço atual. É uma loucura, mas eu gosto! Ainda não tentei, mas com certeza tentarei, assim que entender como encontrar esse maldito ângulo A segunda variante também está no pré-podvypodvert, acabei de pensar nisso: o preço pode cair ou subir duas velas seguidas.

Normalmente, isso significa alimentar as entradas com números normalizados adjacentes, mas, como estamos usando uma janela de deslocamento, cortar o valor do impulso no final afetará drasticamente o número normalizado, literalmente em uma etapa, uma vela com o número 0,7 se transformará em -0,3, embora a alteração na nova vela possa ser zero. Esse é o problema com as janelas.

E, como mencionei acima, os pesos têm um problema semelhante, quando inserimos uma sequência de números, que também é cortada no final de uma nova etapa e um novo valor é adicionado - nada pode mudar no gráfico, mas os pesos são diferentes e mudam o sinal drasticamente. No exemplo de um número normalizado por entrada, podemos fazer um adicional - é ataxa de mudança.

Afinal de contas, a tendência pode começar a desaparecer, os preços podem começar a diminuir gradualmente e, na janela de entrada, qualquer aumento será o oposto - mostrando valores cada vez maiores. A entrada adicional refletirá a aceleração - se ela existir, será mais de 0 a 1, se estiver desaparecendo, será de 0 a -1.
 
Ivan Butko #:
Ainda não tentei fazer isso, mas com certeza tentarei assim que descobrir como encontrar esse maldito ângulo

Calcule-o como uma porcentagem - de zero até o preço de abertura da barra atual - em essência, será um análogo.

 
Aleksey Vyazmikin #:

Contar em porcentagens - de zero até o preço de abertura da barra atual - essencialmente, o análogo será.

Obrigado pela resposta, vou pensar no assunto
 



Normalmente, depois de um fator de recuperação monstruoso de 68, o saldo mergulha no fundo do poço.

Mas aqui ele caiu um pouco e depois subiu por um ano inteiro. O backtest está bagunçado (que está na parte de trás, fora da otimização), não consegui repeti-lo em outros pares e períodos. Até agora.

Ao mesmo tempo, as negociações são enormes, mesmo intradiárias, e o spread não tem efeito algum (Zig é desajeitado e lento). Eh, um sonho


 

Consegui descobrir como alimentar o ângulo na entrada


Não posso dizer nada sobre as vantagens, pois os resultados são diferentes para diferentes terminais.



Gostaria de observar uma peculiaridade: valores altos do ângulo não indicam uma tendência forte ou longa, mas um impulso - um salto ou falha de preço extremamente acentuado, grande e de curto prazo.

Enquanto uma janela normalizada (outro tipo de dados de entrada), mesmo em um ângulo extremamente agudo (movimento quase plano), mostrará valores altos se o último preço for mais alto do que todos os outros. Ou seja, o ângulo tem suas vantagens informativas. Além disso, ele é semelhante a uma função não linear quando os valores extremos são cancelados. De fato, nunca obteremos um valor de 0,95 ou 0,99.

Dizem que o ângulo é quase reto, o que equivale ao fato de o preço ter voado para a estratosfera. Em geral, há mais coisas para se pensar sobre o ângulo.


    int i = 0;
    double radians, angle, C1, C5, C20, C80;
    
    C1  = iClose(NULL, PERIOD_CURRENT, 1);  
    C5  = iClose(NULL, PERIOD_CURRENT, 5); 
    C20 = iClose(NULL, PERIOD_CURRENT, 20); 
    C80 = iClose(NULL, PERIOD_CURRENT, 80);   
    
    radians = atan(   ((C1 - C5) / _Point) / 5);   // Вычисляем арктангенс высоты к длине основания в радианах
    angle = radians * 180 / M_PI / 90;             // Конвертируем радианы в градусы и преобразуем в диапазон [-1..1]
    inputs[i] = angle;       i++; 
    
    radians = atan(   ((C1 - C20) / _Point) / 20); 
    angle = radians * 180 / M_PI / 90; 
    inputs[i] = angle;       i++; 
    
    radians = atan(   ((C1 - C80) / _Point) / 80); 
    angle = radians * 180 / M_PI / 90; 
    inputs[i] = angle;       i++;  

    //  Print("Угол: ", angle, " градусов");