среда, 2 мая 2018 г.

Sistema de negociação sobre otimização


Sistemas de Negociação: Solução de Problemas e Otimização.
Mesmo depois de projetar e construir com sucesso um sistema comercial comercial, um comerciante pode achar que seu sistema é imperfeito. Pode haver alguns problemas, como um evento que continua gerando perdas; ou talvez as regras sejam muito amplas e precisam ser otimizadas. Qual é a maneira mais fácil de resolver o problema? Quão eficaz é a otimização? Esta seção irá mostrar-lhe como solucionar problemas e otimizar seu sistema de negociação para maximizar os lucros e minimizar as perdas.
A solução de problemas é um aspecto muito importante do desenvolvimento do sistema. Um sistema comercial decente será rentável na maioria das condições de mercado, mas se ocasionar grandes perdas, você pode trabalhar para identificar e resolver o problema. Aqui estão quatro etapas fáceis:
Padrão de gráfico ou série de preços - Spike nos preços. Volume - Grande volume inicial e baixo volume depois disso. Licitação / Ask spread - Spike no preço em baixo volume geralmente indica um grande spread. Margem (se usado). Estas são algumas das áreas em que podem ocorrer problemas, que podemos ver analisando o gráfico abaixo. Observe os picos de preço em baixo volume pela seta verde. Observe também o grande volume (perto da seta azul) seguido de baixo volume depois disso. Se nenhum desses se revelar culpado, existem outros fatores que podem ser analisados, como tamanhos de bloco e padrões de gráficos avançados.
2. Avalie o problema - Use as informações que você reuniu para determinar o que exatamente causou o mau funcionamento do sistema ou gerar uma perda. Isso geralmente é feito usando o senso comum, ou analisando registros de transações (fornecidos por seu corretor). Aqui estão exemplos de como algumas das condições dos quatro fatores listados acima podem ser o motivo de um problema identificado:
Padrão de gráfico ou série de preços - O sistema não consegue vender durante quedas acentuadas ou comprar durante subidas íngremes. Talvez o sistema não tenha amplo tempo para comprar ou vender.
3. Considere as alternativas - Simplesmente tente algumas soluções para os problemas que você identificou. Considere as seguintes alternativas correspondentes aos problemas acima.
Padrão de gráfico ou série de preços - Uma alternativa é simplesmente dizer ao sistema que aguarde até que o preço se estabilize antes de comprar. Isso pode ser feito usando as diferenças entre os preços anteriores e o preço atual para criar uma regra.
4. Implementar uma solução - Finalmente, precisamos aplicar a solução e ver como ela funciona. O comércio de papel ou o teste de volta novamente antes da negociação ao vivo é muitas vezes uma boa idéia depois de aplicar uma solução, porque às vezes as soluções têm conseqüências não intencionais. Por exemplo, regras adicionais podem limitar esses dias baixos, mas também diminuir os lucros globais (devido a oportunidades perdidas).
A otimização simplesmente significa encontrar os melhores conjuntos de parâmetros para um determinado mercado. Esse processo pode melhorar marginalmente os resultados. No entanto, também traz muitos riscos, porque o seu pressuposto subjacente é que o desempenho passado é indicativo de futuros movimentos de preços. A otimização pode ser realizada alterando os valores do parâmetro que você deseja otimizar e depois testar essas alterações. Tenha em mente que os outros parâmetros devem permanecer constantes para que os efeitos das mudanças sejam determinados. Depois de encontrar o valor que produz o maior desempenho no teste de volta, implemente-o no sistema de negociação.
A otimização muitas vezes exagera os resultados. Isso ocorre porque os parâmetros são tão específicos e não universais que qualquer mudança no mercado (ou seja, o futuro) pode causar instabilidade.
Como regra geral, a otimização só deve definir configurações amplas para parâmetros em vez de configurar regras específicas - mesmo que tenha sido bem sucedido em backtesting e papel trading.
A solução de problemas é crucial para que seu sistema funcione da maneira que você quiser. É importante identificar quaisquer problemas, observando as ocorrências em que ocorreram e depois avaliando como certas condições de diversos fatores - como padrão de preço, volume, oferta / solicitação e margem - podem ter causado o problema.

Otimização.
DEFINIÇÃO da "Otimização"
No contexto da análise técnica, a otimização é o processo de ajuste de um sistema comercial na tentativa de torná-lo mais efetivo. Esses ajustes incluem mudar o número de períodos usados ​​nas médias móveis, mudar o número de indicadores usados ​​ou simplesmente tirar o que não funciona.
Por exemplo, se um investidor tem um sistema de negociação simples que é composto apenas por um cruzamento do preço de fechamento e uma média móvel, alterando os períodos da média móvel, o comerciante obterá lucros, riscos, perdas de capital, etc. , otimização ajuda você a escolher os parâmetros ideais para o comércio.
QUEBRANDO PARA BAIXO 'Otimização'
Uma vez que um sistema de negociação é desenvolvido, o próximo passo antes da implementação é back-testing e otimização. Encontrar a melhor combinação possível de configurações para os parâmetros do sistema de negociação é vital para o lucro que gera o sucesso de um sistema comercial. Há muitas armadilhas e armadilhas que os comerciantes às vezes negligenciam inadvertidamente. O excesso de otimização e o excesso de tamanho ou o período de dados de amostragem são apenas alguns dos erros sutis que levam a sistemas de negociação falhando.
Sobre otimização.
Um sistema de negociação é usado para definir um conjunto de regras que determina a entrada e a saída de um comércio que produz lucros consistentes. Com cada regra que é aplicada dentro de um sistema, o número de sinais é diminuído para satisfazer os critérios coletivos estabelecidos pela totalidade das regras. Aplicar muitas regras para obter resultados de back-test que mostram maiores lucros podem resultar no que é referido como ajuste de curva. É quando os resultados de um back-test em um período de tempo mostram a rentabilidade, mas colapsa quando o mesmo sistema e configurações são aplicados a um período de tempo diferente. Por exemplo, imagine um sistema de negociação que use um gráfico diário no ano passado e selecione o mês e o dia em que ocorreu uma grande inversão, para indicar um sinal na direção da reversão que produz um comércio lucrativo. As regras desse sistema hipotético (ainda que impraticável) seriam a lista de datas de mês e dia (sem ano) que resultariam no maior lucro líquido daquele ano. A otimização tenderia ao tempo exato de cada reversão e resultaria no ajuste perfeito (curva). No entanto, quando o sistema é aplicado a um ano diferente ou ao futuro, é muito provável que ele falhe.
Período de dados da amostra.
A duração do período de dados em que o back-testing é realizado para otimizar as configurações de um sistema de negociação varia de acordo com o sistema. Alguns sistemas geram vários sinais de negociação por dia e alguns geram um sinal por mês ou menos. Em ambos os casos, o back-test deve, no mínimo, incluir uma série de sinais comerciais que apresentarão resultados estatisticamente significativos. Dito isto, deve-se ter cuidado para garantir que o período de amostragem cobre todas as condições gerais do mercado, incluindo tendências, tendências de baixa e negociação de alcance. Isso ajudará a evitar resultados de otimização que funcionem em apenas um tipo de condição de mercado.

