APRENDER MQL5 TUTORIAL BASICS – 19 COMO NEGOCIAR UMA MÉDIA MÓVEL SIMPLES

Please accept YouTube cookies to play this video. By accepting you will be accessing content from YouTube, a service provided by an external third party.

YouTube privacy policy

If you accept this notice, your choice will be saved and the page will refresh.

 

Desta vez, vamos codificar um Expert Advisor completo e automatizado que vai realmente trocar uma Média Móvel Simples por 20 velas. Demora cerca de 5 minutos a codificá-la em MQL5 para Metatrader5.

Neste vídeo vamos criar um Expert Advisor simples que vai comercializar esta Média Móvel. É uma média móvel para 20 velas, por isso vamos descobrir como fazer isso com MQL5.
Primeiro precisa de clicar no pequeno botão aqui ou pressionar F4 no seu teclado, agora deve ver a janela do Metaeditor e aqui quer clicar: „File/ New/ Expert Advisor (template)“ do template, „Continue“, vou chamar este ficheiro: „SimpleMovingAverageEA“, clique em „Continue“, „Continue“ e „Finish“.
Agora pode remover tudo acima da função „OnTick“ e as duas linhas de comando aqui.
Começamos por incluir o ficheiro: „Trade.mqh“ que vem com MQL5 e fornece funções de troca fáceis, por isso vamos criar uma instância de „CTrade“ que será chamada: „trade“ e vamos usá-lo para abrir as nossas posições mais tarde.
Como queremos negociar nos dois sentidos precisamos de obter o preço Ask e o preço Bid, isso é feito usando a função „SymbolInfoDouble“ para o símbolo actual, para o preço Ask usamos „SYMBOL_ASK“ – tudo em maiúsculas – e para o preço Bid usamos „SYMBOL_BID“ também em maiúsculas, gosto de usar „NormalizeDouble“ e „_Digits“ para calcular automaticamente se temos um par de moedas com 3 dígitos ou 5 dígitos.
Agora vamos continuar, criamos uma matriz para os dados de preços que serão chamados: „PriceInfo“ e utilizamos a função: „MqlRates“ para o criar, porque „MqlRates“ armazena a informação sobre preços, volumes e spread.
Agora queremos preencher o array (PriceInfo) com dados de preços que são feitos usando „CopyRates“ para o símbolo actual no gráfico e o período actualmente usado nesse gráfico, na verdade esta e esta afirmação são iguais, podemos também usar „_Symbol“ e „_Period“, começamos com a vela actual 0 (zero) e queremos copiar os dados de preços para 3 velas e armazená-los no nosso array de informações de preços (PriceInfo).
Vamos criar um fio para o sinal que também será chamado: „sinal“ e não atribuímos qualquer valor aqui porque vamos calcular isso mais tarde.
Agora precisamos de outra matriz, desta vez para a Média Móvel que será chamada: „myMovingAverageArray“, portanto vamos definir as propriedades para a Média Móvel (movingAverageDefinition). Usamos a função „iMA“ incluída da MQL5 para o símbolo actual no gráfico e o período actualmente seleccionado nesse gráfico, quero calcular a Média Móvel para 20 velas no passado, este é um valor de deslocamento que poderia ser usado para mover a Média Móvel para a direita ou para a esquerda, não o quero usar por isso selecciono 0 (zero), queremos calcular uma Média Móvel Simples por isso usamos „MODE_SMA“ – tudo em maiúsculas – e „PRICE_CLOSE“ também em maiúsculas é usado para calcular o valor com base no preço fechado.
Assim, vamos usar „CopyBuffer“ para preencher o array (myMovingAveargeArray) com dados para o buffer 0 (zero) – esta é a linha vermelha aqui, este Indicador só tem um buffer – começamos com a vela 0 (zero) e queremos copiar os dados de preço para 3 velas e armazená-los no meu array de Moving Average (myMovingAverageArray) de acordo com a definição de Moving Average (movingAverageDefinition) que criámos aqui.
Vamos definir as condições de compra, queremos verificar se o preço fechado da vela 1 é superior ao valor da Média Móvel da vela 1 e se o prémio fechado da vela 2 era inferior ao valor da Média Móvel da vela 2 que seria uma cruz e agora queremos comprar por isso atribuímos a palavra: „comprar“ ao nosso sinal.
No outro caso, se o preço de fecho da vela 1 estiver agora abaixo da Média Móvel da vela 1 e o preço de fecho da vela 2 estiver acima da Média Móvel da vela 2 antes disso seria um sinal de venda e agora atribuímos a palavra: „vender“ ao nosso sinal, e se o nosso sinal for igual a vender e „PositionsTotal“ for inferior a 1 queremos abrir uma transacção de venda para 10 microlote, caso contrário, se o sinal for igual a comprar e não tivermos posições que signifiquem que queremos abrir uma transacção de compra para 10 microlote. Se isto for demasiado rápido para si, sugiro que vá aos vídeos básicos da MQL5 que já foram criados anteriormente.
Ainda falta uma coisa, precisamos de uma saída gráfica, por isso usamos a função „Comentar“ para produzir o texto: „O sinal é agora:“ e o sinal calculado.
É isso mesmo. Quando terminar pode clicar no botão „Compile“ aqui não deve receber nenhum erro e nesse caso pode clicar num pequeno botão aqui ou pressionar F4 para voltar ao Metatrader e no Metatrader que deseja clicar: „View/ Strategy Tester“ ou prima CTRL e R, por favor escolha o novo ficheiro: „SimpleMovingAverageEA.ex5“, marque aqui a opção de visualização e inicie o seu teste.