Bibliotecas: BestInterval - página 11

 
fxsaber:

Isso não parece ser muito. Há outro aspecto a ser observado. ML e BestInterval são conceitos diferentes. O ML procura o TC, o BestInterval não procura nada.

Gostaria de saber como um exemplo como esse funcionaria. Suponha que o ML tenha 100 parâmetros e encontre um CT. O que será melhor no final, ML100 + BestInterval10 ou ML110?

Bem, como não são poucos... você tem que levar em conta os preditores de alguma forma, 1 parâmetro para cada um é o mínimo.

Acho que será +- a mesma coisa. Eu apenas defino os intervalos de negociação manualmente, por exemplo, na sessão noturna - ainda assim, retreina. Ou seja, se você remover o melhor intervalo para alguma coisa, o overfit não desaparecerá.

 
Maxim Dmitrievsky:

Eu apenas coloco os intervalos de negociação manualmente, por exemplo, na sessão noturna - ainda assim, retrai.

Essa frase não pode deixar de provocar um sorriso, porque equivale a "ainda não é um graal".

Na minha opinião, o ML é relevante para BigData. E as séries de preços não podem ser chamadas de BigData, mesmo com um BigData nyatyatyazhka.

É por isso que minha abordagem é um pouco diferente - conservadora. Faço pesquisa (um pouco) e, é claro, dou uma olhada (é estúpido não fazer isso). Em seguida, escrevo e observo o resultado. O BestInterval, é claro, tornou-se indispensável.

Ao mesmo tempo, pego um pedaço bacana de código real (com determinadas propriedades) e corro ideias sobre ele. A diferença fundamental em relação ao ML é que eu sempre entendo por que ele negocia dessa forma e não da outra.

 
fxsaber:

Essa frase não pode deixar de provocar um sorriso, pois equivale a "ainda não é o Graal".

Na minha opinião, o ML é relevante para BigData. E as séries de preços não podem ser chamadas de BigData, mesmo com um pouco de BigData.

É por isso que minha abordagem é um pouco diferente - conservadora. Faço pesquisa (um pouco) e, é claro, dou uma olhada (é estúpido não fazer isso). Em seguida, escrevo e observo o resultado. O BestInterval, é claro, tornou-se indispensável.

Ao mesmo tempo, pego um pedaço bacana de código real (com determinadas propriedades) e corro ideias nele. A principal diferença em relação ao ML é que eu sempre entendo por que ele negocia dessa forma e não da outra.

Eu queria fazer upload de notícias, que podem se tornar realmente interessantes, mas eles não criaram uma API para o calendário integrado, mas acho que queriam. Estou com muita preguiça de analisar.

sim, eu sei que um ml não é suficiente :) o bestinterval é uma coisa muito legal por si só, obrigado por ele.

 

Se alguém receber um erro crítico do OnTester, forneça os dados para reproduzi-lo. Eu nunca tive um.


ZY Atualizado com o Virtual.

 

As pessoas perguntam se existe a possibilidade de fazer com que o BestInterval encontre o melhor intervalo não para o lucro, mas, por exemplo, para o fator de recuperação (RF) ou o fator de lucro (PF) (qualquer variante).


Para o PF, a resposta é óbvia, pois o PF máximo é alcançado quando há apenas uma negociação no histórico. E para que essa negociação seja positiva. Portanto, é claro que não.

Para o PF, a situação é aproximadamente a mesma. O fato é que o BestInterval do FB pode ser calculado apenas pelo saldo. Portanto, o histórico de uma transação (positiva) é suficiente. Portanto, a resposta é a mesma.


Mas quando se trata de outros critérios de otimização, você precisa explicar com mais detalhes. E é por isso que eu faço isso na seção. O núcleo do BestInterval não é complicado e é um algoritmo muito eficiente (uma passagem). Por exemplo, se forem feitas 1.000 negociações, o BestInterval calculará o melhor intervalo para 1.000 operações simples. O BestInterval se baseia nesse algoritmo (pode ser aplicado a semanas, não apenas a dias) e em nenhum outro. É aqui que a velocidade faz uma enorme diferença - otimização. É por isso que os cálculos são livres de tempo - instantâneos.


O BestInterval não funciona com base no princípio de "jogar fora - olhar para ele, jogar fora - olhar para ele,..., até atingir o limite máximo". Caso contrário, ele seria extremamente lento. É por isso que ele funciona apenas para aumentar o lucro absoluto do histórico de negociações. E é por isso que faz muito sentido usar o biblah ao otimizar para TS no modo de lote constante. E o MM deve ser usado depois que o BestInterval for calculado.


No entanto, há uma possibilidade (ainda não implementada) de fazer com que a descoberta do melhor intervalo para o lucro máximo não seja absoluta, mas relativa (ou seja, com reinvestimento). Esses (e outros) recursos estão planejados...


Por enquanto (originalmente estava na biblioteca, mas foi deixado apenas para mim - sem descrição), há uma possibilidade. Se você escrever essa linha

#define  BESTINTERVAL_ONTESTER_FORMULA BestInterval.GetProfit() * BestInterval.GetRecoveryFactor()

então, ao otimizar, o OnTester retornará o valor destacado em cores. Nesse caso, é lucro * FV. Você pode substituir essa fórmula por qualquer outra fórmula (qualquer expressão, inclusive chamadas de função). Nesse caso, os seguintes participantes estão disponíveis no BestInterval:

BestInterval.GetProfit()
BestInterval.GetProfitPlus()
BestInterval.GetProfitMinus()
BestInterval.GetTotal()
BestInterval.GetTotalPlus()
BestInterval.GetTotalMinus()
BestInterval.GetProfitFactor()
BestInterval.GetMean()
BestInterval.GetMaxDrawDown()
BestInterval.GetRecoveryFactor()

Seus nomes deixam claro quais informações eles carregam. Portanto, é possível definir um OnTester personalizado, mas usando os valores correspondentes do BestInterval.


Portanto, se estiver procurando uma boa variante de acordo com outro critério, defina a fórmula necessária e o otimizador encontrará o que você precisa. Mas entenda que o BestInterval foi criado para cada passagem para maximizar o lucro, e seu critério de otimização apenas o ajuda (o BestInterval não é afetado) a encontrar rapidamente uma boa variante do seu ponto de vista.


ZY Existem diferentes métodos na biblioteca para usá-lo na programação. Tenho quase certeza de que ninguém fará isso, portanto, essa parte não está descrita. Se você realmente precisar, há uma maneira padrão

No código-fonte, o significado é rapidamente compreendido.

Marquei os métodos que considero importantes para uso posterior dos resultados dos cálculos ao criar robôs reais.

 

Achei que seria lógico generalizar o princípio do BestInterval. De fato, o BestInterval é uma classificação de transações por OrderOpenTime. Mas ninguém nos impede de classificar por outro critério.

Por exemplo, sabemos qual era o valor da МАшка (vamos escrevê-lo no OrderComment) no momento da abertura da posição. Dessa forma, todas as posições no histórico de negociação podem ser comparadas a esses valores de MA.

Em seguida, aplicamos o BestInterval a essas MAs. E, na saída, obtemos os intervalos de МАшки nos quais as posições devem ser abertas e em quais - não.


Obviamente, você pode usar qualquer função numérica em vez de uma MA. Como resultado, você pode encontrar filtros legais que superam o tempo.

 
fxsaber:

É claro que você pode usar qualquer função numérica em vez da MA. O ponto principal é que você pode encontrar filtros legais que superam o tempo.

De que área de conhecimento isso vem?

Você faz ML, senhor, apenas da sua própria maneira, muito curiosa :)

e, se for o caso, deve fazê-lo de acordo com os cânones do ML, com divisão em treinamento, teste e validação, com generalização das avaliações.

 
Maxim Dmitrievsky:

de que área de conhecimento é isso?

O critério de superioridade é o aumento do lucro na amostra de treinamento com o mesmo número de "intervalos" lançados (variáveis de entrada).

Não vejo nenhuma razão para que um horário escolhido aleatoriamente (estamos apenas acostumados a ele) seja melhor do que outros indicadores.

Sim, podemos dizer que a hora do dia/semana afeta diretamente a vida humana, e é daí que surgem as pernas dos padrões de mercado. Mas o algo-trading já tem uma grande parte do volume de negócios e, portanto, é bastante razoável usar outras funções que podem muito bem ser superiores ao tempo pelo mesmo motivo.

Isso deve ser feito de acordo com os cânones do ML, com separação em treinamento, teste e validação, com generalização das avaliações

Não faremos nada disso, porque é uma busca interminável do graal. Tem que haver um ML potencialmente lucrativo - esse é o primeiro pré-requisito.

Sinceramente, é estranho que os métodos de ML não consigam nem chegar perto do TesterEA mais simples. O mais provável é que os adeptos do ML tenham procurado tudo de uma vez.

 
fxsaber:

Não vou fazer nada disso, porque é uma busca interminável por grails. Deve haver um TS potencialmente lucrativo - essa é a primeira condição necessária.

Falando francamente, é estranho que os métodos de ML não consigam nem chegar perto do TesterEA mais simples. Muito provavelmente, os adeptos do ML escavam tudo de uma vez.

O problema é que os especialistas locais em ML têm nível zero não apenas em ML, mas também em programação. Os amadores são solitários. Mas tudo evolui... muito lentamente :)

há um teorema de Gödel claro que afirma a necessidade de um critério de avaliação externo, que pode ser um critério no intervalo de teste, mas não no intervalo de treinamento.

 
Maxim Dmitrievsky:

O problema é que os adeptos locais do ML têm nível zero não apenas em ML, mas também em programação. Os amadores são solitários. Mas as coisas estão evoluindo... muito lentamente :)

há um claro teorema de Gödel que afirma a necessidade de um critério de avaliação externo, que pode ser um critério no intervalo de teste, mas não no intervalo de treinamento.

95% dos ML-makers usam cotações EURUSD. Eles nem sequer se preocupam com a qualidade das cotações. E começam a sofrer.

Por que não o GBPUSD? Por que cotações de MQ e não de outra fonte? Por que M1 e não M2, etc.? Uma pergunta elementar, mesmo antes de aplicar qualquer ML, que é fundamental. Mas não, o principal é conectar o TensorFlow ou o CatBoost.


O truque mais difícil para o melhor comerciante de ML do mundo é dar SB e convencer que eles são kotirs. Isso é pesquisa suficiente para o resto de sua vida.