Existe um padrão para o caos? Vamos tentar encontrá-lo! Aprendizado de máquina com o exemplo de uma amostra específica. - página 11

 
elibrarius #:

Esse é o ponto, ele é melhor por um fator de 2 do que em recursos de 5000+.
Acontece que todos os outros 5000+ chips apenas pioram o resultado. Embora, se você selecioná-los, certamente encontrará alguns que melhoram.
É interessante comparar o que seu modelo mostrará com esses 2.

Eu tenho expectativa de mat. um pouco mais de um, lucro dentro de 5 mil, a precisão escreve 51% - ou seja, os resultados são claramente piores.

Sim, e na amostra de teste obtive uma perda em todos os 100 modelos.
 
Aleksey Vyazmikin #:

Tenho expectativa de um pouco mais de um, lucro dentro de 5 mil, a precisão diz 51% - ou seja, os resultados são claramente piores.

Sim, e na amostra de teste houve uma perda em todos os 100 modelos.
Na segunda amostra do H1? Estou melhorando nessa.
Mas na primeira, também está perdendo.
 
elibrarius #:
Na segunda amostra de H1? Estou melhorando nessa.
E na primeira, também estou perdendo.

Sim, estou falando da amostra de H1. Inicialmente, sou treinado no train.csv, paro no test.csv e faço uma verificação independente no exam.csv, portanto, a variante com duas colunas falha no test.csv. As variantes de ontem também estavam caindo, mas também havia aquelas que ganharam um pouco de dinheiro.

Então, que tipo de gráficos milagrosos você tem?
 

E é assim que a válvula avança com o treinamento de 20.000 linhas em 10.000 linhas. Ou seja, o gráfico mostra não 2 anos, mas 5. 2 anos deles terão que ficar no drawdown, depois mais um ano sem lucro, devido ao qual os ganhos médios caíram novamente para 0,00002 por negociação. Também não é bom para negociação.
Somente em 2 colunas de tempo.


As mesmas configurações em todas as mais de 5000 colunas. Um pouco melhor. 0,00003 por negociação.


 
elibrarius #:

Lucro de 0,20600, em média 0,00004 por negociação. Proporcional ao spread

Sim, o número já é impressionante. No entanto, o alvo está marcado para vender e, como todo o período em um TF grande está sendo vendido, acho que isso também melhora artificialmente o resultado.

elibrarius #:

É mais do que 0,00002 em todas as colunas, mas, como eu disse anteriormente, "Spread, slippages etc. vão consumir todo o ganho". O Teriminal mostra o spread mínimo por barra (ou seja, durante toda a hora), mas no momento de uma negociação ele pode ser de 5 a 10 pontos e, nas notícias, pode ser de 20 ou mais.

Portanto, a marcação que tenho é feita em barras de minutos, os spreads aumentam normalmente em um período de tempo, ou seja, em um minuto provavelmente haverá um spread grande o tempo todo, ou não é assim agora? Eu ainda não descobri como funciona o spread no 5 - acho mais conveniente para testes no 4.

elibrarius #:

Você deve procurar modelos com ganhos médios de pelo menos 0,00020 por negociação. Assim, em negociações reais, você poderá obter 0,00010. Isso é para EURUSD; em outros pares, como AUD NZD, nem mesmo 50 pts serão suficientes, pois os spreads são de 20 a 30 pts.

Eu concordo. A primeira amostra deste tópico oferece uma expectativa de 30 pips. É por isso que ainda mantenho a opinião de que a marcação deve ser inteligente.

elibrarius #:

Mais uma vez, esse é o melhor gráfico da amostra do exame. Como escolher as configurações que darão o melhor equilíbrio na amostra do exame é uma questão sem solução. Você escolhe pelo teste. Eu treinei no traine+test. Basicamente, o que você tem um exame, eu tenho um teste.

Acho que você deve começar fazendo com que a maioria da amostra ultrapasse o limite de seleção. Além disso, talvez faça sentido escolher o modelo menos treinado de todos - ele tem menos ajuste.

elibrarius #:

E é assim que a rolagem avança com o treinamento em 20.000 linhas em 10.000 linhas. Ou seja, no gráfico, não são 2 anos, mas 5. 2 anos deles terão que ficar no drawdown, depois mais um ano sem lucro, devido a isso os ganhos médios caíram novamente para 0,00002 por negociação. Também não é bom para negociação.
Somente em 2 colunas de tempo.


As mesmas configurações em todas as mais de 5000 colunas. Um pouco melhor. 0,00003 por negociação.