Forex Mecânico.
Negociação no mercado FX usando estratégias mecânicas de negociação.
Otimização sem ajuste de curva: seis dicas para evitar a super otimização.
A codificação de estratégias de negociação bem-sucedidas pode ser um processo longo e frustrante, especialmente quando se trata da parte em que você aprimora sua estratégia de negociação para melhorar o desempenho dos dados do mercado. O processo pelo qual um dado sistema tem seus parâmetros ajustados para dar um melhor desempenho no passado é denominado "otimização", um processo pelo qual os resultados com muitos conjuntos de parâmetros diferentes são comparados e os melhores entre aqueles são escolhidos . Otimização é uma parte natural do desenvolvimento do sistema desde mudanças em certas coisas & # 8211; como períodos de indicador, interrompa a perda e obtenha valores de lucro e # 8211; pode afetar drasticamente o desempenho de uma estratégia comercial. No entanto, um dos principais problemas de realização de otimizações é a palavra temida: ajuste de curva. Você pode ler mais sobre a definição de ajuste de curva neste post que escrevi no início deste ano e também pode ler este post para saber mais sobre cinco erros muito comuns que as pessoas enfrentam ao realizar otimizações.
Evidentemente, evitar o ajuste da curva deve ser uma parte muito importante de todos os esforços do desenvolvedor do sistema, pois não queremos gerar estratégias de negociação com resultados absolutamente surpreendentes que não serão alcançáveis ​​no futuro. Uma vez que nosso objetivo é produzir sistemas que consigam bons desempenhos no passado com a maior garantia possível de que esse desempenho seja repetido no futuro, torna-se vital tomar medidas para garantir que a otimização não ofereça estratégias ajustadas em curva. Aqui estão seis dicas importantes que você deve implementar para evitar estratégias de ajuste de curva para o passado:
1. Evite simulações não confiáveis. Talvez a coisa mais importante que você precisa fazer para evitar uma estratégia de ajuste de curva seja evitar completamente o uso e a otimização de sistemas que não podem ser simulados com precisão. A simulação de sistemas que operam em intervalos de tempo inferiores a 30 minutos ou sistemas com metas de lucro e perda de perdas muito pequenas (abaixo de 10 vezes a propagação) deve ser absolutamente evitada, pois os resultados não serão viáveis ​​e um monte de ajuste de curva para dados anteriores provavelmente ocorrerá sob otimização. Não só os resultados não terão sentido, mas a exploração de erros de interpolação de backtest e a dependência do corretor desempenharão um papel primordial.
2. Code sistemas simples. A complexidade é a mãe do ajuste de curva. Sempre que você dá uma estratégia de graus de liberdade suficientes, uma otimização produzirá resultados ajustados na curva. Quanto menor a complexidade e menos parâmetros disponíveis dentro de uma determinada estratégia, menos provável é que ela seja ajustada de curva, pois sistemas que não têm critérios complexos tendem a ser incapazes de & # 8220; ajustar & # 8221; aos dados se uma verdadeira ineficiência não estiver presente. Portanto, torna-se extremamente importante codificar simples & # 8220; elegante & # 8221; estratégias para evitar uma complexidade agregada que resultará em soluções ajustadas em curva.
3. Períodos de teste longos. Otimizações devem ser realizadas por longos períodos de tempo, idealmente 9-11 anos de dados devem ser utilizados para o processo, a fim de garantir que uma grande quantidade de condições de mercado estejam disponíveis. Se uma estratégia simples produz resultados rentáveis ​​em um período de dez anos, a probabilidade de ajuste da curva é bastante reduzida, pois o sistema possui graus de liberdade limitados para ajustar artificialmente & # 8201; todas essas condições de mercado diferentes.
4. Mantenha seu sistema simétrico. Uma das primeiras idéias que os novos traders têm quando começam a analisar o desenvolvimento do sistema e os resultados da expectativa matemática é ter um critério separado para entrar e sair de negociações curtas e longas (por exemplo, usando um indicador cruzado em 20 para entradas longas, mas 15 para curtos). Embora seja verdade que, no passado, as tendências ascendentes e descendentes podem ter se desenvolvido de forma diferente nas moedas, isso não pode ser garantido para continuar no futuro, pois essas diferenças dependem de diferenciais de taxas de juros ou variáveis ​​macroeconômicas similares que inevitavelmente mudam através dos ciclos econômicos. A adição de critérios separados para longos e shorts aumenta automaticamente os graus de liberdade da estratégia e torna-o excessivamente propenso a soluções ajustadas em curva.
5. Períodos de teste fora da amostra. Uma prática muito comum no desenvolvimento do sistema é ter uma certa quantidade de dados históricos # 8220; fora de & # 8221; o conjunto de otimização & # 8211; geralmente um ou dois anos & # 8211; Â para realizar um teste simulado & forward; & # 8221; (comumente chamado de teste out-sample) para ver como a estratégia se comportou sob novas condições de mercado, sem ser capaz de se ajustar artificialmente a "& # 8221; para esses dados. Certamente, o teste fora da amostra não precisa ser lucrativo (já que todas as estratégias têm períodos de lucro e de redução), mas deve pelo menos manter correlação com as profundidades de drawdown e períodos lucrativos vistos no passado. Quando um teste de amostra externa mostra uma perda superior ao dobro do máximo de drenagem máximo, então a estratégia é certamente ajustada à curva.
6. Evite erros de otimização comuns. Há muitas pequenas coisas diferentes que você pode fazer de errado ao realizar otimizações, como usar procedimentos altamente correlacionados, testes de grade fina ou ignorar o & # 8220; arredors & # 8221; dos seus resultados pretendidos. Uma parte muito importante de evitar o ajuste de curvas é evitar esses erros comuns de realizar otimizações grosseiras e eficientes que não predispõem seu sistema a soluções adaptadas à curva. (leia este post para aprender sobre cinco erros muito comuns que as pessoas enfrentam ao realizar otimizações).
Seguindo as cinco dicas acima, você terá um nível muito maior de desenvolvimento de estratégias que não são adaptadas à curva. Mesmo que não haja qualquer garantia de que uma estratégia não seja ajustada aos dados passados ​​quando as otimizações são feitas, é óbvio que as dicas de desenvolvimento e teste do sistema sugeridas acima reduzem a possibilidade de isso acontecer por uma grande quantidade. Ao desenvolver estratégias simétricas simples com graus limitados de liberdade e simulações confiáveis ​​durante longos períodos de tempo com um ou dois anos de testes fora de amostra, a possibilidade de encontrar uma solução ajustada na curva será extremamente improvável.
Se você gostaria de aprender mais sobre otimização de sistemas e como você também pode desenvolver suas próprias estratégias lucrativas com base em conceitos de negociação, por favor considere juntar-se a Asirikuy, um site repleto de vídeos educacionais, sistemas de negociação, desenvolvimento e um som honesto e transparente. abordagem de negociação automatizada em geral. Espero que tenha gostado deste artigo ! : o)
3 respostas para "Otimização sem ajuste de curva: seis dicas para evitar a super otimização" # 8221;
Apenas pergunte qual do atual sistema Asirikuy se encaixa nessas estratégias?
Obrigado pelo seu comentário: o) Todos os sistemas Asirikuy foram desenvolvidos com os critérios acima em mente. Todos eles têm simulações confiáveis, testes de longo prazo, otimizações grosseiras e cerca de 1 ano de testes fora da amostra. Espero ter respondido a sua pergunta!
Posso usar os dados de outro par de moedas para um teste externo?

