Wednesday 18 October 2017

2 Bar trading system


MetaTrader 5 - Exemplos Um Exemplo de um Sistema de Negociação Baseado em um Indicador Heiken-Ashi Introdução Com a aparência do gráfico de velas nos EUA há mais de duas décadas atrás, houve uma revolução no entendimento de como as forças de touros e ursos trabalham Os mercados ocidentais. Castiçais tornou-se um popular instrumento comercial, e os comerciantes começaram a trabalhar com eles, a fim de facilitar a leitura das cartas. Mas a interpretação dos castiçais difere uns dos outros. Um destes métodos, que muda a carta tradicional do candelabro, e facilita sua percepção, é chamado a tecnologia de Heikin Ashi. 1. Nani Desu Ka A primeira publicação sobre este tópico, surgiu em 2004 na edição de fevereiro da Análise Técnica do STOCKS amp COMMODITIES, onde Dan Valcu publicou um artigo intitulado Using The Heikin Ashi Technique (link para o artigo original). Website o autor aponta que durante o verão de 2003 ele estudou a tecnologia de Ichimoku, e como muitas vezes acontece, descobriu acidentalmente alguns diagramas, em que ele viu uma tendência claramente visível do mercado. Aconteceu ser um diagrama Heikin-Ashi, ou, para ser mais preciso, alguns castiçais alterados. Este método de análise foi desenvolvido por um trader japonês que se tornou muito bem sucedido e usa este método até hoje. Para a surpresa do autor, ele não encontrou nenhuma outra informação relacionada em livros ou na Internet, então ele decidiu torná-lo disponível para todos os comerciantes, publicando-o em um diário. O método Heikin-Ashi (heikin em japonês significa o meio ou o equilíbrio, e ashi significa pé ou barra), e é uma ferramenta visual para avaliar tendências, sua direção e força. Este não é um Santo Graal de negociação, mas é definitivamente um instrumento bom e fácil de usar para visualizar tendências. Vamos considerar como o cálculo do valor do candelabro OHLC é executado: Fechamento da barra atual: haFerrar (Aberta Alta Baixa Fechar) / 4 Abertura da barra atual: haOpen (haOpen antes. HaClose antes) / 2 Máximo da barra atual: HaHigh Max (High, haOpen, haClose) Mínimo da barra atual: haLow Min (Low, haOpen, haClose) Os valores de Open, High, Low e Close referem-se à barra atual. O prefixo ha indica os valores modificados correspondentes de heikin-ashi. Para facilitar a percepção de informações de mercado, a tecnologia Heikin-Ashi modifica a tradicional carta de velas, criando os chamados candelabros sintéticos, que removem a irregularidade do gráfico normal, oferecendo um melhor quadro de tendências e consolidações. Basta olhar para o gráfico de candlestick, criado usando este método, você obtém uma boa visão geral do mercado e seu estilo: Figura 1. À esquerda é regular chandelier gráfico (a), à direita (b) Heikin-Ashi gráfico Fig . 1 mostra a diferença entre castiçais japoneses tradicionais de castiçais de Heiken Ashi. A característica distintiva destes gráficos é que em uma tendência ascendente a maioria de velas brancas não têm nenhuma sombra. Em uma tendência descendente não há nenhuma sombra superior para a maioria de velas pretas. Heiken Ashi gráfico não mostram quebras, então uma nova vela se abre ao nível dos anteriores meio. Os castiçais no gráfico de Heiken-Ashi mostram uma maior extensão de indicação de tendência que os castiçais tradicionais. Quando a tendência enfraquece, os corpos de castiçais são reduzidos, e as sombras crescem. A mudança na cor dos castiçais é um sinal para comprar / vender. É mais conveniente determinar o fim de um movimento corretivo, com base nesses gráficos. Este indicador é uma parte do MetaTrader 5 e você pode localizá-lo na pasta Indicadores Exemplos HeikenAshi. mq5. Antes de instalar o indicador no gráfico, recomendo que o gráfico seja linear. Além disso, nas propriedades do gráfico, na guia Geral, desmarque o item do gráfico superior. Gostaria de voltar a concentrar sua atenção no fato de que o método Heiken-Ashi não é um Santo Graal. Para provar isso, vou tentar criar um sistema de negociação simples (TS) usando apenas esta técnica. Para fazer isso, precisamos criar um Expert Advisor simples, usando a linguagem de programação MQL5 e classes de biblioteca padrão, e depois testá-lo em dados históricos, usando o testador de estratégia do MetaTrader 5 terminal. 2. Algoritmo do Sistema de Negociação Sem tornar as coisas muito complexas, criamos o algoritmo usando as seis regras básicas do procedimento Heiken-Ashi, propostas por Dan Valcu no seguinte site: educofin / Uma tendência crescente - candlestick azul haCloseampgt haOpen Uma tendência decrescente - candlestick vermelho haClose lthaOpen Uma forte tendência crescente - um candelabro azul, em que não há baixa haOpen haLow Uma forte tendência decrescente - um candlestick vermelho, que não é alta haOpen haHigh Consolidation - uma seqüência de castiçais com corpos pequenos (de qualquer cor ) E sombras longas Mudança de tendência - um castiçal com um corpo pequeno e longas sombras da cor oposta. Não é sempre um sinal confiável, e às vezes pode ser apenas uma parte da consolidação (5). Uma tendência de (1,2) é fácil de entender - se estamos em uma transação, simplesmente manter a posição, movendo a parada por 1-2 pontos abaixo / acima do anterior castiçal. Uma forte tendência (3, 4) agimos da mesma maneira - puxando para cima a parada. Consolidação (5) e uma mudança de tendência (6), fecha a posição (se não for fechada pela parada), porém precisamos decidir se deve ou não abrir uma posição oposta. Para tomar a decisão, precisamos de alguma forma determinar se uma consolidação ou uma reversão está ocorrendo. Precisamos de um filtro, baseado em indicadores, análise de castiçais ou análise gráfica. Os objectivos do nosso artigo não incluem o estabelecimento de uma estratégia rentável, mas quem sabe o que vamos conseguir como resultado. Portanto, vamos considerar que a aparência de uma vela da cor oposta, vamos fechar a posição e abrir um novo com a direção oposta. E assim, nosso algoritmo é como segue: Após a formação de uma vela da cor oposta, nós fechamos a posição precedente, se nós temos uma, e abrimos posições na abertura de uma vela nova, ajustando uma parada 2 pontos abaixo / Acima do mínimo / máximo da vela anterior. A tendência - movemos a parada 2 pontos abaixo / acima do mínimo / máximo da vela anterior. Com uma forte tendência, tomamos as mesmas medidas que fizemos com a tendência, ou seja, mover a parada. No geral, tudo é bastante simples, e espero que claro para o leitor. Agora vamos implementar isso na linguagem de MQL5. Para criar um Expert Advisor, precisamos apenas de um parâmetro de entrada - o tamanho do lote, as duas funções do manipulador de eventos OnInit (), OnTick () e nossa própria função CheckForOpenClose (). Para definir os parâmetros de entrada em MQL5 usamos variáveis ​​de entrada. Função OnInit () é o manipulador de eventos Init. Os eventos de inicialização são gerados imediatamente após o carregamento do Expert Advisor. No código desta função vamos conectar o indicador ao Expert Advisor. Como mencionei acima, o MetaTrader padrão 5 inclui um indicador HeikenAshi. mq5. Você pode se perguntar por que há tanta complexidade, se tivermos as fórmulas para calcular o indicador, e podemos calcular os valores no código do Expert Advisor. Sim, eu admito, é possível fazê-lo, mas se você olhar para um deles cuidadosamente: você verá que ele usa os valores anteriores, o que cria um certo inconveniente para cálculos independentes e complica a nossa vida. Portanto, em vez de cálculos independentes, vamos explorar as capacidades do MQL5 para conectar nosso indicador personalizado, especificamente, a função iCustom. Para fazer isso, adicionamos ao corpo da função OnInit () a seguinte linha: e obtemos uma variável global hHeikenAshi - handle do HeikenAshi. mq5, indicador, que precisaremos no futuro. A função OnTick () é o manipulador do evento NewTick (). Que é gerado com o aparecimento de um novo carrapato. Função TerminalInfoInteger (TERMINALTRADEALLOWED) verifica se a negociação é permitida ou não. Usando a função BarsCalculated (HHeikenAshi), verificamos a quantidade de dados calculados para o indicador solicitado, no nosso caso HeikenAshi. mq5. E se ambas as condições forem atendidas, veremos o cumprimento de nossa função CheckForOpenClose () onde o trabalho principal ocorre. Vamos olhar para ele com mais cuidado Uma vez que os termos do nosso TS especificar que a instalação de ordens ter lugar na abertura de um novo castiçal, precisamos determinar se um novo castiçal abriu ou não. Há muitas maneiras de fazer isso, mas o mais simples é verificar o volume de carrapatos. Assim, se o volume do carrapato é igual a um, isso indica a abertura de uma nova barra, e você deve verificar os termos de TS e colocar as encomendas. Implementá-lo da seguinte maneira: Crie uma matriz variável do tipo MqlRates do tamanho de um elemento. Usando a função Copy Rates (), obtenha nela os valores da última barra. Então verifique o volume do carrapato e se for maior do que um, termine a função, se não, então continue os cálculos. Em seguida, usando a diretiva define declaramos algumas constantes mnemônicas: Então declaramos o array: e usando a função CopyBuffer () obtemos os valores do indicador nos arrays apropriados. Quero focar sua atenção em como os dados são armazenados nas variáveis ​​da matriz. A barra mais antiga (historicamente) é armazenada no primeiro elemento da matriz (zero). A barra mais recente (atual) no último, BARCOUNT-1 (Fig. 2). Figura 2. A ordem dos castiçais e os valores dos índices da matriz E assim nós obtivemos os valores OHIC Heiken-Ashi, e resta verificar as condições para a abertura ou manutenção de uma posição. Considere em detalhe o processamento do sinal de venda. Como eu mencionei antes, temos os valores de três castiçais Heiken-Ashi. O valor atual está localizado nas células com o número BARCOUNT-1 2, e não é necessário para nós. Os valores anteriores estão nas células BARCOUNT-2 1, e as barras anteriores estão em BARCOUNT-3 0 (ver Fig. 2), e com base nessas duas barras verificamos os termos e condições de fazer o comércio. Então, precisamos verificar se há posições abertas no instrumento. Para fazer isso, usaremos a classe CPositionInfo de classes de negociação da biblioteca padrão. Esta classe nos permite obter informações sobre posições abertas. Usando o método Select (Symbol) determinamos a presença de posições abertas no nosso instrumento, e se estiverem presentes, então, usando o método Type (), determinamos o tipo de posições abertas. Se no momento atual temos uma posição aberta para comprar, então precisamos fechá-lo. Para fazer isso, usamos os métodos de classe CTrade da biblioteca de classes padrão. Que é projetado para realizar operações comerciais. Usando o método PositionClose (símbolo de string constante, ulong desvio), fecharemos a compra, onde o símbolo é o nome do instrumento eo segundo parâmetro, desvio, é o desvio permitido do preço de fechamento. Em seguida, verificar a combinação de castiçais de acordo com o nosso TS. Já que já verificamos a direção dos castiçais recém-formados (com o índice BARCOUNT-2), só precisamos verificar o castiçal antes dele (com o índice BARCOUNT-3) e executar as etapas necessárias para abrir a posição. Aqui é necessário voltar sua atenção para o uso de três métodos da classe CTrade: Método PositionOpen (símbolo, tipo de ordem, volume, preço, sl, tp, comentário) Usado para abrir uma posição onde símbolo é o nome do instrumento, Ordertype - tipo de ordem, volume - o tamanho do lote, preço - preço de compra, sl - Stop, tp - lucro, comentário - um comentário. Método PositionModify (símbolo, sl, tp) Usado para alterar o valor do stop e lucro, onde símbolo - o nome do instrumento, sl - Stop, tp - profit. Gostaria de chamar sua atenção para o fato de que antes de usar este método, você deve verificar a presença de uma posição aberta. O método ResultRetcodeDescription () é usado para obter a descrição do erro de código na forma de uma linha. No cálculo do stoploss variável, o valor do haHigh BARCOUNT-2 é um cálculo, recebido do indicador, e precisa de normalização, feito pela função NormalizeDouble (haHigh BARCOUNT-2, Dígitos) para ser usado corretamente. Isso completa o processamento do sinal para vender. Para comprar, usamos o mesmo princípio. Aqui está o código completo do Expert Advisor: O texto completo do Expert Advisor pode ser encontrado no arquivo anexado HeikenAshiExpert. mq5. Copie para o catálogo. MQL5 Especialistas, em seguida, execute o MetaEditor através do menu Tools - ampgt Editor MetaQuotes Language ou use a tecla F4. Em seguida, na janela Navegador, abra a guia Especialistas e faça o download do arquivo HeikenAshiExpert. mq5, clicando duas vezes nele, na janela de edição e compile pressionando F7. Se todas as operações foram realizadas corretamente, então na guia Consultores Especialistas, na janela Navegador, o arquivo HeikenAshiExpert será crated. O indicador HeikenAshi. mq5 deve ser compilado da mesma forma, está localizado no catálogo MQL5 Indicators Examples. 4. Testando o sistema de comércio em dados históricos Para verificar a viabilidade do nosso sistema de comércio, vamos usar o testador de estratégia MetaTrader 5, que é uma parte da plataforma de negociação. O testador é executado através do menu do terminal View - ampgt Strategy Tester ou pressionando a combinação de teclas Ctrl R. Uma vez que é lançado, localizamos a guia Configurações (Figura 3). Figura 3. Configurações do Strategy Tester Configurando o Expert Advisor - escolha uma lista de nossos Expert Advisors, indique o intervalo de testes entre o início de 2000 até o final de 2009, o valor do depósito inicial é de 10.000 USD, desabilite a otimização Têm apenas um parâmetro de entrada, e nós só queremos verificar a viabilidade do TS). O teste será feito usando dois pares de moedas. Decidi escolher os pares de moedas EURUSD e GBPUSD. Para o teste, eu decidi tomar os seguintes intervalos de tempo: H3, H6 e H12. Você vai perguntar porquê A resposta é porque eu queria testar o TS em intervalos de tempo, que não estavam presentes no terminal MetaTrader4. Então aqui vamos nós. Selecionamos a moeda de teste EURUSD, o período de teste H3 e clique em Iniciar. Após a conclusão do teste, vemos duas novas guias na janela do testador: Resultados (Fig. 4) e Gráfico (Fig. 5). Figura 4. Teste de estratégia de resultados EURUSD H3 A partir dos resultados dos testes (Fig. 4) Pode-se observar que para o período entre o início de 2000 eo final de 2009, com os parâmetros fornecidos, o TS produziu uma perda de -2560,60 USD. O gráfico (Figura 5) mostra a distribuição de lucros e perdas ao longo do tempo, o que nos dá a oportunidade de rever o desempenho de TS ao longo do tempo, e fazer uma análise de erros do sistema. Figura 5. Guia Gráfico do Testador de Estratégia (EURUSD H3) Eu quase esqueci de mencionar que a guia Resultados, por padrão, cria um relatório simples. Além disso, temos a capacidade de visualizar transações, ordens e relatórios de arquivos escritos. Para fazer isso, basta colocar o cursor sobre a guia, clicar com o botão direito do mouse e selecionar o item de menu apropriado: Figura 6. Menu de contexto da guia Resultados do Testador de Estratégia Aqui estão os resultados dos testes em um período de seis horas (H6): Figura 7. Guia Resultados do Testador de Estratégia (EURUSD H6) durante um período de 12 horas (H12). Figura 8. Guia Resultados do Testador de Estratégia (EURUSD H12) Parece que no par de moedas, como o EURUSD, nossa estratégia não é eficaz. Mas podemos notar que a variação do período de trabalho afeta significativamente o resultado. Estendemos nosso teste para o par de moedas GBPUSD, a fim de fazer conclusões finais sobre a eficiência do nosso TS. Figura 9. Guia Resultados do Testador de Estratégia (GBPUSD H12) Figura 11. Guia Resultados do Testador de Estratégia (GBPUSD H12) Figura 12. Guia Resultados do Testador de Estratégia (GBPUSD H12) Vemos que usando um par de moedas, como o GBPUSD, nosso sistema demonstrou resultados positivos em dois casos separados. Durante um período de doze horas, recebemos um lucro considerável de 8903,23 USD, embora tenha sido recebido ao longo de nove anos. Aqueles que estão interessados ​​podem testar outros pares de moedas. Minha suposição é que quanto mais volátil o par é, o melhor resultado deve ser obtido, e o período de tempo mais longo deve ser usado. Conclusão Em conclusão, eu enfatizo, que este sistema de comércio não é o Santo Graal e não pode ser usado por conta própria. No entanto, se com sinais adicionais (análise de velas, análise de ondas, indicadores, tendências), separamos os sinais de reversão dos sinais de consolidação, em seguida, em alguns instrumentos de negociação volátil, pode ser bastante viável, embora improvável trazer um lucro louco. Nani Desu Ka - O que é isso (Japonês) Traduzido do Russo por MetaQuotes Software Corp. Artigo Original: mql5 / ru / articles / 91Toby Crabel 8211 2-Bar Estratégia de negociação de padrões NR (saídas) I. Estratégia de negociação Desenvolvedor: Toby Crabel - Bar NR Padrão). Fonte: Crabel, T. (1990). Day Trading com padrões de preços de curto prazo e intervalo de abertura Breakout. Greenville: Traders Press, Inc. Conceito: Expansão da volatilidade. Objetivo de pesquisa: Verificação de desempenho do padrão de intervalo estreito (NR) com diferentes saídas. Especificação: Tabela 1. Resultados: Figura 1-2. Configuração de comércio: O padrão de NR de 2 barras de Toby Crabel é definido como o intervalo mais estreito de alto a baixo de qualquer período de dois dias em relação a qualquer período de dois dias dentro dos 20 dias de mercado anteriores. Entrada de Comércio: Abertura da Faixa de Abertura (ORB). Um comércio é tomado a uma quantidade predeterminada acima / abaixo do aberto. A quantidade predeterminada é chamada de estiramento. Long Trades: Uma parada de compra é colocada em Open Stretch. Curtas Trades: Uma parada de venda é colocada no Open Stretch. A primeira parada que é negociada é a posição. A outra parada é a parada de proteção. Trade Exit: Tabela 1. Notas: T. Crabel: 8220A ideia por trás deste padrão originou-se de Wyckoff8217s Último ponto de Abastecimento ou Último ponto de Apoio. Estes foram descritos por Wyckoff como períodos de ação de preços que exibiam faixas anormalmente estreitas e baixo volume. Ocorreram logo após um período de acumulação ou distribuição e imediatamente antes de uma fase de mark up / mark down.8221 Fonte: Crabel, T. (1990). Day Trading com padrões de preços a curto prazo e Break Break Abertura. Pp. 167. Greenville: Traders Press, Inc. Carteira: 42 mercados de futuros de quatro grandes setores de mercado (commodities, moedas, taxas de juros e índices de ações). Dados: 33 anos desde 1980. Plataforma de Teste: MATLAB. II. Teste de Sensibilidade Todos os gráficos 3-D são seguidos por gráficos de contorno 2-D para o Fator de Lucro, Índice de Sharpe, Índice de Desempenho de Úlcera, CAGR, Drawdown Máximo, Vitória / Média Razão de Perdas. A imagem final mostra a sensibilidade da curva de equidade. Variáveis ​​Testadas: TargetIndex amp TimeIndex (Definições: Tabela 1): Figura 1 Desempenho da Carteira (Entradas: Tabela 1 Comission amp Slippage: 0). Ruído: A diferença entre o aberto para cada dia eo extremo mais próximo do aberto em cada dia (Noisei min (Highi Openi, Openi Lowi)). AverageNoise: A média móvel simples de Noise durante um período de StretchLength. Stretchi AverageNoisei StretchMultiple. Índice: i StretchLength 10 StretchMultiple 2 Toby Crabel 8211 Padrão de 2-Bar Narrow Range (NR) é definido como o intervalo mais estreito de alto a baixo de qualquer período de dois dias em relação a qualquer período de dois dias nos últimos 20 dias de mercado. NRSize 2 LookBack 20 Faixa de Abertura (ORB). Um comércio é tomado a uma quantidade predeterminada acima / abaixo do aberto. A quantidade predeterminada chama-se alongamento (definido acima). Long Trades: Uma parada de compra é colocada em Open Stretch. Curtas Trades: Uma parada de venda é colocada no Open Stretch. A primeira parada que é negociada é a posição. A outra parada é a parada de proteção. Se ambas as paradas são acionadas durante o mesmo dia, contabilizamos apenas uma entrada e uma saída (sem reversões) e assumimos que o comércio era um perdedor. Tempo de saída: n dia ao fechar, n TimeIndex. Stretch Exit: Long Trades: Uma parada de venda é colocada no Open Stretch. Short Trades: Uma parada de compra é colocada no Open Stretch. Os valores são calculados no dia da entrada. Target Exit: Long Trades: Uma venda no fechamento é colocada se High Entry Target. Curtas Trades: Uma compra no fechamento é colocada se Low Entry Target. Target é o múltiplo do risco inicial por trade (definido por exit) e TargetIndex. Parar Perda Saída: ATR (ATRLength) é a média True Range durante um período de ATRLength. ATRStop é um múltiplo de ATR (ATRLength). Long Trades: Um stop de venda é colocado na entrada ATR (ATRLength) ATRStop. Curtas: Uma parada de compra é colocada na entrada ATR (ATRLength) ATRStop. TimeIndex 1, 40, Etapa 1 TargetIndex 1.0, 10.0, Etapa 0.25 ATRLength 20 ATRStop 6 TimeIndex 1, 40, Etapa 1 TargetIndex 1.0, 10.0, Etapa 0.252-Bar High Low Break Out Esta não é minha invenção ou descoberta. É apenas uma fuga simples. Eu não tenho regras especiais. A regra principal que eu sigo é parar depois que o objetivo diário é alcançado. Outra regra é tentar não pensar. As entradas são as linhas no gráfico. Aguarde sempre a entrada. Não se apresse. Esse último pip nunca pode acontecer. Se você apressar a sua entrada, você pode ser o último comerciante nessa direção e ficar parado desnecessariamente. Eu costumo trocar um par ao invés de flit em torno de como uma borboleta. Escolha uma direção para a sessão, longa ou curta, e ficar com ela. Mais cedo ou mais tarde um comércio vai funcionar. A vantagem estatística vem do tamanho da quebra. O 2-Bar D1 quebra 20 pips ou mais 4 de 5 vezes. 2-Bar High Low Break Out Eu troco o breakout do mais alto mais baixo e mais baixo para os últimos 2 bares. D1, H1 e M5 são as barras utilizadas. Os gatilhos de entrada são conhecidos com antecedência. Quando o preço toca a linha, o comércio é inserido. Não há nada mais a considerar. A perda de parada é uma função do tamanho do risco e da posição. Lucro é tomado quando disponível. O lucro mais rápido aparece, mais lento eu saio. Quanto mais lento ele aparece, mais rápido eu saio. Pare de negociar para o dia em que a meta diária ou perda diária máxima é alcançada. Por favor, dê um exemplo de seu SL. obrigado

No comments:

Post a Comment