Ainda assim, verifica-se que os outros preditores também podem ser úteis. Você pode tentar adicioná-los em grupos, pode primeiro peneirar a correlação e reduzi-los ligeiramente.

Com relação à matriz de expectativa, talvez nessa estratégia seja mais lucrativo entrar não pela abertura do candle, mas pelos mesmos 30 pips do preço de abertura - candles sem cauda são raros.

 
Aleksey Vyazmikin #:

Portanto, a marcação que tenho é feita em barras de minutos, os spreads aumentam normalmente em um período de tempo, ou seja, em um minuto provavelmente haverá um grande spread o tempo todo, ou não é assim agora? Eu ainda não descobri como funciona o spread no 5 - para mim, é mais conveniente fazer testes no 4.

E no M1, também, o spread mínimo para o tempo da barra é mantido. Nas contas ECH, quase todas as barras M1 têm 0,00001...0,00002, raramente mais. Todas as barras sênior são construídas a partir da M1, ou seja, haverá o mesmo spread mínimo. É necessário adicionar 4 pontos de comissão por rodada (outros centros de corretagem podem ter outras comissões).

Aleksey Vyazmikin #:

E, no entanto, verifica-se que os outros preditores também podem ser úteis. Você pode tentar adicioná-los em grupos, pode primeiro peneirar a correlação e reduzi-los ligeiramente.

Talvez devêssemos selecioná-los. Mas se a adição de mais de 5.000 a 2 acrescentar uma pequena melhoria, pode ser mais rápido selecionar 10 partes por força bruta total com treinamento de modelo. Acredito que será mais rápido do que esperar pela correlação por 24 horas. Só que é necessário automatizar o retreinamento em um loop diretamente do terminal.

O katbusta não tem uma versão DLL? A DLL pode ser chamada diretamente do terminal. Há um artigo com exemplos aqui. https://www.mql5.com/ru/articles/18 e https://www.mql5.com/ru/articles/5798.

Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?
Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?
  • www.mql5.com
Так уж сложилось, что сейчас мало кто из разработчиков помнит, как написать простую DLL библиотеку и в чем особенности связывания разнородных систем. Я постараюсь за 10 минут на примерах продемонстрировать весь процесс создания простых DLL библиотек и раскрою некоторые технические детали нашей реализации связывания. Покажу пошаговый процесс создания DLL библиотеки в Visual Studio с примерами передачи разных типов переменных (числа, массивы, строки и т.д.) и защиту клиентского терминала от падений в пользовательских DLL.
 
elibrarius #:

Talvez devêssemos selecionar. Mas se a adição de mais de 5.000 aos 2s proporcionar uma pequena melhoria, talvez seja mais rápido selecionar 10 peças por força bruta total com treinamento de modelo. Acho que isso seria mais rápido do que esperar pela correlação por 24 horas.

Sim, é melhor fazer isso em grupos no início - você pode fazer, digamos, 10 grupos e treinar com suas combinações, avaliar os modelos, eliminar os grupos mais malsucedidos e reagrupar os restantes, ou seja, reduzir o número de preditores no grupo e treinar novamente. Já usei esse método antes - o efeito está presente, mas, novamente, não é rápido.

elibrarius #:

Só que você precisa automatizar o retreinamento em um loop diretamente do terminal.

O catbust não tem uma versão DLL? A DLL pode ser chamada diretamente do terminal. Há um artigo com exemplos aqui. https://www.mql5.com/ru/articles/18 e https://www.mql5.com/ru/articles/5798.

Seria bom ter controle total do aprendizado por meio do terminal, mas, pelo que sei, não há uma solução pronta. Há uma biblioteca catboostmodel.dll que apenas aplica o modelo, mas não sei como implementá-la na MQL5. Em teoria, é claro, é possível criar uma interface na forma de uma biblioteca para treinamento - o código está aberto, mas não tenho condições de pagar por isso.

 
Aleksey Vyazmikin #:

Sim, é melhor começar com grupos - você pode criar, digamos, 10 grupos e treiná-los em combinações, avaliar os modelos, eliminar os grupos mais malsucedidos e reagrupar os restantes, ou seja, reduzir o número de preditores no grupo e treiná-los novamente. Já usei esse método antes - o efeito está presente, mas, novamente, não é rápido.