Sistema de negociação de otimização
NOTA: Este é um tópico bastante avançado. Por favor, leia os tutoriais anteriores da AFL primeiro.
A idéia por trás de uma otimização é simples. Primeiro você tem que ter um sistema de negociação, isso pode ser um cruzamento de média móvel simples, por exemplo. Em quase todos os sistemas, existem alguns parâmetros (como período de média) que decidem como o sistema se comporta (ou seja, é adequado para longo prazo ou curto prazo, como é reagir em estoques altamente voláteis, etc.). A otimização é o processo de encontrar valores ótimos desses parâmetros (dando o maior lucro do sistema) para um determinado símbolo (ou um portfólio de símbolos). AmiBroker é um dos poucos programas que permitem otimizar seu sistema em vários símbolos ao mesmo tempo.
Para otimizar seu sistema, você deve definir de um até dez parâmetros para serem otimizados. Você decide o que é um valor mínimo e máximo permitido do parâmetro e em que incrementos este valor deve ser atualizado. O AmiBroker então executa vários testes de retorno do sistema usando TODAS as possíveis combinações de valores de parâmetros. Quando este processo está concluído, o AmiBroker exibe a lista de resultados ordenados pelo lucro líquido. Você é capaz de ver os valores dos parâmetros de otimização que dão o melhor resultado.
Escrevendo fórmula AFL.
A otimização no testador traseiro é suportada por uma nova função chamada otimização. A sintaxe desta função é a seguinte:
variável - é uma variável AFL normal que recebe o valor retornado pela função otimizar.
Com os modos normal de backtesting, digitalização, exploração e comentário, a função de otimização retorna o valor padrão, portanto, a chamada de função acima é equivalente a: variável = padrão;
No modo de otimização, a função otimizar retorna valores sucessivos de min a max (inclusive) com stepping stepping.
& quot; Descrição " é uma string que é usada para identificar a variável de otimização e é exibida como um nome de coluna na lista de resultados de otimização.
O padrão é um valor padrão que otimiza a função retorna na exploração, no indicador, nos comentários, na varredura e nos modos normais de teste de volta.
min é um valor mínimo da variável que está sendo otimizada.
max é um valor máximo da variável otimizada.
step é um intervalo usado para aumentar o valor de min para max.
AmiBroker suporta até 64 chamadas para otimizar a função (portanto, até 64 variáveis ​​de otimização), note que, se você estiver usando uma otimização exaustiva, é realmente uma boa idéia limitar o número de variáveis ​​de otimização a apenas alguns. Cada chamada para otimizar ciclos de otimização de geração (max - min) / etapa e várias chamadas para otimizar multiplicam o número de execuções necessárias. Por exemplo, a otimização de dois parâmetros usando 10 etapas exigirá 10 * 10 = 100 loops de otimização. Chamar otimizar a função apenas UMA VEZ por variável no início da sua fórmula à medida que cada chamada gera novos laços de otimização A otimização de vários símbolos é totalmente suportada pelo AmiBroker O espaço de busca máximo é de 2 64 (10 19 = 10,000,000,000,000,000,000) de combinações.
1. Otimização de variável única:
sigavg = Optimize ("Signal average", 9, 2, 20, 1);
Sell ​​= Cross (Sinal (12, 26, sigavg), MACD (12, 26));
2. Otimização de duas variáveis ​​(adequada para gráficos 3D)
per = Optimize ("por", 2, 5, 50, 1);
Nível = Optimize ("level", 2, 2, 150, 4);
Venda = Cruz (Nível, CCI (por));
3. Múltipla (3) otimização de variáveis:
mfast = Optimize ("MACD Fast", 12, 8, 16, 1);
mslow = Optimize ("MACD Slow", 26, 17, 30, 1);
sigavg = Otimizar ("Média do sinal", 9, 2, 20, 1);
Buy = Cross (MACD (mfast, mslow), Signal (mfast, mslow, sigavg));
Sell ​​= Cross (Signal (mfast, mslow, sigavg), MACD (mfast, mslow));
Depois de inserir a fórmula, basta clicar no botão Otimizar em & quot; Análise automática & quot; janela. O AmiBroker começará a testar todas as combinações possíveis de variáveis ​​de otimização e reportará os resultados na lista. Após a otimização ser feita, a lista de resultados é apresentada classificada pelo lucro líquido%. Como você pode classificar os resultados por qualquer coluna na lista de resultados, é fácil obter os melhores valores de parâmetros para o menor desconto, o menor número de negócios, o maior fator de lucro, a menor exposição ao mercado e o maior retorno anual ajustado pelo risco. As últimas colunas da lista de resultados apresentam os valores das variáveis ​​de otimização para teste dado.
Quando você decide qual combinação de parâmetros atende às suas necessidades, o melhor que você precisa fazer é substituir os valores padrão em otimizar as chamadas de função com os valores ótimos. Na fase atual você precisa digitá-los manualmente na janela de edição da fórmula (o segundo parâmetro da função otimizar a chamada).
Exibição de gráficos de otimização animada 3D.
Para exibir o gráfico de otimização 3D, você precisa primeiro executar a otimização de duas variáveis. A otimização de duas variáveis ​​precisa de uma fórmula que tenha duas chamadas de função Optimize (). Uma fórmula de otimização de duas variáveis ​​de exemplo é semelhante a esta:
per = Optimize ("per", 2, 5, 50, 1);
Nível = Optimize ("level", 2, 2, 150, 4);
Venda = Cruz (Nível, CCI (por));
Depois de inserir a fórmula, você precisa clicar em & quot; Otimizar & quot; botão.
Uma vez que a otimização esteja completa, você deve clicar na seta suspensa no botão Otimizar e escolher Exibir gráfico de otimização 3D. Em poucos segundos, um gráfico de superfície tridimensional colorido aparecerá em uma janela do visualizador de gráficos 3D. Um exemplo de gráfico 3D gerado usando a fórmula acima é mostrado abaixo.
Por padrão, os gráficos 3D exibem valores de lucro líquido contra variáveis ​​de otimização. No entanto, você pode plotar gráfico de superfície 3D para qualquer coluna na tabela de resultados de otimização. Basta clicar no cabeçalho da coluna para ordená-lo (uma seta azul aparecerá indicando que os resultados de otimização são classificados pela coluna selecionada) e, em seguida, escolha Exibir gráfico de otimização 3D novamente.
Visualizando como os parâmetros do seu sistema afetam o desempenho da negociação, você pode decidir mais facilmente quais valores de parâmetro produzem & quot; fragile & quot; e que produzem "robusto" performance do sistema. Configurações robustas são regiões no gráfico 3D que mostram mudanças graduais em vez de abruptas no gráfico de superfície. Gráficos de otimização 3D são ótimas ferramentas para evitar ajustes de curva. O ajuste de curva (ou otimização excessiva) ocorre quando o sistema é mais complexo do que o necessário, e toda essa complexidade foi focada em condições de mercado que podem nunca mais acontecer. Mudanças radicais (ou espigões) nos gráficos de otimização 3D mostram claramente áreas de otimização excessiva. Você deve escolher uma região de parâmetros que produza um amplo e amplo patamar no gráfico 3D para o seu comércio de vida real. Os conjuntos de parâmetros que produzem picos de lucro não funcionarão de forma confiável na negociação real.
Controles do visualizador de gráficos 3D.
O visualizador de gráficos 3D da AmiBroker oferece capacidades de visualização totais com rotação e animação completas de gráficos. Agora você pode ver os resultados do sistema de todas as perspectivas imagináveis. Você pode controlar a posição e outros parâmetros do gráfico usando o mouse, a barra de ferramentas e os atalhos do teclado, o que você achar mais fácil para você. Abaixo, você encontrará a lista.
- para girar - mantenha pressionado o botão esquerdo do mouse e mova nas direções X / Y.
- Zoom-in, zoom-out - mantenha pressionado o botão DIREITO do mouse e mova-se nas direções X / Y.
- para mover (traduzir) - mantenha pressionado o botão esquerdo do mouse e a tecla CTRL e mova-se nas direções X / Y.
- para animar - mantenha pressionado o botão esquerdo do mouse, arraste rapidamente e solte o botão enquanto arrasta.
ESPAÇO - animar (rotação automática)
CHAVE DE FLECHA ESQUERDA - rotate vert. esquerda.
DIREITA seta - girar vert. certo.
CHAVE DE SETA PARA CIMA - gire horiz. acima.
CHAVE DE SETA PARA BAIXO - gire horiz. baixa.
NUMPAD + (PLUS) - Próximo (zoom in)
NUMPAD - (MINUS) - Far (zoom out)
NUMPAD 4 - mover para a esquerda.
NUMPAD 6 - mover para a direita.
NUMPAD 8 - suba.
NUMPAD 2 - descer.
PAGE UP - nível da água para cima.
PAGE DOWN - nível da água para baixo.
Otimização inteligente (não exaustiva).
A AmiBroker agora oferece otimização inteligente (não exaustiva) além da busca regular e exaustiva. A pesquisa não exaustiva é útil se o número de todas as combinações de parâmetros de um determinado sistema de negociação for simplesmente muito grande para ser viável para uma busca exaustiva.
A busca exaustiva é perfeitamente adequada, desde que seja razoável usá-la. Digamos que você tenha 2 parâmetros cada um variando de 1 a 100 (passo 1).
Isso é 10000 combinações - perfeitamente OK para pesquisa exaustiva. Agora, com 3 parâmetros, você obteve 1 milhão de combinações - ainda está correto para pesquisa exaustiva (mas pode ser lenta). Com 4 parâmetros você tem 100 milhões de combinações e com 5 parâmetros (1..100) você tem 10 bilhões de combinações. Nesse caso, seria muito demorado verificá-los, e esta é a área onde os métodos de pesquisa inteligente não exaustivos podem resolver o problema que não são solucionáveis ​​em um tempo razoável usando uma busca exaustiva.
Aqui está absolutamente a instrução SIMPLES sobre como usar um novo otimizador não exaustivo (neste caso CMA-ES).
1. Abra sua fórmula no editor de fórmulas.
2. Adicione esta única linha no topo da sua fórmula:
OptimizerSetEngine (& quot; cmae & quot;); // você também pode usar & quot; spso & quot; ou "trib" Aqui.
3. (Opcional) Selecione seu alvo de otimização em Análise automática, Configurações, & Walker Forward & quot; guia, campo de destino de otimização. Se você ignorar este passo, ele irá otimizar o CAR / MDD (retorno anual composto dividido pelo máximo% de redução).
Agora, se você executar a otimização usando esta fórmula, usará o novo otimizador CMA-ES evolutivo (não exaustivo).
Como funciona ?
A otimização é o processo de encontrar o mínimo (ou o máximo) de função dada. Qualquer sistema comercial pode ser considerado como uma função de certo número de argumentos. As entradas são parâmetros e dados de cotação, a saída é o seu objetivo de otimização.
(diga CAR / MDD). E você está procurando o máximo de função dada.
Alguns algoritmos de otimização inteligente são baseados na natureza (comportamento animal) - algoritmo PSO, ou processo biológico - Algoritmos genéticos,
e alguns são baseados em conceitos matemáticos derivados de humanos - CMA-ES.
Esses algoritmos são usados ​​em muitas áreas diferentes, incluindo finanças. Insira "PSO finance & quot; ou "CMA-ES finance" no Google e você encontrará muitas informações.
Métodos não exaustivos (ou "inteligentes") encontrarão otimizar global ou local. O objetivo é, obviamente, encontrar um global, mas se houver um único pico acentuado.
As combinações de parâmetros fora de zilhões, métodos não-exaustivos podem não conseguir esse único pico, mas assumi-lo de acordo com a perspectiva do comerciante, encontrar único pico afiado é inútil para negociação, porque esse resultado seria instável (muito frágil) e não replicável na negociação real. No processo de otimização, estamos procurando por regiões de platô com parâmetros estáveis ​​e esta é a área onde brilham métodos inteligentes.
Quanto ao algoritmo usado por pesquisa não-exaustiva, ele se destaca da seguinte maneira:
a) o otimizador gera alguma (inicialmente aleatória) população inicial de conjuntos de parâmetros.
b) o backtest é realizado pela AmiBroker para cada conjunto de parâmetros da população.
c) os resultados dos backtests são avaliados de acordo com a lógica do algoritmo.
e nova população é gerada com base na evolução dos resultados,
d) se o novo melhor for encontrado - salve-o e vá para a etapa b) até que os critérios de parada sejam atendidos.
Os critérios de parada de exemplo podem incluir:
a) atingindo as iterações máximas especificadas.
b) pare se o intervalo dos melhores valores objetivos das últimas X gerações for zero.
c) pare de adicionar o vetor de desvio padrão 0,1 em qualquer direção do eixo principal, sem alterar o valor do objetivo.
Para usar qualquer otimizador inteligente (não exaustivo) no AmiBroker, você precisa especificar o mecanismo otimizador que deseja usar na fórmula AFL usando a função OptimizerSetEngine.
A função seleciona o mecanismo de otimização externa definido pelo nome. O AmiBroker atualmente é fornecido com 3 mecanismos: Standard Particle Swarm Optimizer ("spso"), Tribes ("trib") e CMA-ES ("cmae") - os nomes entre chaves devem ser usados ​​em chamadas OptimizerSetEngine.
Além de selecionar o mecanismo do otimizador, você pode querer definir alguns dos seus parâmetros internos. Para isso use a função OptimizerSetOption.
Função OptimizerSetOption (& quot; nome & quot ;, valor).
A função define parâmetros adicionais para o mecanismo de otimização externo. Os parâmetros são dependentes do mecanismo.
Todos os três otimizadores fornecidos com AmiBroker (SPSO, Trib, CMAE) suportam dois parâmetros: & quot; Executa & quot; (número de execuções) e "MaxEval" (avaliações máximas (testes) por execução única). O comportamento de cada parâmetro é dependente do motor, então os mesmos valores podem e, geralmente, produzir resultados diferentes com diferentes motores usados.
A diferença entre Runs e MaxEval é a seguinte. A avaliação (ou teste) é um teste simples (ou avaliação do valor da função objetivo).
RUN é uma execução completa do algoritmo (encontrando o melhor valor) - geralmente envolvendo muitos testes (avaliações).
Cada execução simplesmente restaura todo o processo de otimização desde o novo começo (nova população aleatória inicial).
Portanto, cada execução pode levar a encontrar diferentes locais max / min (se não encontrar um global). Então, o parâmetro Runs define o número de execuções subseqüentes do algoritmo. MaxEval é o número máximo de avaliações (bactests) em qualquer execução única.
Se o problema for relativamente simples e 1000 testes forem suficientes para encontrar o máximo global, é mais provável que 5x1000 encontre o máximo global.
porque há menos chances de ficar preso no máximo local, pois as execuções subsequentes começarão a partir de uma população aleatória inicial diferente.
A escolha de valores de parâmetros pode ser complicada. Depende do problema em teste, sua complexidade, etc, etc.
Qualquer método estocástico não exaustivo não lhe dá garantia de encontrar max / min global, independentemente do número de testes se for menor.
do que exaustivo. A resposta mais fácil é: especificar como grande número de testes como é razoável para você em termos de tempo necessário para concluir.
Outro conselho simples é multiplicar por 10 o número de testes com a adição de nova dimensão. Isso pode levar a um número superestimado.
de testes necessários, mas é bastante seguro. Os motores enviados são projetados para ser simples de usar, portanto, "razoável" Os valores padrão / automático são usados, de modo que a otimização pode geralmente ser executada sem especificar nada (aceitando padrões).
É importante entender que todos os métodos inteligentes de otimização funcionam melhor em espaços de parâmetros contínuos e funções objetivas relativamente lisas. Se o espaço dos parâmetros é discreto, os algoritmos evolutivos podem ter problemas para encontrar o melhor valor. Isso é especialmente verdadeiro para os parâmetros binários (on / off) - eles não são adequados para qualquer método de busca que usa gradiente de mudança de função objetiva (como a maioria dos métodos inteligentes faz). Se o seu sistema de negociação contiver muitos parâmetros binários, você não deve usar o otimizador inteligente diretamente sobre eles. Em vez disso, tente otimizar apenas os parâmetros contínuos usando o otimizador inteligente e alterne os parâmetros binários manualmente ou via script externo.
SPSO - Otimizador Padrão de Enxame de Partículas.
O otimizador padrão de enxertia de partículas é baseado no código SPSO2007 que é suposto produzir bons resultados desde que os parâmetros corretos (ou seja, Runs, MaxEval) sejam fornecidos para um problema específico.
Escolher opções corretas para o otimizador de PSO pode ser complicado, portanto, os resultados podem variar significativamente de caso para caso.
SPSO. dll vem com códigos de fonte completos dentro de "ADK & quot; subpasta.
(encontrando o valor ideal em 1000 testes dentro do espaço de busca de 10000 combinações)
Buy = Cross (MACD (fa, sl), 0);
Sell ​​= Cross (0, MACD (fa, sl));
TRIBES - Otimizador de enxertia de partículas sem parâmetros adaptáveis.
Tribes é uma versão adaptável e sem parâmetros do otimizador não-exaustivo PSO (otimização de enxame de partículas). Para o conhecimento científico, veja:
Em teoria, ele deve ter um desempenho melhor do que o PSO normal, pois pode ajustar automaticamente o tamanho dos enxames e a estratégia do algoritmo para o problema a ser resolvido.
A prática mostra que seu desempenho é bastante semelhante ao PSO.
O plugin Tribes. DLL implementa & quot; Tribos-D & quot; (ou seja, sem adição). Baseado em clerc. maurice. free. fr/pso/Tribes/TRIBES-D. zip por Maurice Clerc. Códigos fonte originais utilizados com permissão do autor.
Tribes. DLL vem com o código fonte completo (dentro da pasta "ADK")
"MaxEval" - número máximo de avaliações (backtests) por execução (padrão = 1000).
O padrão 1000 é bom para 2 ou máximo 3 dimensões.
& quot; Executa & quot; - número de execuções (reinicia). (padrão = 5)
Você pode deixar o número de execuções no valor padrão de 5.
Por padrão, o número de execuções (ou reinicia) é definido como 5.
Para usar o otimizador Tribes, você só precisa adicionar uma linha ao seu código:
OptimizerSetOption (& quot; MaxEval & quot; 5000); // 5000 avaliações máx.
CMA-ES - Otimizador de Covariance Matrix Adaptation Evolutionary Strategy.
O CMA-ES (Estratégia Evolutiva de Adaptação de Matriz de Covariância) é um otimizador avançado não exaustivo.
Para o conhecimento científico, veja:
De acordo com benchmarks científicos, supera as nove outras estratégias evolutivas mais populares (como PSO, evolução genética e diferencial).
O plugin CMAE. DLL implementa & quot; Global & quot; variante de pesquisa com vários reinícios com o aumento do tamanho da população.
CMAE. DLL vem com código fonte completo (dentro da pasta "ADK")
Por padrão, o número de execuções (ou reinicia) é definido como 5.
É aconselhável deixar o número padrão de reinicializações.
Você pode alterá-lo usando OptimizerSetOption (chamada "Runs", N), onde N deve estar no intervalo 1..10.
Especificar mais de 10 execuções não é recomendado, embora possivel.
Observe que cada execução usa TWICE o tamanho da população da corrida anterior para que ela cresça exponencialmente.
Portanto, com 10 execuções, você acaba com a população 2 ^ 10 maior (1024 vezes) do que a primeira execução.
Existe outro parâmetro "MaxEval". O valor padrão é ZERO, o que significa que o plugin calculará automaticamente o MaxEval necessário. É aconselhável NÃO definir o MaxEval sozinho, pois o padrão funciona bem.
O algoritmo é inteligente o suficiente para minimizar o número de avaliações necessárias e converge muito rápido para o ponto de solução, muitas vezes encontra soluções mais rápidas do que outras estratégias.
É normal que o plugin ignore algumas etapas de avaliação, se detectar que a solução foi encontrada, portanto, você não deve se surpreender que a barra de progresso de otimização possa se mover muito rápido em alguns pontos. O plug-in também tem capacidade de aumentar o número de etapas sobre o valor estimado inicialmente, se necessário, para encontrar a solução. Devido à sua natureza adaptativa, o "tempo estimado deixado" e / ou "número de etapas" exibido pela caixa de diálogo de progresso é apenas "melhor adivinhação no tempo" e pode variar durante o curso de otimização.
Para usar o otimizador CMA-ES, você só precisa adicionar uma linha ao seu código:
Isso executará a otimização com configurações padrão que são boas para a maioria dos casos.
Deve-se notar, como é o caso com muitos algoritmos de pesquisa de espaço contínuo, que diminui o "passo" O parâmetro em chamadas do funciton Optimize () não afeta significativamente os tempos de otimização. O único que importa é o problema "dimensão", isto é, o número de parâmetros diferentes (número de otimização de chamadas de função). O número de & quot; etapas & quot; por parâmetro pode ser definido sem afetar o tempo de otimização, então use a melhor resolução que você deseja. Em teoria, o algoritmo deve ser capaz de encontrar solução em no máximo 900 * (N + 3) * (N + 3) backtests em que "N" é a dimensão. Na prática, ele converge muito mais rápido. Por exemplo, a solução em espaço de parâmetros dimensionais 3 (N = 3) (digamos 100 * 100 * 100 = 1 milhão de etapas exaustivas) pode ser encontrada em apenas 500 a 900 passos CMA-ES.
Otimização individual multi-threaded.
A partir do AmiBroker 5.70, além do multithreading de vários símbolos, você pode executar a otimização de símbolo único multithread. Para acessar essa funcionalidade, clique na seta suspensa ao lado de & quot; Otimizar & quot; botão na janela Nova Análise e selecione & quot; Individual Optimize & quot ;.
& quot; Otimização individual & quot; usará todos os núcleos de processador disponíveis para realizar a otimização de um único símbolo, tornando-o muito mais rápido que a otimização regular.
1. O backtester personalizado NÃO é suportado (ainda)
2. Os mecanismos de otimização inteligentes NÃO são suportados - somente a otimização EXAUSTORA funciona.
Eventualmente, podemos nos livrar da limitação (1) - quando o AmiBroker é alterado, então o backtester personalizado não usa mais OLE. Mas (2) provavelmente está aqui para ficar por muito tempo.

