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

 
Roman #:

Explique como trabalhar com a função de perda
Como usar a função de meta para minimização?

E a segunda pergunta.
No Matlab, a função fminsearch() usa o algoritmo Nelder-Mead.
Esse algoritmo não está presente em ENUM_LOSS_FUNCTION.
Podemos contar com a adição desse algoritmo?

A tarefa de treinar uma rede neural é encontrar um algoritmo que minimize o erro na amostra de treinamento; para isso, é usada uma função de perda. O métodode perda é usado para calcular o desvio, o que permite especificar um dos 14 tipos de enumeraçãoENUM_LOSS_FUNCTION.

Os valores de desvio obtidos são usados para refinar os parâmetros da rede neural, o que é feito usando o métodoDerivative, que calcula os valores da derivada da função de ativação e os grava no vetor/matriz passado.

Devido à capacidade de estender as enumerações, podemos adicionar novos algoritmos conforme necessário.

 
Renat Fatkhullin #:

A tarefa de treinar uma rede neural é encontrar um algoritmo que minimize o erro na amostra de treinamento. Para isso, é usada uma função de perda. Para calcular o desvio, é usado o métodoLoss, que permite especificar 1 dos 14 tipos de enumeraçãoENUM_LOSS_FUNCTION.

Os valores de desvio obtidos são usados para refinar os parâmetros da rede neural, o que é feito usando o métodoDerivative, que calcula os valores da derivada da função de ativação e os grava no vetor/matriz passado.

Devido à capacidade de estender as enumerações, podemos adicionar novos algoritmos conforme necessário.


Descobri isso com o exemplo do MAPE.

Penseique fosse uma função de perda que minimiza a função de destino.
E isso é apenas um cálculo de métrica.

vector Forecast = {28.252177870295327, 1.386017247821653, 1.321279511381957};
vector Fact     = {45.979999999999997, 1.710000000000000, 1.340000000000000};

double MAPE = Forecast.Loss(Fact,LOSS_MAPE);

Print(DoubleToString(MAPE,2) + " %");
19.63 %


O que é a mesma coisa no código

vector Forecast = {28.252177870295327, 1.386017247821653, 1.321279511381957};
vector Fact     = {45.979999999999997, 1.710000000000000, 1.340000000000000};

vector loss = {0.,0.,0.};

for(int i=0; i<3; i++)
   loss[i] = fabs(Forecast[i] - Fact[i]) / Fact[i];

double MAPE = loss.Mean()*100;

Print(DoubleToString(MAPE,2) + " %");
19.63 %



Em seguida, há uma pergunta sobre a descrição da documentação.

Há algum erro na descrição?

ll

Talvez fosse mais correto:
Calcula o valor das perdas como uma métrica MSE, MAE, etc...?
Afinal, a função de minimizar as perdas deve ser escrita por você mesmo.


E há uma descrição estranha aqui.

i

Документация по MQL5: Методы матриц и векторов / Машинное обучение / Loss
Документация по MQL5: Методы матриц и векторов / Машинное обучение / Loss
  • www.mql5.com
Loss - Машинное обучение - Методы матриц и векторов - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Aleksey Vyazmikin #:

Procurando companheiros para uma jornada interessante e empolgante por caminhos desconhecidos em busca de preditores/características/sinais misteriosos.

Tenho um mapa para encontrá-los, preciso de mãos para montar armadilhas e refletir sobre os hábitos e o halo desses fenômenos incríveis.

A jornada não é fácil, é longa, mas é emocionante e tenho certeza de que não ficaremos sem troféus!

Se você estiver interessado, faça perguntas!

Tudo já foi inventado antes de nós, portanto, gostaria de entrar no trem.

Agora vamos ter redes neurais no metatrader e depois podemos relaxar.

Em geral, podemos simplesmente comprar futuros de gás e depois vendê-los.
 
Maxim Dmitrievsky #:
Portanto, tudo já foi inventado antes de nós, então eu gostaria de entrar no trem

Talvez inventado, mas claramente não na superfície em fontes abertas.

Para pesquisa e seleção de preditores, estou desenvolvendo uma abordagem sistemática, ou seja, haverá uma tipificação de preditores, que se baseiam, entre outras coisas, em dados de indicadores. Gostaria de vasculhar a base de código em busca de coisas interessantes. Em geral, em meu paradigma, há um conceito de "Evento", que é algo que pode afetar o preço e é descrito por preditores. Haverá diferentes tipos de eventos, por exemplo, "preço rompeu o nível" (que é gerado pelo indicador), e a descrição desses eventos são preditores responsáveis pelo tempo, histórico do evento, relatividade do evento (normalização) - o sistema de coordenadas também será selecionado.

O método em si funciona, ele permite selecionar variantes interessantes, mas precisamos gerar essas variantes.

Estou procurando pessoas para acelerar o processo e aprimorar o pensamento crítico e criativo.

Sim, não haverá pessoas interessadas, estarei escolhendo sozinho - lenta e tediosamente.

 
Aleksey Vyazmikin #:

Pode ser inventado, mas claramente não na superfície em fontes abertas.

Para pesquisa e seleção de preditores, estou desenvolvendo uma abordagem sistemática, ou seja, haverá uma tipificação de preditores, que se baseiam, entre outras coisas, em dados de indicadores. Gostaria de vasculhar a base de código em busca de coisas interessantes. Em geral, em meu paradigma, há um conceito de "Evento", que é algo que pode afetar o preço e é descrito por preditores. Haverá diferentes tipos de eventos, por exemplo, "preço rompeu o nível" (que é gerado pelo indicador), e a descrição desses eventos são preditores responsáveis pelo tempo, histórico do evento, relatividade do evento (normalização) - o sistema de coordenadas também será selecionado.

O método em si funciona, ele permite que você selecione variantes interessantes, mas você precisa gerar essas variantes.

Estou procurando pessoas para acelerar o processo e aprimorar o pensamento crítico e criativo.

Sim, não haverá pessoas interessadas, eu escolherei uma - lenta e tediosamente.

Eu já criei tudo isso
 
Aleksey Vyazmikin #:

Pode ter sido inventado, mas claramente não na superfície em fontes abertas.

Para pesquisa e seleção de preditores, estou desenvolvendo uma abordagem sistemática, ou seja, haverá uma tipificação de preditores, que se baseiam, entre outras coisas, em dados de indicadores. Eu gostaria de examinar a base de código em busca de coisas interessantes. Em geral, em meu paradigma, há um conceito de "Evento", que é algo que pode afetar o preço e é descrito por preditores. Haverá diferentes tipos de eventos, por exemplo, "preço rompeu o nível" (que é gerado pelo indicador), e a descrição desses eventos são preditores responsáveis pelo tempo, histórico do evento, relatividade do evento (normalização) - o sistema de coordenadas também será selecionado.

O método em si funciona, ele permite que você selecione variantes interessantes, mas você precisa gerar essas variantes.

Estou procurando pessoas para acelerar o processo e aprimorar o pensamento crítico e criativo.

Sim, não haverá pessoas interessadas, estarei escolhendo sozinho - lenta e tediosamente.

não se esqueça de adicionar o tempo real... ou você acabará como todo mundo :-)

a la 2 pcs: y=abs(sin(x))*sin(x) ; com frequência de 1 dia e 1 semana ; é melhor calcular a mudança de fase com antecedência

porque as probabilidades de indicadores e cruzamentos de linha dependem deles.

A propósito, tratava-se de algo prejudicial, odiado aqui por Fourier :-)

 
mytarmailS #:
Eu já criei tudo isso.

Você é muito bom!

E você encontrou muitas coisas interessantes e sustentáveis?

O problema com o funcionamento da solução no terminal foi resolvido?

 
Maxim Kuznetsov #:

não se esqueça de adicionar o tempo real... ou você acabará como todo mundo :-)

a la 2 pcs: y=abs(sin(x))*sin(x) ; com uma frequência de 1 dia e 1 semana ; a mudança de fase é melhor calculada com antecedência

porque as probabilidades de indicadores e cruzamentos de linha dependem disso.

A propósito, tratava-se de algo prejudicial, odiado aqui por Fourier :-)

Bem, não sou inteligente em minhas fantasias.... O que significa "tempo real"?

 
Aleksey Vyazmikin #:

0)Que bom menino você é!

1)E você encontrou muitas coisas interessantes e sustentáveis?

2)O problema com o trabalho da solução no terminal está resolvido?

0) Sim, eu sou assim...)

1) Ainda não implementei tudo,
1) Há problemas com a maldição da dimensionalidade e a explosão combinatória, mas isso é solucionável em teoria, em favor da precisão....
2. Há um problema com o fato de que o algoritmo de pesquisa é lento, muitas coisas precisam ser escritas em C ou C++, e eu não sei como fazer isso.
3. Mesmo um algoritmo otimizado não será capaz de pesquisar padrões em uma data grande, você precisa pesquisar padrões localmente....
Mas, em geral, se isso não funciona, nada funciona....

2) Sim.


A propósito, a palavra "evento" pode ser substituída pela palavra "regra".


 
Aleksey Vyazmikin #:

Bem, eu não sou inteligente, em minhas fantasias..... O que você quer dizer com "tempo real"?

A probabilidade de o preço cruzar qualquer linha (e acionar os sinais do indicador) depende da hora do dia e do dia da semana.

É necessário adicionar tempo cíclico a NN e DL. A maneira mais simples é uma onda senoidal. As dependências não são lineares, portanto, ela é simplesmente elevada ao quadrado, levando em conta o sinal. Há duas entradas adicionais que são responsáveis pelas referências de tempo. A meia-noite/meio-dia é diferente em todos os lugares, portanto, é melhor calcular e fornecer a fase com antecedência. Essa é a conexão do modelo com o mundo real e seu horário.

Se eles não forem fornecidos explicitamente, na minha opinião, você receberá uma abóbora ou a coisa toda tentará obtê-los e emiti-los por si só.