Monday 10 July 2017

Amibroker Test A Moving Media Crossover System


Como otimizar o sistema de negociação NOTA: Este é tópico bastante avançado. 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 comércio, este pode ser um crossover 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 se comporta o sistema (isto é, é adequado para longo ou curto prazo, como reagir a estoques altamente voláteis, etc.). A otimização é o processo de encontrar valores ótimos desses parâmetros (dando maior lucro do sistema) para um dado 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ê tem que definir de um até dez parâmetros para ser otimizado. Você decide qual é o 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 testes de volta o sistema usando TODAS as combinações possíveis de valores de parâmetros. Quando este processo é terminado AmiBroker exibe a lista de resultados classificados por lucro líquido. É possível ver os valores dos parâmetros de otimização que dão o melhor resultado. Escrevendo a fórmula AFL A otimização no back tester é suportada por uma nova função chamada optimize. A sintaxe desta função é a seguinte: variável otimizar (quot Descrição quot, default. Min. Passo máximo) variável - é a variável AFL normal que recebe o valor retornado pela função otimizar. Com os modos de backtesting, varredura, exploração e comentar normal, a função de otimização retorna o valor padrão, então a chamada de função acima é equivalente a: default da variável No modo de otimização, a função otimizar retorna valores sucessivos de min a max (inclusivamente) com step stepping. 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 otimizar a função retorna nos modos de exploração, de indicador, de comentário, de varredura e de back-test normal min é um valor mínimo da variável sendo otimizado max é um valor máximo da variável sendo otimizado step é um intervalo usado para aumentar a Valor de min para máximo 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 é realmente boa idéia para limitar o número de variáveis ​​de otimização para apenas alguns. Cada chamada para otimizar gerar (max - min) loops de otimização de etapa e múltiplas chamadas para otimizar multiplicam o número de execuções necessárias. Por exemplo, otimizar dois parâmetros usando 10 etapas exigirá 1010 100 loops de otimização. Call optimize função apenas ONCE por variável no início da sua fórmula como cada chamada gera um novo otimização loops Otimização de símbolo múltiplo é totalmente suportado por AmiBroker O espaço de pesquisa máximo é 2 64 (10 19 10,000,000,000,000,000,000) combinações 1. Otimização de variável única: sigavg Otimizar (Sinal (12. 26. sigavg), MACD (12. 26)) Sinal (12. 26. sigavg) 2. Otimização de duas variáveis ​​(adequado para gráficos 3D) por Otimizar (por 2. 5. 50. 1) Nível Otimizar (nível 2. 2. 150. 4) Comprar Cross (CCI (per), - Level) 3. Otimização de variáveis ​​múltiplas (3) Otimização de variáveis ​​(mfast) Optimize (MACD Slow, 26. 17, 30. 1) (Mfast, mslow, sigavg), MACD (mfast, mslow) Sinal (mfast, mslow, sigavg)) Depois de entrar O f Ormula basta clicar no botão Otimizar na janela quotAutomatic Analysisquot. AmiBroker vai começar a testar todas as combinações possíveis de variáveis ​​de otimização e relatar os resultados na lista. Após a otimização é feita a lista de resultados é apresentado classificado pelo lucro líquido. Como você pode classificar os resultados por qualquer coluna na lista de resultados é fácil obter os valores ideais de parâmetros para o menor drawdown, menor número de comércios, maior fator de lucro, menor exposição ao mercado e mais alto risco ajustado retorno anual. As últimas colunas da lista de resultados apresentam os valores das variáveis ​​de otimização para determinado teste. Quando você decidir qual combinação de parâmetros se adequa às suas necessidades, o melhor que você precisa fazer é substituir os valores padrão em otimizar chamadas de função com os valores ideais. No estágio atual você precisa digitá-los manualmente na janela de edição de fórmula (o segundo parâmetro de otimizar a chamada de função). Exibição de gráficos de otimização animados 3D Para exibir o gráfico de otimização 3D, é necessário executar a otimização de duas variáveis ​​primeiro. Duas otimização variável precisa de uma fórmula que tenha 2 chamadas de função Optimize (). Um exemplo de fórmula de otimização de duas variáveis ​​se parece com isto: por Otimizar (por 2. 5. 50. 1) Nível Otimizar (nível 2. 2. 150. 4) Comprar Cross (CCI (per), - Level) Sell Cross (Level, CCI (per)) Depois de inserir a fórmula, você precisa clicar no botão quotOptimizequot. Quando a otimização estiver concluída, você deve clicar na seta suspensa no botão Otimizar e selecionar Exibir gráfico de otimização 3D. Em poucos segundos, um gráfico colorido de superfície tridimensional aparecerá em uma janela do visualizador 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, é possível traçar um gráfico de superfície 3D para qualquer coluna na tabela de resultados de otimização. Basta clicar no cabeçalho da coluna para classificá-lo (uma seta azul aparecerá indicando que os resultados de otimização são classificados por coluna selecionada) e, em seguida, escolha Exibir gráfico de otimização 3D novamente. Ao visualizar como seus parâmetros de sistemas afetam o desempenho de negociação, você pode decidir mais facilmente quais valores de parâmetro produzem quotfragilequot e quais produzem quotrobustquot desempenho do sistema. Configurações robustas são regiões no gráfico 3D que mostram mudanças graduais e não abruptas no gráfico de superfície. Gráficos de otimização 3D são uma ótima ferramenta para evitar ajuste de curva. Curve-fitting (ou sobre-otimização) ocorre quando o sistema é mais complexo do que ele precisa ser, e toda essa complexidade foi focada em condições de mercado que podem nunca acontecer novamente. Mudanças radicais (ou picos) nos gráficos de otimização 3D mostram claramente áreas de sobre-otimização. Você deve escolher a região do parâmetro que produz um platô largo e largo na carta 3D para sua troca real da vida. Os conjuntos de parâmetros que produzem picos de lucro não funcionarão de forma confiável na negociação real. Controles de visualizador de gráfico 3D AmiBrokers visualizador de gráfico 3D oferece capacidades de visualização total com rotação de gráfico completo e animação. Agora você pode ver os resultados de seu sistema de todas as perspectivas concebíveis. Você pode controlar a posição e outros parâmetros do gráfico usando o mouse, barra de ferramentas e atalhos de 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 movimente-se em direções XY - para aumentar, diminuir o zoom - mantenha pressionado o botão do mouse para a direita e mova-se em direções XY - para mover (traduzir) - mantenha pressionado o botão esquerdo do mouse e a tecla CTRL e Mova em 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 - anime (auto-gire) TECLA DE SETA ESQUERDA - gire vert. Esquerda SETA PARA A DIREITA - gire vert. Direita SETA PARA CIMA - girar horiz. Up DOWN ARROW KEY - girar horiz. 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 da água para cima PAGE DOWN - nível de água abaixo Otimização inteligente (não exaustiva) AmiBroker oferece agora 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 do sistema de negociação determinado for simplesmente demasiado grande para ser viável para uma pesquisa exaustiva. Busca exaustiva é perfeitamente bem desde que seja razoável usá-lo. Vamos dizer que você tem 2 parâmetros cada variando de 1 a 100 (etapa 1). Isso é 10000 combinações - perfeitamente OK para pesquisa exaustiva. Agora, com 3 parâmetros você tem 1 milhão de combinações - ainda é OK para busca exaustiva (mas pode ser lenghty). 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 para verificar todos eles, e esta é a área onde os métodos não-exaustivos de busca inteligente pode resolver o problema que não é resolvível em tempo razoável usando pesquisa exaustiva. Aqui é absolutamente a instrução mais simples como usar novo otimizador não-exaustivo (neste caso CMA-ES). 1. Abra sua fórmula no Editor de Fórmulas. 2. Adicione esta única linha na parte superior da sua fórmula: OptimizerSetEngine (quotcmaequot) você também pode usar quotspsoquot ou quottribquot aqui 3. (Opcional) Selecione seu alvo de otimização em Automatic Analysis, Settings, quotWalk - Parte anterior, campo Otimização. Se você pular esta etapa otimizará para CARMDD (retorno anual composto dividido pelo drawdown máximo). Agora, se você executar otimização usando esta fórmula, ele usará novo evolucionário (não-exaustiva) CMA-ES otimizador. Como funciona A otimização é o processo de encontrar o mínimo (ou máximo) de determinada função. Qualquer sistema de negociação 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 alvo de otimização (digamos CARMDD). E você está procurando o máximo de determinada função. Alguns dos algoritmos inteligentes de otimização 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 por humanos - CMA-ES. Estes algoritmos são utilizados em muitas áreas diferentes, incluindo finanças. Digite quotPSO financequot ou quotCMA-ES financequot no Google e você vai encontrar muitas informações. Métodos não-exaustivos (ou quotsmartquot) encontrarão global ou local otimizado. O objetivo é, naturalmente, encontrar um global, mas se houver um único pico afiado fora das combinações de parâmetros de zilhões, métodos não-exaustivos podem não conseguir encontrar este pico único, mas levando-se forma comerciantes perspecive, encontrar pico único afiado é inútil para 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 regiões de platô com parâmetros estáveis ​​e esta é a área onde os métodos inteligentes brilham. No que se refere ao algoritmo utilizado pela pesquisa não exaustiva, o resultado é o seguinte: a) o otimizador gera uma população inicial de grupos de parâmetros (geralmente aleatória) b) o backtest é realizado pelo AmiBroker para cada conjunto de parâmetros da população c) os resultados dos backtests são Avaliada de acordo com a lógica do algoritmo e nova população é gerada com base na evolução dos resultados, d) se for encontrado o melhor - salve-o e vá para a etapa b) até que os critérios de parada sejam atendidos Iterações máximas b) parar se o intervalo de melhores valores objetivos das últimas gerações X é zero c) parar se adicionar 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 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: Standard Particle Swarm Optimizer (quotspsoquot), Tribos (quottribquot) e CMA-ES (quotcmaequot) - os nomes em chaves são para ser usado em chamadas OptimizerSetEngine. Além de selecionar otimizador motor você pode querer definir alguns dos seus parâmetros internos. Para isso, use a função OptimizerSetOption. Função OptimizerSetOption (quotnamequot, value) A função define parâmetros adicionais para o mecanismo de otimização externo. Os parâmetros são dependentes do motor. 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, de modo que os mesmos valores podem e normalmente produzirão resultados diferentes com diferentes motores usados. A diferença entre Runs e MaxEval é a seguinte. A avaliação (ou teste) é backtest único (ou avaliação do valor da função objetivo). RUN é uma execução completa do algoritmo (encontrar o valor ótimo) - geralmente envolvendo muitos testes (avaliações). Cada execução simplesmente restabelece todo o processo de otimização a partir do novo início (nova população aleatória inicial). Portanto, cada execução pode levar a encontrar diferentes locais maxmin (se não encontrar um global). Portanto, o parâmetro Runs define o número de execuções 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 global max, 5x1000 é mais provável encontrar global máximo, porque há menos chances de ser preso no local máximo, como subseqüentes vai começar a partir de diferentes aleatória população inicial Escolhendo valores de parâmetro pode Ser complicado Depende do problema em teste, sua complexidade, etc, etc. Qualquer método não-exaustivo estocástico 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 é. Especifique 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 superestimar o número de testes necessários, mas é bastante seguro. Os motores lançados são projetados para ser simples de usar, portanto, quotreasonablequot defaultautomatic valores são usados ​​para otimização pode ser normalmente executado sem especificar nada (aceitando padrões). É importante entender que todos os métodos de otimização inteligentes funcionam melhor em espaços de parâmetros contínuos e funções objetivas relativamente suaves. Se o espaço de parâmetros é discreto algoritmos evolutivos podem ter dificuldade em encontrar o melhor valor. É especialmente verdadeiro para parâmetros binários (onoff) - eles não são adequados para qualquer método de pesquisa que usa gradiente de mudança de função objetivo (como a maioria dos métodos inteligentes fazer). Se o seu sistema de negociação contém muitos parâmetros binários, você não deve usar otimizador inteligente diretamente neles. 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 - Standard Particle Swarm Optimizer O Otimizador Padrão de Enxames de Partículas é baseado no código SPSO2007 que é suposto produzir bons resultados desde que sejam fornecidos parâmetros corretos (isto é, Runs, MaxEval) para problemas específicos. Escolher opções corretas para o otimizador PSO pode ser complicado, portanto, os resultados podem variar significativamente de caso para caso. O SPSO. dll vem com códigos-fonte completos dentro da subpasta quotADKquot. Exemplo de código para Padrão Particle Swarm Optimizer: (encontrando otimizado valor em 1000 testes dentro de espaço de pesquisa de 10000 combinações) OptimizerSetEngine (quotspsoquot) OptimizerSetOption (quotRunsquot, 1) OptimizerSetOption (quotMaxEvalquot, 1000) sl Otimizar (quotsquot, 26, 1, 100, 1 ) Otimizar (quotfquot, 12, 1, 100, 1) Comprar Cross (MACD (fa, sl), 0) TRIBES - Adaptive Parâmetro-menos Partículas Swarm Optimizer Tribes é adaptável , Versão sem parâmetros de otimizador PSO (otimização de enxame de partículas) não-exaustiva. Para o fundo científico veja: particleswarm. infoTribes2006Cooren. pdf Na teoria deve executar melhor do que o PSO regular, porque pode ajustar automaticamente os tamanhos do enxame e a estratégia do algoritmo ao problema que está sendo resolvido. A prática mostra que seu desempenho é bastante semelhante ao PSO. O plug-in Tribes. DLL implementa a variante quotTribes-Dquot (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 código fonte completo (dentro da pasta quotADKquot) 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 o número crescente de dimensões (número de parâmetros de otimização). O padrão 1000 é bom para 2 ou máximo 3 dimensões. QuotRunsquot - número de execuções (reinícios). (Padrão 5) Você pode deixar o número de execuções com o valor padrão de 5. Por padrão, o número de execuções (ou reinicializações) é definido como 5. Para usar otimizador Tribes, basta adicionar uma linha ao seu código: OptimizerSetOption (quotMaxEvalquot , 5000) 5000 avaliações max CMA-ES - Covariance Matrix Adaptation Otimizador de Estratégia Evolutiva CMA-ES (Covariance Matrix Adaptação Estratégia Evolutiva) é avançado otimizador não-exaustiva. Para o fundo científico veja: bionik. tu-berlin. deusernikocmaesintro. html De acordo com benchmarks científicos outperforms nove outros, as estratégias evolucionárias as mais populares (como PSO, evolução genética e diferencial). Bionik. tu-berlin. deusernikocec2005.html O plug-in CMAE. DLL implementa quotGlobalquot variante de pesquisa com várias reinicializações com tamanho de população crescente CMAE. DLL vem com código-fonte completo (dentro de pasta quotADKquot) Por padrão, o número de execuções (ou reinicializações) é definido Para 5. É aconselhável deixar o número padrão de reinícios. Você pode variá-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 possível. Observe que cada execução usa TWICE o tamanho da população de execução anterior para que ele cresce exponencialmente. Portanto, com 10 corridas você acaba com a população 210 maior (1024 vezes) do que a primeira corrida. Existe outro parâmetro quotMaxEvalquot. O valor padrão é ZERO, o que significa que o plugin irá calcular automaticamente MaxEval. É aconselhável não definir MaxEval por si mesmo como 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 ponto de solução, por isso 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 pode se mover muito rápido em alguns pontos. O plugin também tem a capacidade de aumentar o número de etapas acima do valor inicialmente estimado se for necessário para encontrar a solução. Devido à sua natureza adaptativa, o período de tempo restante deixado e ou quotnumber das etapas mostradas pelo diálogo de progresso é apenas quotbest adivinhar no timequot e pode variar durante curso de otimização. Para usar otimizador CMA-ES, você só precisa adicionar uma linha ao seu código: Isto irá executar a otimização com configurações padrão que estão bem para a maioria dos casos. Deve-se notar, como é o caso de muitos algoritmos de busca de espaço contínuo, que a diminuição do parâmetro quotstepquot em chamadas de função Optimize () não afeta significativamente os tempos de otimização. A única coisa que importa é o quotdimension do problema, ou seja, o número de diferentes parâmetros (número de otimizar chamadas de função). O número de quotstepsquot 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 (N3) (N3) backtests onde quotNquot é a dimensão. Na prática, converge um LOT mais rápido. Por exemplo, a solução em 3 (N3) espaço de parâmetro dimensional (digamos 100100100 1 milhão de etapas exaustivas) pode ser encontrada em apenas 500-900 passos CMA-ES. Otimização individual multi-threaded A partir do AmiBroker 5.70 além do multithreading de múltiplos símbolos. Você pode executar a optimização multi-threaded single-symbol. Para acessar essa funcionalidade, clique na seta suspensa ao lado do botão quotOptimizequot na janela Nova análise e selecione quot. QuotIndividual Optimizequot usará todos os núcleos de processador disponíveis para realizar a otimização de símbolo único, tornando-a muito mais rápida do que a otimização regular. No modo quotCurrent symbolquot, realizará a otimização em um símbolo. Em quotAll symbolsquot e quotFilterquot modos irá processar todos os símbolos sequencialmente, ou seja, primeira otimização completa para o primeiro símbolo, em seguida, a otimização no segundo símbolo, etc Limitações: 1. Backtester personalizado não é suportado (ainda) 2. Smart otimização motores não são suportados - Somente a otimização EXHAUSTIVA funciona. Eventualmente, podemos nos livrar da limitação (1) - quando AmiBroker é alterado para backtester personalizado não usa OLE mais. Mas (2) provavelmente está aqui para ficar por muito tempo. Sistema de Tráfego: Como codificar uma média móvel Crossover que retornou 28 por ano Ah, a humilde média móvel crossover sistema de negociação Como um dos primeiros (se não o primeiro em si) Criado e utilizado por Richard Donchian e Ed Seykota já no final dos anos 1960, você provavelmente já ouviu falar de um crossover média móvel em alguma forma ou forma durante o seu tempo nos mercados. Um dos mais comuns é o 8220Golden Cross8221 e 8220Dead Cross8221, onde a média móvel de 50 dias cruza acima (ou abaixo) a média móvel de 200 dias. A que está neste vídeo é um crossover de média móvel de 61 dias e 93 dias, em que também adicionamos uma perda de 10 stop usando a função ApplyStop em Amibroker. Isso ajuda a reduzir o máximo para baixo um pouco, para tornar o sistema um pouco mais confortável. Você poderia, se você quisesse, mesmo que usando um 60 dia e 90 dia média móvel 8211 os resultados são semelhantes. Em geral, o sistema retornou uma média de 28 por ano nos últimos 13 anos. Naturalmente, como você sabe, isso não é uma garantia de desempenho futuro, mas pode dar idéias para criar seus próprios sistemas de negociação. Confira o vídeo abaixo Os resultados do sistema de negociação Crossover média móvel: Em uma lista de ASX 200 em 13 anos: Porcentagem de vitórias: 49 Retorno anual médio: 36 p. a. Drawdown Máximo do Sistema: 45 Depois de adicionar uma perda de 10 Stop: Porcentagem de vitórias: 41 Retorno anual médio: 28 p. a. Obviamente, é aconselhável testar este sistema de negociação por conta própria, adicionar peças ou modificar para atender às suas próprias necessidades, estar ciente de seu limiar máximo de dor de estiramento e entender a necessidade de testar em dados fora da amostra. Mas é um ótimo olhar para outro sistema comercial e como codificá-lo em Amibroker. Nós também podemos ver os resultados de teste de volta dentro de segundos, em vez de testá-lo e levando semanas ou meses. Estes são os grandes benefícios do teste automático rápido, gratuito e fácil. Espero que isso ajude, tendências felizes e aprecie 8211 Dave McLachlan Vídeos no Curso Amibroker LIVRE: FREE Trading System Lições de Vídeo: FREE Amibroker Q amp A Videos: 6 Respostas Leave a ReplyStock Market Estratégia de sincronização: A média móvel Crossover A média móvel é um Extremamente útil indicador que é usado em muitas indústrias diferentes, não apenas finanças. E o poder de uma empresa como uma estratégia de timing do mercado de ações é importante saber. Nos mercados, os comerciantes superam médias móveis em suas cartas de preço para mostrar quando um mercado está tendendo e para fornecer sinais objetivos de compra e venda. Tabela de preços com média móvel sobreposta. Src: IG Índice. Se uma média móvel está se movendo para cima, isso mostra que, em geral, o mercado está tendendo mais alto, enquanto que se uma média móvel está se movendo para baixo, isso mostra que o mercado está tendendo menor. Os crossovers médios móveis também são usados ​​para identificar mudanças na tendência. Assim, se uma média rápida como a média móvel de 50 dias atravessa uma média móvel mais lenta, como a média móvel de 200 dias, pode-se dizer que o mercado mudou de uma tendência descendente para uma nova tendência de alta. E isso é conhecido pelos comerciantes como uma Cruz Dourada. O oposto disso ocorre quando a média móvel de 50 dias atravessa a média móvel de 200 dias e isso é conhecido como Cruz da Morte. Usando a média móvel como um filtro Alguns comerciantes acreditam que a Cruz de Ouro é um sinal forte para comprar o mercado de ações e uma Cruz da Morte é um sinal forte para vender, com base na suposição de que os mercados financeiros se movem em tendências de médio a longo prazo. Se você usar esses dois sinais você pode capturar ganhos quando o mercado está se movendo mais alto, e mover em dinheiro quando o mercado está indo mais baixo. Então, vamos carregar alguns dados agora e ver como essa estratégia de mercado de ações tem realmente jogado fora ao longo dos últimos 100 anos. Então, primeiro eu vou carregar alguns dados históricos diários para a Dow Jones Industrial Average em Amibroker e eu vou calcular os retornos de compra e retomada entre 1900 e 2014. Assim como você pode ver a partir dos resultados abaixo, Retorno de comprar e segurar com o Dow Jones é de 5,22. E o limite máximo é de 89. Que ocorreu durante a Grande Depressão. (Drawdown é uma maneira de medir o declínio de pico para o mínimo de um investimento.) Então, neste caso, o investimento de compra e manutenção teria perdido 89 do pico em 1929 para o vale em 1932). It8217s vale a pena mencionar que estes são os retornos nominais. Para obter os retornos reais da vida real, é necessário ajustar os dados para os dividendos reinvestidos, bem como para a inflação. É possível fazer este ajuste, mas para dados diários necessários aqui não é tão fácil. Portanto, os retornos nominais serão usados. Basta ter em mente que os retornos podem ser ligeiramente mais elevados na vida real devido aos dividendos. Em geral, o mercado de ações foi mostrado para retornar cerca de 6-7 sobre o longo prazo. 89 durante a Grande Depressão. Executando a estratégia de cruzamento Agora, em vez de usar uma abordagem de compra e retenção, só compraremos o Dow quando a média móvel de 50 dias atravessa a média móvel de 200 dias (uma Cruz Dourada). E vamos vender o mercado sempre que o MA de 50 dias cruza sob o MA de 200 dias (uma Cruz da Morte). Você pode ver os resultados abaixo que o filtro de média móvel funcionou: Então, em vez de apenas comprar e manter o índice, weve realmente fez 81 comércios ao longo do período de tempo. E o próximo gráfico mostra vêm dos comércios mais recentes. As setas verdes são sinais de compra e as setas vermelhas são sinais de venda. Você pode ver que a média móvel realmente nos tirou do mercado logo antes da crise de crédito. E ele nos trouxe de volta para o mercado em 1 de julho de 2009. Agora vamos fazer a mesma coisa, mas em um conjunto de dados diferentes. Então, neste caso, eu vou executar a estratégia de comprar e segurar no Índice SampP 500 entre 1955 e 2014. E você pode ver pelos resultados que o retorno anualizado de comprar e manter é 6,65 com uma redução de -57 para o período de tempo. E aqui o buy and hold nos dá um retorno anual de 1,65 e um drawdown da crise de crédito de -57. Isso resulta em uma curva de patrimônio muito instável, como você pode ver abaixo: Enquanto isso, a estratégia de passagem média móvel resulta em um retorno anual de 6,06 com uma redução de apenas 20. E como você pode ver, a curva de equidade com o crossover média móvel é muito menos assustador. Mais uma vez, a estratégia de média móvel nos manteve fora do mercado durante a maior parte do crash do mercado em 2008. Estratégia de crossover MA: Sumário Em geral, Id dizer que esta é uma vitória para o crossover média móvel como uma estratégia de timing de mercado de ações. Executamos três testes e a popular estratégia da Cruz Dourada nos ajudou a tempo o mercado melhor do que comprar e segurar em cada ocasião. Para mim, o mais importante é que reduziu drasticamente a nossa exposição a perdas durante os mercados de baixa. Naturalmente, nós poderíamos ir mais mais adiante nesta estrada e olhar em velocidades médias móveis diferentes e em intervalos de tempo diferentes, mas eu não quero fazer demasiado optimizing assim que deixo-o acima até que você investigue-se. Usando o mercado mais amplo para um portfólio de tempo Assim, agora temos visto como a média móvel simples pode ajudar quando o tempo do mercado de ações. Mas o que se não estamos interessados ​​em comprar o mercado de ações em si, mas sim uma carteira de ações diferentes. Talvez o mercado de ações mais amplo pode ajudar o tempo nossas negociações de ações individuais também. A fim de testar isso, eu criei uma estratégia de carteira de ações muito simples com base em momentum e 52s highs. Muito simplesmente, sempre que um estoque fecha em um novo 52 semanas de alta que o estoque é adicionado ao portfólio no próximo aberto. Sempre que ele fecha em um novo mínimo de 26 semanas, o estoque é vendido no próximo aberto e cai fora da carteira. A carteira pode conter um máximo de 10 ações em qualquer momento e cada uma é ponderada igualmente sem margem utilizada. A estratégia escolhe ações do universo SampP 500 e as comissões são fixadas em 10 por comércio com um capital inicial de 10.000. A execução dessa estratégia básica de carteira resultou em um retorno anual de 9,69 entre 2000 e 2014, o que é muito bom. Usando o SampP 500 como um filtro Muitos praticantes acreditam que é melhor comprar apenas ações quando o mercado mais amplo tende para cima e para vender essas ações quando o mercado está indo para o sul ou em uma tendência de urso. Um filtro de mercado pode, portanto, ser capaz de melhorar uma estratégia de momentum simples como este, levando a carteira em dinheiro quando o mercado de ações mais amplo está se movendo mais baixo. Então, o que se introduzir um filtro de mercado como antes, para que nós só comprar ações quando o SampP 500 está em uma tendência de alta Para o próximo teste, os estoques só são comprados e adicionados ao portfólio se a média móvel de 50 dias do SampP 500 é Acima da média móvel de 200 dias. Se a média móvel de 50 dias do SampP 500 atravessa a média móvel de 200 dias, todos os estoques são vendidos e a carteira é transferida para o caixa. Assim que uma nova cruz de ouro ocorre no SampP 500, o sistema é autorizado a começar a comprar estoques mais uma vez. A execução dessa estratégia com o filtro de mercado SampP 500 ativado resulta em um retorno de 7,47 e uma redução de -12. Assim, embora o retorno anual tenha diminuído, o levantamento é muito melhor ea curva de equidade é muito mais suave: desta vez, o sistema vai comprar um estoque sempre que faz um máximo de 52 semanas, assim como o primeiro teste. Em seguida, venderá todas as ações da carteira sempre que ocorrer uma Cruz de Morte na SampP 500. Desta forma, as posições são cortadas quando o mercado mais amplo declina. No entanto, não há filtro para operações longas como o teste dois. Em outras palavras, o mercado não precisa estar em uma tendência de alta totalmente formada para iniciar novos negócios e isso dá à estratégia um pouco mais de flexibilidade e exposição. Executar este teste produziu um retorno anual de 5,49 e uma redução de -38. Em comparação com a estratégia original, a redução diminuiu, mas o retorno anual também sofreu. Parece-me que o problema com o teste três, é que o sistema está saindo posições vencedoras muito cedo. Apenas porque o mercado mais largo está dirigindo para baixo não significa que não há estoques individuais que outperforming o ponto de referência. Portanto, no próximo teste, eu faço o oposto. Stocks are only bought if the SampP 500 is in an uptrend (the 50 MA is above the 200 MA) but they are not sold if the SampP 500 moves into a downtrend. This gives a better annual return of 8.78 and a maximum drawdown of -29. Next I will quickly take each of these tests back to the beginning of the data set to see what happens on a longer time frame. (By the way, I am using stocks from the SampP 500 universe that includes historical constituents, this is provided by Norgate Premium Data .) Test 1, between 1985 and 2014, produced an annual return of 10.01 with a maximum drawdown of -33 . This is the original system with no market timing filter. Test 2, between 1985 and 2014, produced an annual return of 6.93 with a -34 drawdown so this was much much worse than our previous result. From looking at the results and equity curve, the buy criteria may be too strict. Test 3, between 1985 and 2014, produced an annual return of 3.73 with a maximum drawdown of -31 . Again, this is a bad result for the market timing filter. Test 4, between 1985 and 2014, produced an annual return of 8.71 and a maximum drawdown of -31 . Portfolio filter: Summary Overall, the moving average filter appears to have some merit when used to trade the broader stock market. However, the case is not so clear-cut when used as part of a portfolio strategy. When timing the overall market, the crossover strategy improves both drawdown and return in most cases. But when using the crossover as a filter for a momentum portfolio strategy, there is no clear improvement in either. One reason for this could be that the momentum portfolio already has it8217s own exit criteria built into the system. Using an extra market filter adds extra complexity and might therefore be overkill. One thing the momentum portfolio needs to succeed is to be able to capture long tail profits in stocks so the cutting short of trades is not always helpful. It is also possible that the market filter criteria is simply too strict and by changing the parameters slightly, we might be able to improve results. That may be so, but these results do suggest one thing at least that the market filter strategy is not necessarily a magic bullet for portfolio systems, and this also confirms my own previous findings. Charts provided by Amibroker. Dow Jones data from Measuring Worth. All other stock market data from Norgate Premium Data . JB MarwoodSimple Triple Moving Average Crossover 8211 Amibroker AFL Code Here is the very simple and classical example to build a triple EMA (Exponential Moving Average Crossover system). System is quite popular if anyone (traderinvestor) is a newbie to classical technical analysis. In this AFL the triple moving average buy, sell signals are coded and comes with Scanning and Exploration functionality. It is a simple trend following system where the system shows buy signal if 3 EMA 13 EMA 34 EMA and shows a sell signal if 3 EMA Averages and applydrag-and-drop the Triple Moving Average Crossover code over blank chart. 7)Bingo you are done. Now you will be able to see the triple moving average crossover with buy and sell indicators. Leituras Relacionadas e Observações Sobre Rajandran Rajandran é um comerciante em tempo integral e fundador da Marketcalls, muito interessado em construir modelos de cronometragem, algos. Discricionária negociação conceitos e Trading Sentimental análise. Ele agora instrui usuários de todo o mundo, de comerciantes experientes, comerciantes profissionais a comerciantes individuais. Rajandran frequentou a faculdade em Chennai, onde ganhou um BE em Eletrônica e Comunicações. Rajandran tem uma compreensão ampla de softwares comerciais como Amibroker, Ninjatrader, Esignal, Metastock, Motivewave, Analista de Mercado (Optuma), Metatrader, Tradingivew, Python e compreende as necessidades individuais de comerciantes e investidores utilizando uma ampla gama de metodologias. Thanks very much. Required US Government Disclaimer CTFC Rule 4.41 Futures trading contains substantial risk and is not suitable for every investor. Um investidor poderia potencialmente perder todo ou mais do que o investimento inicial. Capital de risco é dinheiro que pode ser perdido sem comprometer a segurança financeira ou estilo de vida. Considere apenas o capital de risco que deve ser usado para negociação e apenas aqueles com capital de risco suficiente deve considerar a negociação. O desempenho passado não é necessariamente indicativo de resultados futuros. REGRA 4.41 DO CTFC OS RESULTADOS DE DESEMPENHO HIPOTÉTICOS OU SIMULADOS TÊM CERTAS LIMITAÇÕES. DESCONHECIDO UM REGISTO DE DESEMPENHO REAL, OS RESULTADOS SIMULADOS NÃO REPRESENTAM A NEGOCIAÇÃO REAL. TAMBÉM, DESDE QUE OS COMÉRCIOS NÃO FORAM EXECUTADOS, OS RESULTADOS PODERÃO TER OUTROS OUTROS COMPENSADOS PELO IMPACTO, SE HOUVER, DE CERTOS FACTORES DE MERCADO COMO A LIQUIDEZ. OS PROGRAMAS SIMULADOS DE NEGOCIAÇÃO EM GERAL SÃO TAMBÉM SUJEITOS AO FATO QUE SÃO PROJETADOS COM O BENEFÍCIO DE HINDSIGHT. NENHUMA REPRESENTAÇÃO ESTÁ SENDO SENDO QUE QUALQUER CONTA PODERÁ OU É POSSÍVEL CONSEGUIR LUCROS OU PERDAS SIMILARES Àqueles MOSTRADOS. Todos os comércios, padrões, gráficos, sistemas, etc. discutidos neste site ou anúncio são apenas para fins ilustrativos e não são interpretados como recomendações específicas de consultoria. Todas as idéias e materiais apresentados aqui são apenas para fins informativos e educacionais. Nenhum sistema ou metodologia de negociação nunca foi desenvolvido que possa garantir lucros ou evitar perdas. Os depoimentos e exemplos aqui utilizados são resultados excepcionais que não se aplicam a pessoas comuns e não se destinam a representar ou garantir que qualquer pessoa vai conseguir os mesmos ou resultados semelhantes. Os negócios colocados na dependência dos sistemas de Métodos de Tendência são tomados a seu próprio risco para sua própria conta. Esta não é uma oferta para comprar ou vender interesses futuros. Copyright 2015 Marketcalls Serviços Financeiros Pvt Ltd middot Todos os Direitos Reservados middot E Nosso Sitemap middot Todos os logos e marcas comerciais pertence a seus respectivos proprietários Os dados e informações são fornecidos para fins informativos apenas e não se destinam a fins comerciais. Nem o website marketcalls. in nem qualquer um dos seus promotores será responsável por quaisquer erros ou atrasos no conteúdo, ou por quaisquer acções tomadas com base nisso.

No comments:

Post a Comment