Proponho outra coisa. Adicionamos recursos ao modelo um a um. E selecionamos os melhores.
1) Treine mais de 5000 modelos em um recurso: cada um dos mais de 5000 recursos. Pegue o melhor do teste.
2) Treine (5000+ -1) modelos em 2 recursos: o primeiro melhor recurso e (5000+ -1) os demais. Encontre o segundo melhor.
3) Treine modelos (5000+ -2) em 3 recursos: no 1º, no 2º melhor recurso e nos (5000+ -2) restantes. Encontre o terceiro melhor.
Repita até que o modelo melhore.
Normalmente, parei de melhorar o modelo depois de 6 a 10 recursos adicionados. Você também pode aumentar para 10-20 ou quantos recursos quiser adicionar.

Mas acho que selecionar recursos por teste é ajustar o modelo à seção de teste dos dados. Há uma variante de seleção por trayne com peso 0,3 e teste com peso 0,7. Mas acho que isso também é um ajuste.

Eu queria fazer o roll forward, então o ajuste será para muitas seções de teste, levará mais tempo para contar, mas me parece que essa é a melhor opção.

Embora você não tenha automação para executar catbusters.... mais de 50 mil vezes, será difícil treinar novamente os modelos manualmente para obter 10 recursos.
É mais ou menos por isso que prefiro minha embarcação à catbust. Mesmo que ela funcione de 5 a 10 vezes mais lentamente que a Cutbust. Você teve um modelo por 3 minutos, eu tive 22.
 
elibrarius #:

Não é isso que estou sugerindo. Adicionamos recursos ao modelo um a um. E selecionamos os melhores.
1) Treine mais de 5000 modelos em um recurso: cada um dos mais de 5000 recursos. Retire o melhor do teste.
2) Treine (5000+ -1) modelos em 2 recursos: o primeiro melhor recurso e (5000+ -1) os demais. Encontre o segundo melhor.
3) Treine modelos (5000+ -2) em 3 recursos: no 1º, no 2º melhor recurso e nos (5000+ -2) restantes. Encontre o terceiro melhor.
Repita até que o modelo melhore.
Normalmente, parei de melhorar o modelo depois de 6 a 10 recursos adicionados. Você também pode aumentar para 10 a 20 ou quantos recursos quiser adicionar.

As abordagens podem ser diferentes - sua essência é a mesma em geral, mas a desvantagem é, obviamente, comum - custos computacionais muito altos.

elibrarius #:

Mas acho que a seleção de recursos por teste é um ajuste do modelo à seção de teste dos dados. Há uma variante da seleção por trayne com peso 0,3 e teste com peso 0,7. Mas acho que isso também é um ajuste.

Eu gostaria de fazer o valving para frente, então o ajuste será para muitas seções de teste, levará mais tempo para calcular, mas me parece que essa é a melhor opção.

É por isso que estou procurando algum grão racional dentro do recurso para justificar sua seleção. Até o momento, optei pela frequência de recorrência de eventos e pela mudança da probabilidade de classe. Em média, o efeito é positivo, mas esse método avalia de fato a primeira divisão, sem levar em conta os preditores correlacionados. Mas acho que você também deveria tentar o mesmo método para a segunda divisão, removendo da amostra as linhas das pontuações dos preditores com forte predisposição negativa.

elibrarius #:
Embora você não tenha automação para executar catbusters.... mais de 50 mil vezes, seria difícil treinar novamente os modelos manualmente para obter 10 características.
É mais ou menos por isso que prefiro minha embarcação à catbust. Mesmo que ela funcione de 5 a 10 vezes mais lentamente que a Cutbust. Você tinha um modelo que levava 3 minutos para contar, eu tinha 22.

Mesmo assim, leia meu artigo.... Agora tudo funciona de forma semiautomática - as tarefas são geradas e o bootnik é iniciado (incluindo tarefas para o número de recursos a serem usados no treinamento, ou seja, você pode gerar todas as variantes de uma vez e iniciá-las). Essencialmente, é necessário ensinar o terminal a executar o arquivo bat, o que é possível, creio eu, e controlar o fim do treinamento, analisar o resultado e executar outra tarefa com base nos resultados.

 
Aleksey Vyazmikin #:

Somente com a alteração da taxa de aprendizado foi possível obter dois modelos entre 100 que atendiam ao critério definido.

O primeiro.

O segundo.

Acontece que, sim, o CatBoost pode fazer muito, mas parece necessário ajustar as configurações de forma mais agressiva.

Equilíbrio


Você seleciona esses modelos pelos melhores no teste?

Ou entre um conjunto dos melhores no teste - os melhores no exame?

Razão: