APRENDA TUTORIAL MQL5 BASICS – 23 COMO CODIFICAR UM CONSULTOR ESPECIALIZADO EM SAR PARABÓLICO 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.

 

Com MQL5 para Metatrader5 criamos um Expert Advisor que pode ser utilizado para comércio automatizado com o Paarabolic SAR Indicator. Este EA pode ser codificado em menos de 10 minutos e os sinais de negociação são realmente fáceis de compreender…

Neste vídeo, vamos criar este interessante Expert Advisor para o Indicador SAR Parabólico.
Vê aqui os pequenos pontos verdes, este é o sinal, sempre que os pontos estiverem acima do preço que é um sinal de venda e quando estiverem abaixo do preço que é um sinal de compra até que a direcção mude.
Assim, vamos descobrir como automatizar a SAR Parabólica com MQL5.
Para o fazer, clique num pequeno botão aqui ou prima F4 no seu teclado, agora deve ver a janela do Metaeditor e aqui quer clicar: „File/ New File/ Expert Advisor (modelo)“ do modelo, „Continue“, eu chamarei este ficheiro: „SimpleParabolicSAREA“, clique em „Continuar“, „Continuar“ e „Terminar“.
Agora pode remover tudo acima da função „OnTick“ e as duas linhas de comentário aqui.
Começamos por incluir uma declaração para incluir o ficheiro: „Trade.mqh“, este está incluído no MQL5 e vem com funções de negociação que vamos utilizar para abrir as nossas posições, por isso vamos criar uma instância de „CTrade“ que será chamada: „trade“ e vamos utilizá-la mais tarde.
Dentro da função „OnTick“ começamos por calcular o preço Ask e o preço Bid que é feito usando „SymbolInfoDouble“ para o símbolo actual no gráfico, com „SYMBOL_ASK“ – tudo em maiúsculas – obteremos o preço Ask e com „SYMBOL_BID“ obteremos o preço Bid. „NormalizeDouble“ e „_Digits“ é utilizado para calcular o número de dígitos atrás do ponto porque „_Digits“ armazena o número de dígitos após o ponto decimal e dependendo do par de moedas que pode ser de 3 dígitos ou 5 dígitos.
Vamos criar uma variável para o sinal que também lhe chamaremos „sinal“ e não atribuímos um valor, que vai ser calculado mais tarde.
Primeiro precisamos de criar uma matriz de preços para os preços no gráfico que é feita com „MqlRates“, usamos „ArraySetAsSeries“ para a nossa matriz de preços (PriceArray) para a ordenar a partir da vela actual para baixo e agora precisamos de preencher a matriz (PriceArray) com o chapéu de dados de preços, usando „CopyRates“ para o símbolo actual no gráfico e o período actualmente seleccionado.
A propósito, „_Symbol“ e este símbolo (Symbol()) é o mesmo para que também possamos usar „_Symbol“ e o mesmo é verdadeiro para „_Period“, começamos com a vela actual 0 (zero) e queremos obter os dados de preços para 3 velas e armazená-los na nossa tabela de preços (PriceArray).
Vamos criar outro array (mySARArray) para o Indicador Parabólico SAR, vamos definir (SARDefinition) o que vamos fazer, usamos a função „iSAR“ que vem com MQL5 para o símbolo actual no gráfico e o período actualmente seleccionado. Portanto, vamos descobrir aqui estes dois valores.
Escolha qualquer gráfico, clique em: „Insert/ Indicators/ Trend/ Parabolic SAR“ e aqui vemos que temos um valor de passo de 0,02 e um valor máximo de 0,2, por isso vamos clicar em „OK“, agora vê o Indicador e queremos clicar no gráfico com o botão direito do rato, seleccionar „Templates/ Save Template“ e guardá-lo como „tester“. tpl“, sim quero trocar o actual porque se não o fizer, posso não ver o Indicador no backtest, mas de volta ao código aqui estão os dois valores; o valor do passo e o valor máximo, vamos também ordenar esta matriz (mySARArray) usando „ArraySetAsSeries“ e desta vez usamos „CopyBuffer“ para preencher a nossa matriz de preços (mySARArray) de acordo com a definição SAR (SARDefinition) que criámos aqui para o buffer 0 (zero) – que é o único buffer que este Indicador tem – de vela 0 (zero) – que é a vela actual – para 3 velas e armazenar os valores na matriz SAR (mySARArray).
Agora podemos obter o último valor da SAR (LastSARValue) ao olhar para a vela 1 da matriz SAR (mySARArray). Eu uso „NormalizeDouble“ e 5 dígitos porque é isto que se vê quando se aponta o rato sobre um desses pontos Indicador, temos 5 dígitos atrás do ponto.
Portanto, vamos descobrir se temos um sinal de compra e isso seria se o último valor SAR (LastSARValue) estiver abaixo da lei da vela 1 na nossa tabela de preços (PriceArray) ou por outras palavras, se o ponto estiver abaixo da vela, atribuímos a palavra: „comprar“ ao nosso sinal.
No outro caso, um sinal de venda seria se o último valor SAR (LastSARValue) estiver acima do preço mais alto da vela 1 na nossa tabela de preços (PriceArray) e se for esse o caso atribuímos a palavra: „vender“ ao nosso sinal.
Assim, se o nosso sinal for igual a vender e „PositionsTotal“ for inferior a 1 – por outras palavras, não temos nenhuma posição aberta – usamos „trade.Sell“ para vender 10 microlote, caso contrário, se o sinal for igual a comprar e não tivermos posições abertas usamos „trade.Buy“ e compramos 10 microlote.