8 Regras para evitar o excesso de otimização.
Aqueles de nós que empregam sistemas de negociação baseados em regras mecânicas, bem como aqueles que "trocam" seus sistemas baseados em regras, estão à procura de uma qualidade muito importante - uma estratégia que também funciona, ou quase também, na negociação ao vivo como os resultados históricos dos testes de volta indicam.
# 1 Corte o número de "e" declarações.
Use apenas uma ou duas instruções "e" por regra de entrada ou saída. Por exemplo, se houver pré-condição 1 e Momentum & gt; limiar de sinal, em seguida, comprar.
# 2 Use um princípio de entrada única.
Podemos ter várias regras de entrada, mas todos eles usam o mesmo princípio de entrada. Por exemplo, a regra 1 pode ser se a pré-condição 1 existe e momentum & gt; limiar de sinal, em seguida, comprar. A regra # 2 pode ser se Bollinger Band® Difference & lt; 5 pontos e momentum & gt; limiar de sinal, em seguida, comprar. Ambas as regras usam exatamente o mesmo "momentum & gt; limiar de sinal ", mas cada um fornece diferentes circunstâncias pelas quais pode ser seguido.
# 3 Aplicar parâmetros robustos de entrada.
Qualquer parâmetro de entrada usado em uma estratégia de negociação é um parâmetro otimizado. Estamos à procura de uma ampla gama de parâmetros de entrada que são satisfatórios. Nós também procuramos uma queda gradual em cada lado do valor ótimo. As estratégias que exibem essa característica são referidas como "robustas".
Regras # 4 são portáteis entre mercados.
Portabilidade significa que os mesmos princípios podem ser aplicados com sucesso em pelo menos alguns mercados não relacionados. A portabilidade das regras de entrada / saída entre os mercados reforça que as regras no trabalho não são ajustáveis ​​em curva a um determinado conjunto de dados. A portabilidade absoluta e idêntica não é necessária, pois também é uma característica dos mercados que eles têm suas próprias personalidades.
Regras de saída # 5 seguem os mesmos requisitos de design como regras de entrada.
Todas as avaliações aplicáveis ​​às inscrições são igualmente aplicáveis ​​às saídas. Os testes iniciais para qualquer entrada baseada em regras devem começar com saídas muito simples, como perda de dólar, e objetivos de lucro em dólares ou paradas de volatilidade e objetivos. Se alguma abordagem em particular não se mostrar promissora com saídas simples, siga em frente. Torturar os dados com muitas saídas diferentes para obtê-lo para "trabalhar" provavelmente irá levar a uma otimização excessiva e, portanto, um desapontamento na negociação ao vivo.
# 6 analise separadamente os resultados do comércio de curto e longo prazo.
Always look at a “Long Only” trades and “Short Only” trades in the evaluation of a trading system. This is how one can see how the system performs within different types of market trends.
#7 Do Not Optimize Entries And Exits Separately.
While it is sometimes true that markets sometimes behave differently on the way up than they do on the way down, and one could definitely optimize to get better historical results on this basis, this approach is step closer to over-optimization. Since the goal is near zero trading strategy degradation post development, always use mirror image signals for either side of the market. As alluded to above, be cautious of “long only” or “short only” trading systems, where the appearance of success may be largely dependent on a very long term secular trend, more than the system itself.
#8 Review the Length of Track Record Several Ways.
One very overlooked metric --- perhaps the single most overlooked metric in system evaluation — is how often a trading system has a position in the market long or short.
Over-Optimization is the downfall of rule-based trading strategies and it is not easy to avoid. By following the above guide posts though, one can eliminate much potential disappointment. No doubt these guide posts make it more difficult to develop a decent looking historical test and that is precisely what they are intended to do. If one can follow these guide posts then any trading system will have a much better chance of survival when taking the strategy to live trading.

