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.
If you accept this notice, your choice will be saved and the page will refresh.
Com a MQL5 para Metatrader5 criamos um Expert Advisor que é capaz de abrir negócios de venda e fechá-los com base num cruzamento de duas médias móveis.
Neste vídeo, vamos criar um Expert Advisor para um simples cruzamento de médias móveis de Stop Loss de Venda. Então, vamos descobrir como fazer isso com MQL5. Para começar, por favor clique num pequeno botão aqui ou prima F4 no seu teclado. Agora deve ver a janela do Metaeditor. E aqui quer clicar em ficheiro, novo ficheiro, Expert Advisor do modelo continuar, chamarei a este ficheiro simples cruz sobre Stop Loss.
Clique em Continuar, continuar e terminar. Agora pode apagar tudo acima da função Ontick e as duas linhas de comentário aqui. Começamos com uma declaração para incluir o ficheiro Trade.mqh. Este faz parte da MQL5 e ajudar-nos-á a utilizar algumas funções de comércio simplificadas.
Portanto, criamos uma instância da classe Ctrade e chamamos-lhe trade. Dentro da função ontick, começamos por calcular o preço Ask. Isso pode ser feito utilizando o símbolo no duplo para o símbolo actual no gráfico, estamos a utilizar o símbolo Ask de sublinhado e com a normalização dos dígitos de duplo e sublinhado calculamos automaticamente o número correcto de dígitos por detrás do ponto. Agora vamos repetir isso para o preço de licitação. Isto é muito semelhante. Mas para calcular o preço da Oferta, vamos utilizar a oferta Simbol underscore. Para o sinal, utilizamos uma variável de string.
A isto chama-se sinal, mas não atribuímos aqui quaisquer valores porque vamos calcular isso mais tarde.
Agora, vamos criar dois conjuntos, um para o pequeno conjunto médio móvel e outro para o grande conjunto médio móvel. A média móvel pequena é definida utilizando a função IMA para o símbolo actual num gráfico e o período actualmente seleccionado nesse gráfico. Vamos calculá-la para vinte velas. O valor do deslocamento é zero. Usamos a SMA ModeUnderscore para uma média móvel simples e o resultado deve ser calculado com base no preço fechado. Vamos repetir que para a grande média móvel, desta vez vamos utilizar a mesma função, mas para 50 velas, tudo o resto é semelhante.
E com Copybuffer, podemos agora preencher a pequena média móvel de acordo com a definição que criámos aqui para o zero tampão, a partir da vela zero actual, copiamos os valores para três velas e armazenamo-los na pequena média móvel. Agora vamos fazer o mesmo para a grande matriz de média móvel.
Uma vez feito isso, podemos agora descobrir se a grande média móvel para a vela um está abaixo da pequena média móvel para a vela um. Se for esse o caso, consideramos que se trata de um sinal de compra, pelo que atribuímos a palavra compra ao nosso sinal. No outro caso, se a grande média móvel da vela 1 for maior do que a pequena média móvel da vela 1, isso seria um sinal de venda. E agora atribuímos a palavra „vender“ ao nosso sinal.
E se o nosso sinal for igual a comprar e tivermos posições abertas, vamos utilizar uma função que se chama fechar todas as posições de venda deste par. Caso contrário, se o sinal for igual a vender e o valor de retorno para PosiçõesTotal for igual a zero, isso significaria que não temos posição aberta. Portanto, agora precisamos de abrir uma posição de teste, o que é feito através do trade.Sell. Estamos a abrir uma posição para 10 Microlotes. Lembre-se, esta é apenas uma posição de teste. Não o faria com uma conta real.
E para ver o que se está a passar, gostaria de acrescentar uma declaração de comentário que emitirá o texto que o sinal é agora seguido pelo sinal. É tudo para a parte principal, mas para usar esta função, precisamos de o criar. Agora, o nome da função está perto, todos vendem posição esta potência que estamos a usar nula porque não precisamos de devolver valor. Agora, precisamos de usar um For loop para todas as posições e passar por cada posição para obter alguns detalhes.
O primeiro detalhe é o número do bilhete. Podemos obtê-lo usando a posição obter bilhete para o valor actual do contador do For loop. E também precisamos de obter o par de moedas para a posição. Isto é feito usando o símbolo „position get“ para o valor actual do contador. E como só queremos fechar a posição de venda, precisamos de descobrir a direcção da posição, o que é feito usando a posição get integer para o tipo de posição.
Portanto, vamos verificar se a direcção da posição é igual ao tipo de posição de venda. Isso significaria que temos uma posição de venda. Também queremos saber se o símbolo actual no gráfico é igual ao par de moedas da posição. E se ambas as condições forem verdadeiras, vamos fechar a posição actual. Isto é feito utilizando a posição de compra de pontos de troca para fechar o número de bilhete actual. Finalmente, precisamos de fechar o for loop e a função. E é só isso.