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 MQL5 para Metatrader5 criamos um Expert Advisor que é capaz de usar uma paragem de compra que é calculada com base num valor SMA para uma média móvel simples de 500 velas.
Neste vídeo, vamos criar um consultor especializado que é capaz de criar uma simples paragem móvel de compra que se baseia num valor médio móvel simples, 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 especializado de modelo, continuar, vou chamar a este ficheiro simples sma buy 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 ponto mqh, este vem com mql5 e fornece funções comerciais simplificadas depois criamos uma instância da classe ctrade e chamamos-lhe trade.
Dentro da função ontick começamos com uma variável estática dupla chamada valor médio móvel da última paragem, continuamos calculando o preço de venda e o preço de oferta que pode ser feito usando normalizar duplo, símbolo info duplo para o símbolo actual no gráfico e o segundo parâmetro é símbolo underscore ask ou underscore bid, com normalizar duplo e underscore dígitos certificamo-nos de calcular o número correcto de dígitos por detrás do ponto.
Para termos algo que possamos utilizar para a paragem de arrasto, precisamos de abrir uma posição de teste, por isso sempre que o total de posições for menor do que uma ou, por outras palavras, quando não tivermos uma posição aberta, utilizamos a trade dot buy para comprar dez microlotes. Isso abrirá uma nova posição e é quando fixamos o valor médio móvel da última paragem em zero, porque para cada posição precisamos de um novo valor.
Vamos continuar e criar um array para a média móvel, agora queremos ordenar o array a partir da vela actual para baixo, o que é feito usando o array definido como série para o nosso array médio móvel que criámos aqui.
Agora vamos definir as propriedades, queremos utilizar a função ima para o símbolo actual no gráfico e o período actualmente seleccionado nesse gráfico, queremos utilizá-lo para quinhentas velas a partir da vela actual zero, não utilizamos um valor de deslocamento e utilizamos o modo sma underscore porque este representa uma média móvel simples e o cálculo deve ser feito com base no preço fechado.
Posteriormente, utilizamos o buffer de cópia para preencher a nossa matriz de média móvel de acordo com a definição que criámos aqui para o buffer zero, começamos com a vela zero – que é a vela actual – e copiamos os valores para três velas e armazenamo-los na matriz.
E para obter o valor de que precisamos, basta-nos olhar para o valor da vela um na nossa matriz de média móvel e atribuímos o valor para parar o valor médio móvel.
Agora que já fizemos isso, podemos verificar se o valor médio móvel de paragem está abaixo do preço actual e a segunda condição será se o valor médio móvel de paragem for maior do que o valor médio de paragem e se for esse o caso, queremos chamar uma função que se chama check sma buy trailing stop, vamos passar o preço pedido e o valor médio móvel de paragem como parâmetros aqui e depois queremos atribuir o valor actual para a próxima chamada de função, por isso armazenamos o valor para o valor médio de paragem na variável chamada último valor médio móvel de paragem. Por favor lembrem-se que esta era uma variável estática, por isso vai manter os valores dentro desta função, bem, esta função não existe até agora, por isso precisamos de a criar agora, o nome da função será verificar sma buy trailing stop, usamos void porque não usamos um valor de retorno aqui e passamos o preço pedido e o valor médio de stop move value como parâmetros.
Agora vamos usar um laço para percorrer todas as posições abertas, usamos o símbolo „position get“ para obter o símbolo da posição actual porque precisamos de verificar se o símbolo actual no gráfico é igual ao símbolo da posição e se isto é verdade, obtemos o ticket da posição usando a função „position get integer position underscore ticket“.
Para obter a perda de paragem actual, usamos a posição get double e o parâmetro é o sl sl de sublinhado de posição e se a perda de paragem actual for inferior ao valor médio de paragem, queremos alterá-lo, o que é feito usando a modificação da posição comercial para o bilhete de posição actual e passamos o valor médio de paragem como o segundo parâmetro. O terceiro parâmetro seria usado quando gostaríamos de alterar o valor de take profit, mas não é o caso.
Finalmente, por favor, feche todos os loops e também feche a função que criámos e é este o caso.