8 Signs That Indicate You're Over-Optimizing Your Blog.
You may not have anticipated over-optimization to ever be a problem, but too many SEO efforts can actually negatively impact your website. Over-optimization basically involves making too many SEO improvements (especially all at one time), which leads Google to question why your website has so many things going on at once.
It isn’t natural, and it will create a red flag for Google bots and for those visiting your website. Thinking about SEO is great, but you have to make sure you’re still keeping your website natural and relevant. Fortunately, it’s easy to avoid over-optimization if you know some of the signs to look for in an over-optimized site.
Top 8 Signs You’re Over-Optimizing Your Blog.
Below are some of the top things that Google looks for when determining if a website is over-optimized for SEO and therefore not for readers. If you’re doing any of the following, it’s important to revert back to more natural practices ASAP.
1. Non-relevant keywords.
You should never try to rank for keywords that are not relevant to your article. Although a topic may be highly searched, this is not going to help your conversion rate (because once people view your site, they are immediately going to notice that your content is not what they are looking for).
Google takes all of the keywords that you use across the entire domain into consideration when it indexes your site. Therefore, too much content or keywords that are unrelated will detract from the overall strength of the site in the SERPs. You absolutely need to focus on your niche that way you are ranking for the correct topic.
If you have never built a website from the ground up, you may not realize that there are hundreds of different link types that can be built. Unfortunately, many times people focus too heavily on one particular link type over another and this typically leads to an unnatural looking link profile.
You want your website to look as natural as possible, which can happen if you attract a wide range of link types from many different types of sites. A few of these link types include social network links, in-content links form other websites in your industry and links earned from other websites across the web. There are even several different kinds of internal links, which you can learn more about here.
Some webmasters choose to hyper-optimize URLs instead of creating a healthy and balanced brand name. While choosing a domain with a ton of keywords sounds smart, it is actually placing you on high alert for an over-optimization.
Do not create a URL simply for its keyword value because your brand name is too important to be compromised by making it a keyword. The best thing to do is to have your brand name in your URL.
4. Keyword-rich anchors for internal links.
Internal linking is good; however, internal linking by using keyword-rich anchor text is bad. Anchors that use the exact URL of the destination or anchors that use keywords are a red flag in Google’s eyes. The occasional anchor that matches the URL exactly may contribute to positive SEO, but if you start doing this too much, you’re setting yourself up for penalization.
Ultimately, using keyword-rich anchors begins to ruin your link profile because again, like all of the other items on this list, they are not natural. Your link profile is the most important component of your SEO, so don’t make the easy mistake of keyword rich anchor text.
This practices used to be acceptable, but Google cracked down on anchor text a few years ago and made it clear that keyword rich anchor text is not natural. You can read this article to learn more about Google’s stance on the issue.
5. Pointing all internal or external links to top-level navigation pages.
A strong link profile has links pointing to deep internal pages as well as the home page. A healthy ratio is 1:1, or 50% of the links pointing to deep internal links. Over-optimization occurs when webmasters themselves create a ton of links to their homepage or to main navigation pages like “Contact Us,” “About Us” or “Our Services.”
You want to create internal links, but you don’t need to point the links to these pages. You should actually aim to strengthen your link profile by pointing to deep internal links.
Building too many backlinks too quickly looks suspicious to the search engines, so, slow down! It is far more important to build quality links at a slower rate until your site overcomes Google’s trust barrier. Most experts put the maximum number of links that should be built in a day at no more than 30-100, depending on your site’s industry, audience and traffic levels (and I would recommend even less).
The best thing to do is slow down and re-focus on building quality links over quantity.
Website footers are another place where over-optimization occurs. Google devalues footer links and, because of their position, they receive minimal crawler recognition. When you design your footer, do so with the user in mind. Your footer isn’t a sitemap or a place for putting key words. Rather, it may just simply be used as a nice closure to a page – a simple, but navigable spot at the end of a webpage that signals the end.
This is an especially big problem with B2B companies, which you can learn more about here.
I’ve saved the best and most commonly made error for last. When you are creating articles for your blog, you need to be very careful of over-optimization. Do not “write to keywords or bots.” You should do your best to maintain a natural voice, and the only way to rank well in the SERPs is to build content around strict keywords. Thus, write on topics that involve your niche, but do not go out of your way to write specifically to the keyword.
It is true that occasionally this kind of content wins and ranks highly for the keywords it targets. However, before you run out and try creating your own over-optimized keyword-filled content, remember that Google’s job is to provide the best possible search results to its users and that good quality content is always going to win out in that consideration in the long run. So, be sure to write your content to appeal to your visitors and not just the search engines.
In the end Google bots aren’t gaining anything from your content, your visitors are. If you want people to be returning to your site, and to have a high conversion rate, you need to be pleasing your audience with your content.
O Takeaway.
As you can see in this article, there are a lot of ways that you can “over-optimize” your SEO. Over-optimization ultimately happens when you focus far too much on technical SEO. While you want to do your best to be mindful of things like keywords, sometimes you can over do it. If you are focusing too much on the technical details of SEO, you can easily lose sight of the bigger picture. Your primary goal should be to be generating the best possible content, and be appealing to your visitors as well as Google search engine rankings. If you keep this goal in mind, you are going to have more natural looking pages, with longer-lasting, more productive SEO in the future.
Do you have experience with over optimizing your site, and have you learned things to avoid? Let us know your story and your thoughts in the comment section below.
Gosta dessa postagem? Follow us on Feedly and read more interesting posts:
Subscribe to the SEMrush Blog to get valuable content delivered right to your inbox.
You have successfully subscribed to our blog.
Publicações relacionadas.
The Key to the Future of SEO / AEO – Understanding and Credibility.
Most Important SEO Metrics to Consider in 2018.
Using SEO to Drum Up — and Automate Lead Generation.
Google News Digest: Confirmed Speed Update for Mobile Search, an Enhanced Google My Business and Ads Powered By Machine Learning.
Todos os direitos reservados.
De segunda a sexta.
De segunda a sexta.
2nd and 3rd floors, Neapoli, 3107, Limassol, Cyprus.

Комментариев нет:

Отправить комментарий