MetaTrader 5 - Exemplos Um exemplo de um sistema de negociação baseado em um indicador Heiken-Ashi Introdução Com o surgimento do gráfico de velas nos EUA há mais de duas décadas, houve uma revolução na compreensão de como as forças de touros e ursos trabalham os mercados ocidentais. Candlesticks tornou-se um instrumento comercial popular, e os comerciantes começaram a trabalhar com eles para facilitar a leitura dos gráficos. Mas a interpretação de castiçais difere um do outro. Um desses métodos, que altera o gráfico tradicional de velas e facilita sua percepção, é chamado de tecnologia Heikin Ashi. 1. Nani Desu Ka A primeira publicação sobre este tópico, apareceu em 2004 na edição de fevereiro da Análise Técnica da revista STOCKS amp COMMODITIES, onde Dan Valcu publicou um artigo intitulado Usando a Técnica Heikin Ashi (link para o artigo original). Website o autor aponta que durante o verão de 2003 ele estudou a tecnologia de Ichimoku, e como acontece com frequência, descobriu acidentalmente alguns diagramas, nos quais ele viu uma tendência claramente visível do mercado. Acabou sendo um diagrama Heikin-Ashi, ou, para ser mais preciso, alguns candelabros alterados. Este método de análise foi desenvolvido por um comerciante japonês que se tornou muito bem sucedido e usa esse método até hoje. Para surpresa do autor, ele não encontrou nenhuma outra informação relacionada em livros ou na internet, então decidiu disponibilizá-la para todos os traders publicando-a em um periódico. 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 é realizado: Fechamento da barra atual: haClose (Abertura Alta Baixa Fechada) / 4 Abertura da barra atual: haAbra (abra antes, HaClose antes) / 2 Máximo da barra atual: haHigh Max (Alto, 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 o tradicional gráfico de velas, criando os chamados candelabros sintéticos, que removem irregularidades do gráfico normal, oferecendo um melhor quadro de tendências e consolidações. Apenas olhando o gráfico de velas, criado usando este método, você obtém uma boa visão geral do mercado e seu estilo: Figura 1. À esquerda está o gráfico de velas regular (a), à direita (b) Heikin-Ashi chart Fig 1 mostra a diferença entre os candelabros japoneses tradicionais dos castiçais Heiken Ashi. A característica distintiva desses gráficos é que, em uma tendência ascendente, a maioria das velas brancas não tem sombra. Em uma tendência de queda, não há sombra superior para a maioria das velas pretas. O gráfico Heiken Ashi não mostra quebras, então uma nova vela se abre no nível dos anteriores. Os candelabros no gráfico Heiken-Ashi mostram uma maior extensão de indicação de tendência do que os candelabros tradicionais. Quando a tendência enfraquece, os corpos dos candelabros são reduzidos e as sombras crescem. A mudança na cor dos castiçais é um sinal para comprar / vender. É mais conveniente determinar o final de um movimento corretivo, com base nesses gráficos. Este indicador é uma parte do MetaTrader 5 e você pode localizá-lo na pasta Indicadores HeikenAshi. mq5. Antes de instalar o indicador no gráfico, recomendo tornar o gráfico linear. Além disso, nas propriedades do gráfico, na guia Geral, desmarque o item do gráfico superior. Eu gostaria de mais uma vez focar 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 terminal MetaTrader 5. 2. Algoritmo do Sistema de Negociação Sem criar coisas muito complexas, criamos o algoritmo usando as seis regras básicas do procedimento Heiken-Ashi, proposto por Dan Valcu no seguinte site: educofin / Uma tendência crescente - castiçal azul haCloseampgt haOpen Uma tendência decrescente - castiçal vermelho haClose lthaOpen Uma forte tendência crescente - um candelabro azul, no qual não há Low haOpen haLow Uma forte tendência decrescente - um candelabro vermelho, que não é High haOpen haHigh Consolidation - uma sequência de candelabros com pequenos corpos (de qualquer cor ) e sombras longas Mudança de tendência - um candelabro com um corpo pequeno e sombras longas da cor oposta. Nem 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 mantemos a posição, movendo o stop em 1-2 pontos abaixo / acima do candle anterior. Uma forte tendência (3,4) age da mesma maneira - ao parar a parada. A consolidação (5) e uma mudança de tendência (6) fecham a posição (se ela não estiver fechada pela parada), mas precisamos então decidir se devemos ou não abrir uma posição oposta. Para tomar a decisão, precisamos de alguma forma determinar se está ocorrendo uma consolidação ou uma reversão. Vamos precisar de um filtro, construído sobre indicadores, análise candlestick ou análise gráfica. Os objetivos do nosso artigo não incluem o estabelecimento de uma estratégia lucrativa, mas quem sabe o que vamos realizar 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 é o seguinte: Após a formação de uma vela da cor oposta, fechamos a posição anterior, se tivermos uma, e abrimos uma posição na abertura de uma nova vela, definindo uma parada 2 pontos abaixo / acima do mínimo / máximo da vela anterior. A tendência - nós movemos a parada 2 pontos abaixo / acima mínimo / máximo da vela anterior. Com uma forte tendência, seguimos os mesmos passos que fizemos com a tendência, ou seja, mover a parada. No geral, tudo é bastante simples e, esperamos, claro para o leitor. Agora vamos implementar isso na linguagem do MQL5. 3. Programando o Expert Advisor no MQL5 Para criar um Expert Advisor, precisaremos de apenas 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 no MQL5, usamos variáveis de entrada. A função OnInit () é o Init do manipulador de eventos. Os eventos de inicialização são gerados imediatamente após o carregamento do Expert Advisor. No código desta função, conectaremos o indicador ao Expert Advisor. Como mencionei acima, o MetaTrader 5 padrão 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, admito, é possível fazê-lo, mas se você olhar um deles cuidadosamente: 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, exploraremos os recursos 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 indicador HeikenAshi. mq5, que precisaremos no futuro. A função OnTick () é o manipulador do evento NewTick (). que é gerado com o aparecimento de um novo tick. A 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, vemos o cumprimento de nossa função CheckForOpenClose () onde o trabalho principal ocorre. Vamos analisar com mais cuidado Já que os termos de nosso TS especificam que a instalação de pedidos ocorre na abertura de um novo candle, precisamos determinar se um novo candlestick foi aberto ou não. Há muitas maneiras de fazer isso, mas a mais simples é verificar o volume de tiques. Assim, se o volume do tick é igual a um, isso indica a abertura de uma nova barra, e você deve verificar os termos do TS e colocar ordens. Nós implementamos da seguinte maneira: Crie uma matriz variável do tipo MqlRates do tamanho de um elemento. Usando a função CopyRates (), obtenha os valores da última barra. Em seguida, verifique o volume da escala e, se for maior que um, termine a função; caso contrário, continue os cálculos. Em seguida, usando a diretiva define nós declaramos algumas constantes mnemônicas: Então nós declaramos o array: e usando a função CopyBuffer () obtemos os valores do indicador nos arrays apropriados. Eu 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 das velas e os valores dos índices da matriz E assim obtivemos os valores OHLC Heiken-Ashi, e resta verificar as condições para a abertura ou manutenção de uma posição. Considere em detalhes o processamento do sinal de venda. Como já disse antes, recebemos os valores de três candelabros 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 (veja a Figura 2) e, com base nessas duas barras, verificaremos os termos e condições de realização da negociação. Então precisamos verificar as posições abertas no instrumento. Para fazer isso, usaremos a classe CPositionInfo das 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 em nosso instrumento e, se estiverem presentes, 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á-la. Para fazer isso, usamos os métodos da classe CTrade da biblioteca de classes padrão. que é projetado para realizar operações comerciais. Usando o método PositionClose (símbolo da string const, ulong deviation) fecharemos a compra, onde o símbolo é o nome do instrumento, e o segundo parâmetro, desvio, é o desvio permissível do preço de fechamento. Então nós verificamos a combinação de castiçais de acordo com o nosso TS. Como já verificamos a direção das velas recém-formadas (com o índice BARCOUNT-2), basta verificar a vela antes dela (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, ordertype, volume, preço, sl, tp, comentário) Usado para abrir uma posição onde symbol é o nome do instrumento, ordertype - tipo de pedido, volume - tamanho do lote, preço - preço de compra, sl - Stop, tp - profit, comentário - um comentário. Método PositionModify (symbol, sl, tp) Usado para alterar o valor do stop e do profit, onde symbol - o nome do instrumento, sl - Stop, tp - profit. Gostaria de chamar sua atenção para o fato de que, antes de usar esse 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. Ao calcular o 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 conclui 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-o para o catálogo. MQL5 Experts, então 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-o pressionando F7. Se todas as operações foram realizadas corretamente, então na aba Expert Advisors, na janela Navigator, o arquivo HeikenAshiExpert será criado. O indicador HeikenAshi. mq5 deve ser compilado da mesma maneira, está localizado no catálogo MQL5 Indicators Examples. 4. Testando o sistema de negociação em dados históricos Para verificar a viabilidade de nosso sistema de negociação, usaremos o testador de estratégia MetaTrader 5, que faz 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 lançado, localizamos a guia Configurações (Figura 3). Figura 3. Configurações do Strategy Tester Configurando o Expert Advisor - escolha em uma lista de nossos Expert Advisors, indique o intervalo de teste como início de 2000 até o final de 2009, o valor do depósito inicial é 10.000 USD, desative a otimização tem apenas um parâmetro de entrada, e nós apenas queremos verificar a viabilidade do TS). O teste será feito usando dois pares de moedas. Eu decidi escolher os pares de moedas EURUSD e GBPUSD. Para o teste, decidi tomar os seguintes intervalos de tempo: H3, H6 e H12. Você vai perguntar por que A resposta é porque eu queria testar o TS em intervalos de tempo, que não estavam presentes no terminal MetaTrader4. Aqui vamos nos. 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. Resultados da estratégia de resultados EURUSD H3 A partir dos resultados do teste (Fig. 4) Você pode ver que para o período do início de 2000 até o final de 2009, com os parâmetros fornecidos, a TS gerou uma perda de -2560,60 USD. O gráfico (Fig. 5) mostra a distribuição dos lucros e perdas ao longo do tempo, o que nos dá a oportunidade de rever o desempenho do TS ao longo do tempo e fazer uma análise dos erros do sistema. Figura 5. Aba Graph do Strategy Tester (EURUSD H3) Eu quase esqueci de mencionar que a aba Results, por padrão, cria um relatório simples. Além disso, temos a capacidade de visualizar transações, pedidos e relatórios de arquivos gravados. Para fazer isso, basta posicionar 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 da Avaliação de Estratégia Veja 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 doze horas (H12). Figura 8. Guia Results do Strategy Tester (EURUSD H12) Parece que no par de moedas, como EURUSD, nossa estratégia não é eficaz. Mas podemos notar que a variação do período de trabalho afeta significativamente o resultado. Nós estendemos nosso teste para o par de moedas GBPUSD, a fim de tirar conclusões finais sobre a eficiência de nosso TS. Figura 9. Guia Results do Strategy Tester (GBPUSD H3) Figura 10. Guia Results do Strategy Tester (GBPUSD H6) Figura 11. Guia Results do Strategy Tester (GBPUSD H12) Figura 12. Guia Graph Tester Graph (GBPUSD H12) Após analisar os resultados do teste, vemos que usando um par de moedas, como GBPUSD, nosso sistema demonstrou resultados positivos em dois casos separados. Ao longo de 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 for, melhor o resultado deve ser obtido, e o período de tempo mais longo deve ser usado. Conclusão Em conclusão, enfatizo que este sistema de negociação não é o Santo Graal e não pode ser usado sozinho. No entanto, se com sinais adicionais (análise candlestick, análise de onda, indicadores, tendências) separamos os sinais de reversão dos sinais de consolidação, então em alguns instrumentos de negociação voláteis, pode ser bastante viável, embora seja improvável que traga um lucro insano. Nani Desu Ka - O que é isto? (Japonês) Traduzido do russo por MetaQuotes Software Corp. Artigo original: mql5 / ru / articles / 91
Комментариев нет:
Отправить комментарий