APRENDER MQL5 TUTORIAL BASICS – 82 SIMPLES SMA SELL TRAILING STOP

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.

 

Com MQL5 para Metatrader 5 criamos um Expert Advisor para mover automaticamente uma paragem móvel de venda com base numa simples média móvel – também conhecida como SMA

Neste vídeo vamos criar um conselheiro expatriado para uma simples paragem móvel média de venda, por isso vamos descobrir como fazer isso com mql5.
Para começar por favor clique aqui num pequeno ícone ou prima F4 no seu teclado, agora deve ver a janela do Metaeditor e aqui quer clicar em ficheiro, novo ficheiro, consultor especialista de modelo, continuar, vou chamar a este ficheiro simples sma sell trailing stop, clique em continuar, continuar e terminar.
Agora pode apagar tudo acima da função ontick e as duas linhas de comentário aqui.
Primeiro, queremos incluir o ficheiro trade dot mqh, este vem com mql5 e fornece funções de troca, também contém a classe ctrade, por isso vamos criar uma instância dessa classe chamada trade.
Começamos por criar uma variável estática para o valor médio móvel da última paragem, agora queremos calcular o preço de pedido e o preço de oferta que é feito usando o símbolo info double para o símbolo actual no gráfico, usamos ou o símbolo ask ou o símbolo bid e com normalizar os dígitos double e underscore asseguramos que calculamos o número correcto de dígitos por detrás do ponto.
Para usar um stop loss precisamos de abrir uma posição de teste, vamos usar o trade dot sell para o fazer e a condição é sempre que o total de posições estiver abaixo de uma – isso significa que não temos posições abertas – e é aí que queremos vender dez microlotes.
Também queremos definir o valor médio móvel da última paragem para um valor muito elevado, na verdade, também se poderia definir para zero, mas seria necessário acrescentar outra condição porque, normalmente, vamos verificar se o valor actual é inferior ao valor médio móvel da última paragem e que nunca será inferior a zero, por isso vamos com o valor elevado por agora.
Na próxima etapa, vamos criar uma matriz para a média móvel. Com o array definido como série, vamos ordenar o array a partir da vela actual para baixo e agora podemos usar a função integrada ima para o símbolo actual no gráfico e o período actualmente seleccionado nesse gráfico para criar uma média móvel simples para quinhentas velas, não utilizamos aqui um valor de deslocamento, vamos usar o modo underscore sma como representa a média móvel simples e queremos calcular os resultados com base no preço fechado.
Vamos continuar com o buffer de cópia, este é utilizado para preencher a matriz de acordo com a definição de média móvel que criámos aqui, vamos pegar nos valores para o zero buffer que é a linha de sinal da média móvel aqui, vamos começar com o zero vela – que é a vela actual – e vamos copiar os valores para três velas e armazená-los na matriz. E agora que já fizemos isso, podemos calcular o valor médio de paragem, olhando para uma das nossas velas da matriz de média móvel.
A primeira condição que queremos verificar para mover uma perda de paragem de venda é se a actual média móvel de paragem de venda estiver acima do preço pedido, caso contrário não seríamos capazes de a alterar.
Também queremos saber se o valor médio móvel actual de paragem está abaixo do valor médio móvel da última paragem, e se isto é verdade vamos usar uma função chamada check sma sell trailing stop e passar o preço de oferta e o valor médio de paragem como parâmetro. Esta função não existe até agora, por isso precisamos de a criar agora e não se esqueça de definir o valor médio móvel da última paragem e atribuir o valor médio móvel da actual paragem porque a actual será a última da próxima vez que chamarmos esta função.
A nossa função de paragem móvel utilizará o vazio porque não precisamos de devolver nada, o nome é check sma sell trailing stop e passamos o preço de oferta e o valor médio de paragem móvel como parâmetros aqui.
Agora usamos um for loop para percorrer todas as posições abertas, vamos contar para baixo até não haver mais nenhuma outra posição, depois usamos o símbolo position get para o contador actual do for loop para obter o símbolo do par de moedas para a posição actual e só se o símbolo no gráfico corresponder ao símbolo do par de moedas é que vamos continuar. Com a posição obter o número inteiro e a posição do parâmetro underscore ticket, podemos agora obter o ticket da posição actual e para descobrir a actual perda de stop que estamos a usar, obter o dobro da posição e passar o sl slogan do parâmetro underscore que nos permitirá verificar se a perda de stop actual está acima do valor médio do stop e também precisamos de descobrir se a perda de stop actual é igual a zero, este é o caso quando não se define uma stop loss quando se abre uma posição, por isso também precisamos de verificar esta e depois, usamos a modificação de posição comercial para o bilhete de posição actual para definir o valor médio de stop motion desejado, o último parâmetro aqui é para o take profit, não vamos alterar esse.
Finalmente, precisamos de fechar o if loop, o for loop e a função e é tudo.