Otimização e testes fora da amostra. - página 3

 
Integer: Tudo virá a calhar em casa. Não vale a pena compará-lo com o MQ, pois este programa não se testa a si mesmo, ele apenas executa o testador.
Ninguém está rejeitando o testador. O testador é bom, não há dúvidas sobre isso. Eu estava me referindo ao otimizador. Esses são os otimizadores que podemos comparar. Muito bem, o tema é eterno, nunca terminará. ...
 
leonid553:

Acho que seria uma adição útil ao testador mt4. É possível, e é provável que seja implementado em algum lugar por outra pessoa.


Você está certo - ela foi implementada. Veja por exemplo aqui (projeto MT4NetTester). Só não peça para dá-lo, é feito sob medida.
 
Integer:
Mak:
Pessoal, eu já tenho tudo funcionando há algum tempo.
Verdadeiro sob TradeStation, e não de graça ... :))
Não vejo a utilidade de fazê-lo em MT, não estamos acostumados a pagar pelo trabalho.


Eu também já quase terminei)))) E não há necessidade de incorporar nada no Expert Advisor - o programa é baixado um arquivo com um conjunto de parâmetros

Gente! E quem o impede de escrever um artigo neste tópico, publicar seu desenvolvimento com uma descrição e receber uma taxa?

Não estou à procura de um freebie. Eu tenho diligência suficiente. Não há conhecimentos especiais suficientes. Que diferença isso faz - quem lhe pagará?

 
leonid553:

Boa tarde a todos.

Depois de otimizar uma EA, muitas vezes temos que nerd fora da amostra mais de uma dúzia de conjuntos de parâmetros sugeridos pelo otimizador.

Tenho uma idéia de otimizar os Expert Advisors fora da amostra. Suponha que nós "cobramos" do consultor especializado a otimização por uma série de parâmetros. Por exemplo, a partir de 1 de janeiro. 2006 até 1 de janeiro de 2007.

Recebemos vários milhares de Expert Advisors. Depois disso, salvamos a página com os RESULTADOS DE OPTIMIZAÇÃO como um arquivo separado. Em seguida, estabelecemos o seguinte período histórico para otimização, ou seja, adicionamos um ou dois meses, ou tantos quantos forem necessários.

Em nosso caso, estabelecemos, por exemplo, a partir de 1 de janeiro. 2007 a 1 de junho de 2007. E mais uma vez permitimos a otimização. O otimizador não deve tomar parâmetros em PROPRIEDADES DE PERITOS, mas re-selecioná-los um a um a partir do arquivo que salvamos após a primeira otimização. Após esta segunda otimização, ficamos apenas com aqueles vAriens que produziram lucros fora da amostra!

O resultado, idealmente, é que obtemos os "parâmetros ideais" para trabalhar e testar on-line mais tarde!

Acho que isto será uma adição útil ao testador do mt4. Provavelmente, e muito provavelmente, já é implementado por alguém em algum lugar. Se alguém souber, por favor, compartilhe o link!

Eu, devido a meu modesto conhecimento, não consigo descobrir como implementar a idéia na prática.

Isto é chamado de Walk forward optimisation (WFO) ou Walk forward analysis (WFA).
É um tema antigo e popular no Ocidente.
 
Mathemat:
OK, a idéia geral é clara. Bem, então a última pergunta a todos aqueles que implementaram este projeto (ou seja, Belford, Mak, Integer): vale a pena? Claro, é bom ter um "otimizador" que não só se encaixa na curva (como metaquota), mas também tenta testar a estratégia em dados fora da amostra, mas será que ele realmente merece uma pontuação mais alta do que o otimizador MQ (que também é bom, mas apenas como um ajustador de curva)?
Em geral, vale a pena, embora se olharmos para o próprio processo WFO, podemos ver que ele também é uma otimização, apenas mais complexa.
Selecionamos os melhores da primeira série de entre os melhores da segunda e assim por diante. - isto também é otimização com seu próprio encaixe.

Meu otimizador é apenas um conto de fadas :))))

Em primeiro lugar, é genético e muito eficiente - procura muito rapidamente.
Em segundo lugar, permite utilizar qualquer critério de otimização personalizado (este é um grande poder).
Em terceiro lugar, a nova versão implementa a otimização por múltiplos critérios ao mesmo tempo.
 

Eu coloquei um exemplo de implementação de meu critério de otimização no tópico'init() durante a otimização'. E eu estou tentando escrever um artigo sobre isso. O método utilizado, eu acho, permite fazer muitas coisas, desde a WFO até o próprio algoritmo genético.

 
Mathemat:
leonid553, você está indo na direção certa, pois a "otimização" existente sem testes em dados fora da amostra é pura curva de ajuste. Mas o algoritmo básico deveria ser mais complexo, como nos programas de redes neurais. Toda "otimização" deveria ir simultaneamente em todos os conjuntos de dados de uma só vez (este é o desejo dos desenvolvedores). Você pode, naturalmente, trabalhar com apenas dois conjuntos de dados, mas é melhor prever três - treinamento (A), validação (B) e testes (C). Bem, nas condições existentes, você terá que trabalhar mais ou menos como você sugere.


