14 de outubro de 2011 Adicionado em 29 de fevereiro de 2012, pontos adicionais a serem considerados: 1) Este sistema depende da obtenção de preenchimentos precisos ao preço aberto. Para obter esses preenchimentos, é necessário um feed de dados de atraso mínimo de qualidade e habilidades avançadas de programação para implementar a automação comercial. 2) Ao definir o preço de entrada ligeiramente abaixo do preço de abertura (tentando melhorar o desempenho), o sistema falha miseravelmente. Mesmo melhorar o preço por apenas um centavo mata o sistema. Isso sugere que a maior parte do lucro vem de dias em que o preço de abertura foi igual ao Baixo diário, ou seja, o preço subiu do Aberto e nunca caiu abaixo dele. Isso, é claro, é óbvio. Para confirmar isso, adicionei esta condição de teste (olha para frente) para excluir dias em que o Open Low: Compre Compre E NÃO O L Isso mata o sistema e prova que a maior parte do lucro vem dos dias em que OL. Para confirmar ainda isso, adicionei a condição oposta: Compre Compre E O L Isso dá lucros quase infinitos e prova que a maioria dos lucros vem de dias em que o preço se move imediatamente a partir do Aberto e nunca retorna abaixo dele. Tentando melhorar o preço de entrada é um erro, você deve entrar em um Stop set 1-2 ct acima do preço Open, isso eliminará os dias em que o preço cai e nunca volta. Isso melhora significativamente o desempenho. 3) Este sistema comercializa os procedimentos de resposta do comerciante do joelho. Esses padrões geralmente são afogados pela negociação em grande volume, portanto, esse sistema funciona muito melhor quando você seleciona tickers com volumes entre 500,000 e 5,000,000 shareday. Isso também melhora significativamente o desempenho. Adicionando as duas características acima, resulta em uma curva de equidade muito melhor do que a mostrada abaixo. Desculpe, não tenho tempo para documentar o acima em maior detalhe. Boa sorte Esta publicação descreve uma idéia de negociação muito simples que só faz compras em uma determinada porcentagem abaixo de ontem8217s baixa, e sai no dia seguinte8217s aberto. Às vezes, pode ser difícil obter o preço aberto exato, a alta rentabilidade deste sistema torna um bom candidato para novas experiências. O sistema funciona bem com Watchlists como N100, SP500, SP1500, Russel 1000, etc. Desempenho no Russel 1000, com max. As posições abertas definidas para 1, para o período de 12102003 a 12102011, parecem assim: algumas das outras Watchlists dão menos exposição (lucros), mas isso vem com DDs mais baixos. As comissões foram definidas para 0,005 por ação. Nenhuma margem utilizada. Não é utilizado nenhum ranking explícito. Os tickers são negociados com base em seu tipo alfabético na Watchlist. Isso pode parecer estranho, mas é significativo: ao reverter esse tipo, o sistema falha. Isso pode significar que, devido a problemas de varredura em tempo real, os símbolos listados no topo deste tipo podem ser negociados de forma diferente dos listados na parte inferior. Preste atenção ao Liquidity (você pode querer trocar mais de uma posição) e slppage (A entrada é bastante livre de risco, mas as saídas podem ser problemáticas). Os DDs são significativos, mas podem ser compensados com entradas e saídas negociadas em tempo real melhoradas. Ao negociar automaticamente, pode ser possível colocar ordens de entrada OCA DAY-LMT para todos os sinais e apenas esperar e ver o que preencher. Uma vez que as saídas são mais difíceis do que as entradas, você pode querer explorar outras estratégias de saída. Os valores padrão dos parâmetros são escolhidos apenas de um chapéu. Quase certamente você pode otimizá-los ou ajustá-los dinamicamente para os tickers individuais. Eu testei este sistema em breve no modo Walk-Forward e os resultados foram lucrativos para todos os anos testados. Exceto pelo número de ações, os parâmetros negociados não são muito críticos. Over-optimizing doesn8217t parece um problema neste caso. O código abaixo é muito simples e requer poucas explicações. No entanto, é importante entender que este sistema goza de uma pequena vantagem ao negociar no Open e ao calcular o TrendMA usando o mesmo preço Open. Alguns podem interpretar isso como um vazamento futuro, no entanto, se você trocar este sistema em tempo real, não é. Muitas pessoas não percebem que, se você trocar no Open, você também pode usar esse preço em seus cálculos 8212 enquanto você os executa em tempo real 8212, é por isso que a AmiBroker e a tecnologia podem lhe dar uma vantagem. Se você Ref () voltar a TrendMA por uma barra, o sistema ainda é muito lucrativo, no entanto, os DDs aumentam para algumas Watchlists. Se você usa investimentos fixos, a diferença é insignificante. O procedimento de negociação seria começar a digitalizar antes do mercado abrir e remover os tickers com preços tão remotos que não são susceptíveis de atender ao OpenThresh. Assim, você pode começar a escanear 1000 símbolos, mas muito rapidamente o número escaneado diminui para apenas uma dúzia de tickers. Quando você se aproxima das 9:30 da manhã, sua verificação em tempo real será muito rápida e você poderá colocar sua ordem LMT muito perto do Open 8211, você pode até mesmo melhorar o preço Open. Embora algumas pessoas tenham olhado o código abaixo e não encontraram nada errado, os lucros parecem bastante elevados para um sistema tão simples. Informe os erros que você pode ver. Arquivado por Herman às 7:03 pm sob Ideias (Experimental) Comments Off no sistema EOD Gap-Trading Portfolio 1 de setembro de 2011 Esta idéia foi postada (161332) na lista principal do AmiBroker em 3 de julho de 2011. Foram numerosos comentários excelentes sobre A lista e se você estiver interessado em trabalhar neste sistema, você faz bem em lê-los todos antes de começar. Depois de publicar, encontrei várias postagens na web discutindo essa idéia de negociação, alguns alegaram estar negociando um sistema similar com um bom sucesso. Eu referi-me a este sistema um sistema 8220Gap Trading8221, mas isso pode ser um pouco de um nome incorreto, 8220Mean reversion8221 pode ser uma classificação melhor. Googling para isso irá obter muitos mais hits para sistemas semelhantes. Aqui estão alguns links: Parece ser uma idéia comercial bastante amplamente discutida e sugiro que você faça alguns Googling por conta própria para aprender o mais recente. Como um usuário Amibroker, você possui melhores ferramentas do que a maioria dos comerciantes e você tem uma chance melhor do que a maioria de apresentar uma variação que funcione. Talvez com um pouco menos lucros, e com uma quantidade significativa de código adicional 8212 ganhou, não seja um projeto 8220quicky8221 :-) Algumas pessoas comentaram que esse sistema não funcionará na negociação real, enquanto eles podem estar certos outros dizem que esquemas como este trabalho. Eu não terminei o sistema e posso reclamar saber se é negociável ou não. O sistema compra a uma determinada porcentagem abaixo de ontem8217s baixo, em uma ordem LMT, e sai no mesmo dia no fim. Arquivado por Herman às 6:53 pm sob Idéias (Experimental) Comentários Desligados em uma idéia de negociação EOD Gap de longo tempo Eu uso um pequeno critério de configuração para procurar minhas ações. MACD padrão, procuro barras de histograma 4 e 1 barra para sinal de compra (eu tenho o histograma definido como vermelho para baixo e azul para que eu possa ver claramente). MACD acima Zero Line RSI Acima de 30 Este sistema é base no comércio de tendências. Comprar no pullback quando o mercado continuar sua tendência ascendente. Para procurar MACD Configurações de tendências: 1) Insira a seguinte fórmula em um gráfico. 2) Execute uma verificação em AA usando SMACDTrend com Todos os símbolos. N últimos dias. N 1 e Sincronizar gráfico em selecionar como as configurações. Os estoques que atendam aos critérios serão reportados na lista de resultados. Nota: algumas variações das regras de configuração podem definir sinais que são bastante raros e, em bancos de dados pequenos, é possível que não haja configurações em nenhum dia determinado (portanto, nenhum estoque será relatado pela verificação). 3) Clique em qualquer símbolo no painel Resultados para visualizar o gráfico, para esse símbolo, em segundo plano. Nota: neste exemplo, foi utilizado um banco de dados de treinamento, que apenas contém dados até 5112007. Idéia comercial por protraderinc. Comentários e fórmulas pelo Bill 8211 WaveMechanic. Arquivado em brianz às 11:06 pm sob Ideas (Experimental) Comments Off no MACD Trend System 14 de outubro de 2007 Arquivado por brianz às 10:43 pm sob Ideas (Experimental) Comentários desativados no 15 Day Performers Trading System 19 de agosto de 2007 Isso é O primeiro de uma série de idéias comerciais KISS (mantê-lo simples, estúpido) para você brincar. Todas as ideias do sistema apresentadas aqui não são comprovadas, não finalizadas e podem conter erros. Eles são destinados a mostrar padrões possíveis para uma maior exploração. Como sempre, você é convidado a fazer comentários e ou adicionar suas próprias idéias a esta série. Eu prefiro sistemas em tempo real que comercializam rápido, são automatizados e estão desprovidos de indicadores tradicionais. De preferência, eles não devem ter parâmetros otimizáveis no entanto, nem sempre posso conseguir esse objetivo. Nem todos os sistemas serão tão simples que haverá alguns que utilizam funções de média simples ou de tipo HHVLLV. O primeiro sistema mostrado abaixo é uma cópia do sistema de demonstração que uso para desenvolver rotinas de Automação de Comércio em outros lugares neste site. Real-time Gap-Trading. Para ver como isso funciona, você deve fazer o Backtest em dados de 1 minuto com uma periodicidade no intervalo de 5-60 minutos. Sua primeira impressão pode ser que esses lucros são simplesmente devido a um mercado superior, no entanto, o fato de que os lucros Longos e Curtos são aproximadamente iguais sugerem que há mais. Como 98 de todos os negócios caem entre as 9:30 da manhã e as 10:30 da manhã, esse tipo de sistema é bom se você quiser apenas trocar pouco tempo a cada dia. Isso reduz o risco em relação à exposição ao mercado e dá mais tempo para aproveitar outras atividades. O teste posterior na lista de vigilância NASDAQ-100 (backtests individuais, 15 min. Periodicidade) dá os lucros mostrados abaixo para o período de 1 MAR 2007 até 17 de agosto de 2007. Os nomes dos tickers são omitidos para manter o gráfico compacto, o gráfico mostra simplesmente um lucro líquido Barra para cada ticker testado. A exposição média para este sistema é de cerca de 15, portanto, você pode negociar carteiras para aumentar os lucros e suavizar as curvas de equivalência. Seja advertido que, em sua forma bruta, as retiradas são inaceitáveis e que pode haver restrições de volume para muitos tickers. Uma vez que este sistema tem pouca exposição, pode ser um candidato para escaneamento de mercado e negociação de carteira classificada. RARs seria uma indicação dos lucros máximos absolutos que poderiam ser obtidos se conseguisse aumentar a exposição para cerca de 100. No entanto, o movimento de preços de diferentes tickers pode ser correlacionado, e os negócios de diferentes tickers podem se sobrepor. Se muitos tickers operarem ao mesmo tempo, seria difícil aumentar a exposição do sistema. Arquivado por Herman às 1:49 pm sob Ideas (Experimental) Comments Off no KISS-001: Intraday Gap Trading 17 de agosto de 2007 Você está convidado a enviar links para ideias do sistema em comentários para esta publicação. Gap Trading Strategies 8211 Stockcharts Intraday Moving Average Crossover com dimensionamento de posição 8211 NeoTicker Volatility-Breakout-Systems 8211 Traders Log Sistema de HighLow de dez dias 8211 StockWeblog Reversion Systems 8211 SeekingAlpha Systems Traders Club. Boletins do Clube Comerciante. 16 de julho de 2007 Esta categoria é reservada para sistemas reais de negociação de trabalho, ou seja, você negociou em algum momento ou consideraria negociar. Uma vez que os critérios para a comercialização variam de pessoa para pessoa, e como os sistemas podem funcionar ou não dependendo da forma como são negociados, será difícil rever as contribuições aqui. Com respeito ao que é publicado aqui, mantenha uma mente aberta e considere que o autor considera o sistema negociável. Você pode contribuir postando como autor (requer registro) ou em um comentário para esta publicação. Arquivado por Herman às 11:14 am sob Comentários Práticos (Rentáveis) Desativados na Introdução aos Sistemas de Negociação 8211 Prático É onde você pode compartilhar sistemas de negociação que são marginalmente lucrativos, ou seja, aqueles que não devem ser negociados como estão, mas que mostram potencial. Normalmente, este seria um sistema básico que é rentável, mas as experiências diminuem de 50. Tais sistemas podem ser melhorados pela adição de Stops, Targets, Gerenciamento de Dinheiro, técnicas de portfólio, etc. A realidade é que, embora você não tenha a experiência necessária para fazer Isso funciona, alguém pode. Quase todos nós encontramos ideias de sistemas de negociação em livros e revistas que codificamos na AFL para avaliação. Alguns desses sistemas podem ter ocorrido por muitos anos, enquanto outros são idéias novas. Depois de codificá-los, quase sempre, estamos desapontados e retiramos o sistema (trabalho). Em vez de jogar o seu trabalho, você está convidado a publicar o sistema aqui para dar a outro desenvolvedor a chance de corrigi-lo. Você é convidado a contribuir como autor (requer registro) ou em um comentário para esta publicação. Arquivado por Herman às 11:04 am sob Ideas (Experimental) Comentários desativados na Introdução aos Sistemas de Negociação 8211 Idéias Como otimizar o sistema de negociação NOTA: Este é um tópico bastante avançado. Leia primeiro os tutoriais AFL anteriores. A idéia por trás de uma otimização é simples. Primeiro, você precisa ter um sistema comercial, isso pode ser um simples cruzamento de média móvel, 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 ações 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 esse valor deve ser atualizado. AmiBroker então executa vários back testes o 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ê pode ver os valores dos parâmetros de otimização que dão o melhor resultado. Escrevendo a fórmula AFL A otimização no testador traseiro é suportada por uma nova função chamada otimizar. A sintaxe desta função é a seguinte: variável otimizar (quot Descrição quot, padrão. Min. Etapa máxima) variável - é uma variável AFL normal que recebe o valor retornado pela função de otimização. Com os modos normal de backtesting, digitalização, exploração e comentário, a função de otimização retorna o valor padrão, então a chamada de função acima é equivalente a: variável padrão Na função de otimização de modo otimizado retorna valores sucessivos de min para max (inclusive) com passo a passo. Quot Descriptionquot é 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, no comentário, na varredura e nos modos normais de teste de volta. Min é um valor mínimo da variável otimizada. O valor máximo é o valor máximo da variável otimizada. O passo é um intervalo usado para aumentar a 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 otimização exaustiva, então é uma boa idéia limitar o número de variáveis de otimização a apenas alguns. Cada chamada para otimizar gerar loops de otimização de etapas (max - min) e múltiplas chamadas para otimizar multiplicar o número de execuções necessárias. Por exemplo, otimizar dois parâmetros usando 10 etapas exigirá 1010 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) combinações 1. Otimização de variável única: sigavg Otimizar (Média do sinal. 9. 2. 20. 1) Cruz de compra (MACD (12. 26), Sinal (12. 26. sigavg)) Cruz de venda (Sinal (12. 26. sigavg), MACD (12. 26)) 2. Otimização de duas variáveis (adequado para gráficos em 3D) por otimizar (per. 2. 5. 50. 1) Nível de otimização (nível 2. 2. 150. 4) Compra Cruzada (CCI (per), Nível) Vender Cross (Level, CCI (per)) 3. Otimização variável múltipla (3): mfast Optimize (MACD Fast. 12. 8. 16. 1) mslow Optimize (MACD Lento 26. 17. 30. 1) sigavg Optimize (Signal Média 9. 2. 20. 1) Cross de Compra (MACD (mfast, mslow). Sinal (mfast, mslow, sigavg)) Sell Cross (Sinal (mfast, mslow, sigavg), MACD (mfast, mslow)) Depois de entrar O f Ormula basta clicar no botão Otimizar na janela QuotaAutomatic Analysisquot. 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 é feita, a lista de resultados é apresentada ordenada 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 retorno anual ajustado de maior 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 se adequa às suas necessidades, o melhor que você precisa fazer é substituir os valores padrão em otimizar as chamadas de função com os valores ideais. Na fase atual você precisa digitá-los manualmente na janela de edição da fórmula (o segundo parâmetro da função otimizada). Exibição de gráficos de otimização animada 3D Para exibir o gráfico de otimização em 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 2 chamadas de função otimizadas (). Um exemplo de fórmula de otimização de duas variáveis parece assim: por Otimizar (por 2. 2. 5. 50. 1) Nível de otimização (nível 2. 2. 150. 4) Cruzamento de Compra (CCI (per), Nível) Cruz de venda (Nível, CCI (per)) Depois de inserir a fórmula, você precisa clicar no botão quotOptimizequot. 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 alguns segundos, um gráfico de superfície tridimensional colorido aparecerá em uma janela de visualização de gráfico 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. Ao visualizar como os parâmetros dos seus sistemas afetam o desempenho da negociação, você pode decidir prontamente quais os valores dos parâmetros que produzem quotfragilequot e que produzem o desempenho do sistema quotrobustquot. 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. Os gráficos de otimização 3D são uma ótima ferramenta para evitar o ajuste de curvas. O ajuste de curva (ou sobre otimização) ocorre quando o sistema é mais complexo do que precisa ser, e toda essa complexidade foi focada em condições de mercado que talvez nunca mais aconteçam. Mudanças radicais (ou pontos) 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 do AmiBrokers oferece recursos de visualização total com rotação e animação completas de gráficos. Agora você pode visualizar os resultados do sistema de todas as perspectivas possí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 rodar - mantenha pressionado o botão esquerdo do mouse e mova-se nas direções XY - para Zoom-in, zoom-out - mantenha pressionado o botão RIGHT do mouse e mova-se nas direções XY - para Mover (traduzir) - mantenha pressionado o botão esquerdo do mouse e a tecla CTRL e Mova-se nas direções XY - para animar - mantenha pressionado o botão esquerdo do mouse, arraste rapidamente e solte o botão enquanto arrasta o ESPAÇO - anima (gire automaticamente) CHAVE ESQUERDA PARA ESQUERDA - gire o verde. Esquerda CHAVE DE SETA PARA A DIREITA - rotate vert. Direita PARA CIMA SETA CHAVE - gire horiz. PARA CIMA SETA PARA BAIXO - gire o horiz. BAIXO NUMPAD - (MINUS) - Longe (desligar) NUMPAD 4 - mover para a esquerda NUMPAD 6 - mover para a direita NUMPAD 8 - mover para cima NUMPAD 2 - mover para baixo PAGE UP - nível de á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 pesquisa exaustiva. A busca exaustiva é perfeitamente adequada, desde que seja razoável usá-la. Digamos que você tem 2 parâmetros cada um variando de 1 a 100 (passo 1). Isso é 10000 combinações - perfeitamente correto 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 em que os métodos de pesquisa inteligente não exaustivos podem resolver o problema que não é solucionável 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 (quotcmaequot) você também pode usar quotspsoquot ou quottribquot aqui 3. (Opcional) Selecione o seu objetivo de otimização em Análise automática, Configurações, QuotWalk - guia Forwardquot, campo de destino de otimização. Se você ignorar esta etapa, otimizará para CARMDD (retorno anual composto dividido pela redução máxima). 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 determinada função. 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 CARMDD). 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. Entre quotPSO financequot ou quotCMA-ES financequot no Google e você encontrará muitas informações. Métodos não exaustivos (ou quotsmartquot) encontrarão o melhor ou otimizado global ou local. O objetivo é, obviamente, encontrar um global, mas se houver um único pico afiado de combinações de parâmetros de zilhões, métodos não-exaustivos podem não encontrar este único pico, mas levando-o de comerciantes perspecive, 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, procuramos 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 população inicial (geralmente aleatória) de conjuntos de parâmetros b) o teste de retorno é realizado por AmiBroker para cada conjunto de parâmetros da população c) os resultados dos testes alternativos são Avaliado de acordo com a lógica do algoritmo e a nova população é gerada com base na evolução dos resultados, d) se for encontrada uma nova melhoração - salve-a 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) alcançar especificado Iterações máximas b) pare se a gama de melhores valores objetivos das últimas gerações X for zero c) pare se a adição de 0,1 vetor de desvio padrão em qualquer direção do eixo principal não altera o valor do valor objetivo d) outros Para usar qualquer dispositivo 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 externo definido pelo nome. AmiBroker atualmente é fornecido com 3 motores: Otimizador de enxame de partículas padrão (quotspsoquot), Tribes (quottribquot) e CMA-ES (quotcmaequot) - os nomes nas 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 (quotname, value) A função define parâmetros adicionais para o mecanismo de otimização externa. Os parâmetros são dependentes do motor. Todos os três otimizadores fornecidos com AmiBroker (SPSO, Trib, CMAE) suportam dois parâmetros: quotRunsquot (número de execuções) e quotMaxEvalquot (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) é uma prova 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 a partir do novo começo (nova população aleatória inicial). Portanto, cada execução pode levar a encontrar maxmin local diferente (se não encontrar um global). Assim, o parâmetro Runs define o número de algoritmos subseqüentes. MaxEval é o número máximo de avaliações (bactests) em qualquer execução única. Se o problema é relativamente simples e 1000 testes são suficientes para encontrar o máximo global, 5x1000 é mais provável que encontre o máximo global porque há menos chances de ficar preso no máximo local, pois as corridas subseqüentes começam a partir de diferentes aleatórias aleatórias. Escolher valores de parâmetros podem Seja complicado. Depende do problema em teste, da sua complexidade, etc., etc. Qualquer método estocástico não exaustivo não lhe dá garantia de encontrar maxmin global, independentemente do número de testes se for menor do que exaustivo. A resposta mais fácil é a. Especifique como um 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 superestimar o número de testes necessários, mas é bastante seguro. Os motores enviados são projetados para ser simples de usar, portanto, os valores padrão são usados, pois a otimização pode 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 dificuldade em encontrar o melhor valor. É especialmente verdade para parâmetros binários (onoff) - eles não são adequados para qualquer método de pesquisa que use gradiente de mudança de função objetiva (como a maioria dos métodos inteligentes o fazem). Se o seu sistema comercial contiver muitos parâmetros binários, você não deve usar o otimizador inteligente diretamente neles. Em vez disso, tente otimizar apenas os parâmetros contínuos usando otimizador inteligente e altere os parâmetros binários manualmente ou através de um script externo. SPSO - Otimizador padrão de enxertia 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 caso a caso. O SPSO. dll vem com códigos-fonte completos dentro da subpasta quotADKquot. Código de exemplo para Otimizador de enxame de partículas padrão: (encontrando o valor ideal em 1000 testes dentro do espaço de busca de 10000 combinações) OptimizerSetEngine (quotspsoquot) OptimizerSetOption (quotRunsquot, 1) OptimizerSetOption (quotMaxEvalquot, 1000) sl Optimize (quotsquot, 26, 1, 100, 1 ) Fa Optimize (quotfquot, 12, 1, 100, 1) Buy Cross (MACD (fa, sl), 0) Sell Cross (0, MACD (fa, sl)) TRIBES - Adaptive Parameter-less Partilion Swarm Optimizer Tribes é adaptável , Versão sem parâmetros do otimizador não-exaustivo PSO (otimização de enxames de partículas). Para o conhecimento científico, veja: particlewarm. infoTribes2006Cooren. pdf Em teoria, ele deve ter um desempenho melhor do que o PSO regular, pois pode ajustar automaticamente o tamanho dos enxames e a estratégia do algoritmo para o problema que está sendo resolvido. A prática mostra que seu desempenho é bastante semelhante ao PSO. O plugin Tribes. DLL implementa a variante quribTribes-D (ou seja, adimensional). Baseado em clerc. maurice. free. frpsoTribesTRIBES-D. zip por Maurice Clerc. Códigos fonte originais usados com permissão do autor Tribes. DLL vem com o código fonte completo (dentro de uma pasta DKquot) Parâmetros suportados: quotMaxEvalquot - número máximo de avaliações (backtests) por execução (padrão 1000). Você deve aumentar o número de avaliações com número crescente de dimensões (número de params de otimização). O valor padrão 1000 é bom para 2 ou máximo 3 dimensões. QuotRunsquot - 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ções) está definido para 5. Para usar o otimizador Tribes, você só precisa adicionar uma linha ao seu código: OptimizerSetOption (quotMaxEvalquot , 5000) 5000 avaliações max CMA-ES - Covariance Matrix Adaptation O otimizador de estratégia evolutiva CMA-ES (Covariance Matrix Adaptation Strategy) é um otimizador avançado não-exaustivo. Para conhecimentos científicos, consulte: bionik. tu-berlin. deusernikocmaesintro. html De acordo com benchmarks científicos, supera as nove outras estratégias evolutivas mais populares (como PSO, evolução genética e diferencial). Bionik. tu-berlin. deusernikocec2005.html O plugin CMAE. DLL implementa quotGlobalquot variante de pesquisa com vários reinícios com o aumento do tamanho da população CMAE. DLL vem com o código fonte completo (dentro de uma pasta DKquot) Por padrão, o número de execuções (ou reinícios) está configurado Para 5. É aconselhável deixar o número padrão de reinícios. Você pode alterá-lo usando a chamada OptimizerSetOption (quotRunsquot, 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 210 maior (1024 vezes) do que a primeira corrida. Há outro parâmetro quotMaxEvalquot. O valor padrão é ZERO, o que significa que o plugin irá 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 plugin também possui capacidade para aumentar o número de etapas sobre o valor inicialmente estimado se for necessário encontrar a solução. Due to its adaptive nature, the quotestimated time leftquot andor quotnumber of stepsquot displayed by the progress dialog is only quotbest guess at the timequot and may vary during optimization course. To use CMA-ES optimizer, you just need to add one line to your code: This will run the optimization with default settings which are fine for most cases. It should be noted, as it is the case with many continouos-space search algorithms, that decreasing quotstepquot parameter in Optimize() funciton calls does not significantly affect optimization times. The only thing that matters is the problem quotdimensionquot, i. e. the number of different parameters (number of optimize function calls). The number of quotstepsquot per parameter can be set without affecting the optimization time, so use the finest resolution you want. In theory the algorithm should be able to find solution in at most 900(N3)(N3) backtests where quotNquot is the dimension. In practice it converges a LOT faster. For example the solution in 3 (N3) dimensional parameter space (say 100100100 1 million exhaustive steps) can be found in as few as 500-900 CMA-ES steps. Multi-threaded individual optimization Starting from AmiBroker 5.70 in addition to multiple-symbol multithreading. you can perform multi-threaded single-symbol optimization. To access this functionality, click on drop down arrow next to quotOptimizequot button in the New Analysis window and select quot Individual Optimize quot. quotIndividual Optimizequot will use all available processor cores to perform single-symbol optimization, making it much faster than regular optimization. In quotCurrent symbolquot mode it will perform optimization on one symbol. In quotAll symbolsquot and quotFilterquot modes it will process all symbols sequentially, i. e. first complete optimization for first symbol, then optimization on second symbol, etc. Limitations: 1. Custom backtester is NOT supported (yet) 2. Smart optimization engines are NOT supported - only EXHAUSTIVE optimization works. Eventually we may get rid of limitation (1) - when AmiBroker is changed so custom backtester does not use OLE anymore. But (2) is probably here to stay for long. Ed Seykota8217s First Trading System: Using Moving Averages and Richard Donchian8217s Four Week Rule By Dave McLachlan During Ed Seykota8217s interview in the book Market Wizards by Jack Schwagger, Ed describes the influences on the first trading system he ever used to make money in the market. Of course, this was back in the early 1970s 8211 when computers were very new and not even one thousandth of the speed we have today. For example, Ed tested around one hundred variations of four simple trend following systems on a computer that took up an entire air conditioned room, and the tests took him half a year to do. Today we can test thousands of variations of trading systems in around 3 minutes on a computer that fits in the palm of your hand. Ed Seykota was initially influenced by Richard Donchian who was a pioneer of trend following systems. The main difference was that Donchian was doing most of his calculations by hand, Ed was pioneering computer research. Richard Donchian used a five and twenty day moving average cross over system, and Ed used exponential moving averages (where more weight is given to the more recent data to calculate the moving average). We decided to test these two systems and see if they still hold any weight in today8217s markets. Richard Donchian8217s Four Week Rule: Does It Still Work Today One of the main reasons for writing this article is that I was researching the 822052 week high8221 rule of William O8217Neil and decided to optimize the results (optimizing is the process of testing all the variations of a system between two values). I tested all the variations of buying on new weekly highs and selling on new weekly lows, from one week to 52 weeks, and the results absolutely blew me away. The variation with the best back-tested result out of over 2,700 variations was to buy on a four week high and sell on a four week low, in other words the exact same system that Richard Donchian pioneered over 50 years ago. I couldn8217t believe it Did that mean that his ridiculously simple system still worked See for yourself: Market: All Ordinaries (XAO) from 1990 to today (21 years). The win percentage was 52.38, meaning we won around 5 out of 10 trades the profit to loss ratio was 2.29 to 1.00 (the average profit being 4.57 and average loss 1.99) and the net profit was 309.00 over 21 years. Just to check, I tested it on the SP 500 from 1990 to today as well. The results were not as good, with an overall profit of only 37.29 over 21 years. Obviously it pays to choose your market when you are trading or investing, and to test your system to ensure it works 8211 the All Ordinaries results were fantastic, and the SampP 5008217s results were well below par. Here is the Amibroker Formula Language (AFL) for this optimisation test below, so you can use it for yourself or check for any errors: HighestHigh Optimize (8220HighHigh8221, 4, 1, 52, 1) LowestLow Optimize (8220Lowlow8221, 4, 1, 52, 1) HI HHV (C, HighestHigh) LW LLV (C, LowestLow) Buy C gt HI Sell C lt LW Testing A Five and Twenty Day Exponential Moving Average Crossover System: Does It Still Work Today If we can test Richard Donchian8217s four week rule, then we can test an exponential moving average crossover system as well. Testing a five and twenty day exponential moving average crossover system on the All Ordinaries over 21 years, here are the results: The win percentage was 45.00, meaning we won around 4.5 out of 10 trades the profit to loss ratio was 2.44 to 1.00 (the average profit being 4.08 and average loss 1.67) and the net profit was 225.50 over 21 years. Not bad at all Testing the same system on the SampP 500 . The win percentage was 30.29, the profit to loss ratio was 2.74 to 1.00 (the average profit being 4.86 and average loss 1.77) and the net profit was 31.57 over 21 years. No where near as good a result, but still a profit. Here is the AFL code I used for this Moving Average back-test: FastMA EMA( C, 5 ) SlowMA EMA( C, 20) Buy Cross( FastMA, SlowMA ) Sell Cross( SlowMA, FastMA ) Does Ed Seykota8217s First Trading System Still Work While Ed Seykota moved on to other things after his first trading system, we can see from the results above that the components of his system would still work today 8211 especially so on the All Ordinaries in Australia. Seeking out trading rules and testing them automatically is one of the benefits of a charting program like Amibroker, and is very similar to the way super-traders like Ed Seykota, Larry Hite and others started getting their phenomenal returns. What Do You Think Of This Article And Research Did It Help What Else Would You Add Read Related Articles: 2 Responses Leave a Reply
No comments:
Post a Comment