Parece-me que os testes (treinamento, validação, corrida, etc.) fora da amostra reduzem o conjunto A="Parameter sets profitable in the sample" para o conjunto B="Parameter sets profitable in the sample, as well as outside the sample". Otimização sobre amostragem + fora da amostra dá o conjunto C="Parameter sets profitable in sampling + out-of-sample".

O conjunto B está contido no conjunto C? Na minha opinião, obviamente sim, porque o conjunto B contém "Conjuntos de parâmetros rentáveis tanto dentro como fora da amostra", e por isso são "Conjuntos de parâmetros rentáveis dentro da amostra + fora da amostra".

Então, o que é redundante em C em comparação com B?

Obviamente, entre o conjunto C haverá conjuntos de parâmetros que não são lucrativos na amostra (somente na amostra), mas que ganham vingança fora da amostra. Ou seja, perdemos dinheiro na amostra, mas mais do que pagamos fora da amostra.

Além disso, entre o conjunto C haverá conjuntos de parâmetros lucrativos na amostra (somente na amostra), mas não rentáveis fora da amostra, ou seja, ganhamos dinheiro na amostra, mas perdemos dinheiro fora da amostra.

Assim, uma passagem nos dá o conjunto C, que coleta o subconjunto D="Parameter sets não lucrativos em amostra ou fora de amostra, mas geralmente lucrativos em amostra + fora de amostra", e que não está no conjunto B. Se este for um problema para nós, é muito mais fácil de resolver do que testes fora de amostra.

Além disso, pode-se argumentar que o ajuste mais severo (a rentabilidade deve ser respeitada em parcelas individuais) permanece, e apenas o subconjunto D (talvez a criança procurada?) é jogado fora, o que dificilmente pode ser chamado de ajuste. Tudo o que evitamos ao dividir o período de teste em segmentos é a exclusão de parâmetros que dão resultados não lucrativos em um dos segmentos. Tudo o que alcançamos é rentabilidade em cada segmento. A conclusão lógica desta abordagem é a rentabilidade de cada negócio separadamente. Quem apenas garantirá que tais parâmetros maravilhosos não nos sejam apresentados pelo diabo do ajuste absoluto da curva?

 

Uma EA não é o mesmo que uma EA! Há EAs para os quais os testes que descrevi são os mais otimistas.

O que, por exemplo, temos a perder aqui? Nada!

 
Vita:
Tudo o que evitamos ao dividir o período de teste em segmentos é a exclusão de parâmetros que dão resultados não rentáveis em um dos segmentos. Tudo o que conseguimos é rentabilidade em cada intervalo. A conclusão lógica desta abordagem é a rentabilidade de cada negócio separadamente. Quem apenas garantirá que tais parâmetros maravilhosos não nos sejam apresentados pelo diabo do ajuste absoluto da curva?

Eu o formularia desta forma: marcamos algumas vicissitudes de certos extremos pela primeira otimização e verificamos sua estabilidade pela segunda (fora da amostra). É claro que ninguém dará qualquer garantia de que eles permanecerão estáveis no futuro. Mas a falta de garantias de desempenho é uma característica de todas as previsões.

É claro que podemos obter as mesmas informações tendo processado resultados de otimização para toda a amostra. Parece-me, entretanto, que será um processo muito mais demorado, tanto em termos de implementação de software quanto em termos de contagem de tempo.

 
lna01:
Vita:
Tudo o que evitamos ao dividir o período de teste em segmentos é a exclusão de parâmetros que dão resultados não rentáveis em um dos segmentos. Tudo o que conseguimos é rentabilidade em cada intervalo. A conclusão lógica desta abordagem é a rentabilidade de cada negócio separadamente. Quem apenas garantirá que tais parâmetros maravilhosos não nos sejam apresentados pelo diabo do ajuste absoluto da curva?

Eu o formularia desta forma: marcamos algumas vicissitudes de certos extremos pela primeira otimização e verificamos sua estabilidade pela segunda (fora da amostra). Ninguém, é claro, dará qualquer garantia de que eles permanecerão estáveis no futuro. Mas a falta de garantias de desempenho é uma característica de todas as previsões.

--> O que a divisão acrescenta a ela, em comparação com a execução de ponta a ponta?

É claro que podemos obter as mesmas informações processando os resultados da otimização em toda a amostra. Parece-me, entretanto, que este seria um processo muito mais demorado, tanto em termos de implementação de software quanto de contagem de tempo.

--> Se por "processamento de resultados de otimização em toda a amostra" você quer dizer descartar o conjunto D, então eu discordo - descartar resultados que dão perdas intermediárias (na amostra ou fora da amostra) é uma tarefa elementar, resolvida durante a própria otimização em toda a amostra, ou seja, nenhum processamento após a otimização é necessário. O resultado é definido B imediatamente. E nenhuma verificação adicional fora da amostra consome tempo.

Razão: