Para começar a criar a estrutura do robô clique no menu Arquivo e selecione a opção Novo, ou simplesmente utilize a tecla de atalho CTRL + N.
Irá abrir uma caixa de diálogo solicitando que você escolha o tipo de arquivo que deseja criar. Selecione a opção Expert Advisor (modelo) e clique em avançar.
Agora o assistente irá solicitar que você preencha seus dados: Informe seu nome, o nome do seu robô, seu site (não é obrigatório) e clique em avançar.
Na próxima tela clique em avançar e deixe as duas opções desmarcadas, como na figura abaixo.
Agora deixe marcada a opção OnTester e clique em concluir.
Ótimo! Agora já temos a estrutura do nosso robô e podemos começar a configurá-lo.
É sempre bom começarmos um robô fazendo comentários explicando para que ele serve, como ele trabalha. Veja como é fácil:
Os comentários ficam entre /* seu comentário */
Ok! Agora nós precisamos configurar as propriedades:
Legal! No método EUREKA aprendemos que precisamos de Pontos de Entrada, Pontos de Saída, STOP (parada) e TAKE (alvo de lucro).
Aprendemos também que podemos ter Entradas de Compra e Entradas de Venda em um mesmo gráfico.
Neste tutorial vou mostrar apenas como fazer para entrada de compra e você já poderá operar com o seu robô para ordens de compra em qualquer par de moedas.
Então vamos precisar:
● Ponto de Entrada de Compra ● Stop inicial de compra
● Alvo de Lucro
Essas serão as entradas (inputs) do nosso robô.
Veja como é fácil configurar os input de entrada do nosso robô.
Atenção: Não esqueça de ir salvando as alterações durante a execução.!
input double PontoCompra; input double StopInicial; input double AlvodeLucro;
veja o que significa:
● input quer dizer entrada.
● double quer dizer do tipo moeda: Isso quer dizer que vamos informar valores assim, com ponto: 1.2345. Não utilizamos ,
(vírgula) para valores. Se estivermos utilizando o par de moedas EURUSD, quer dizer que a cotação do dólar para comprar 1 euro é de 1.2345.
● PontoCompra = Foi o nome que eu dei para o Ponto de Compra, precisa ser tudo junto, pois trata-se de uma variável, ou seja, um lugar que vai guardar uma informação. Tipo: 1.2345.
● StopInicial = Foi o nome que eu dei para a variável que guarda o Ponto inicial de STOP de compra.
● AlvodeLucro = Foi o nome que eu dei para a variável que guarda o Take Profit, ou seja, o Ponto do Alvo de Lucro da operação de compra.
Dá uma olhada como ficou:
Agora vamos fazer o corpo do robô:
O corpo do robô é onde vamos colocar a nossa estratégia. É lá que vamos mandar que o robô abra uma ordem automaticamente quando o preço chegar no ponto de entrada de compra. É no corpo do robô onde vamos posicionar nossos stops e também nosso alvo de lucro. Aí ele vai só executar. É mais simples que você pensa. Veja só!
Este é o corpo do robô: int OnInit() { return(INIT_SUCCEEDED); }
Vamos entender o que quer dizer:
int OnInit() /*ao iniciar o robô*/
{ /*Iniciando o corpo do robô*/
/* Espaço onde eu coloco a estratégia*/
return(INIT_SUCCEEDED); /* Retorno do robô se tudo deu certo*/ } /* Fim do corpo da minha estratégia*/
Vamos colocar a estratégia:
Observe abaixo a estratégia com os pontos de compra e alvos marcados.
Isso quer dizer que se o preço do EURJPY romper o valor de 119.87, vamos dar uma entrada de compra, ou seja, seja maior 119.87.
Para isso podemos dizer que: Se o cotação > 119.87
{
abrir um ordem de compra. }
No código vai ficar assim: if (Ask > 119.87) { } Se = if
Ask = Cotação de Compra
Agora se deixarmos somente assim este código vai ser executado somente uma vez. Precisamos fazer que ele seja executado até que uma ordem seja aberta.
Enquanto O total de Ordens for igual a zero faça um loop.
while (OrdersTotal() == 0) { if (Ask > 119.87) { } }
while quer dizer Enquanto
OrdersTotal() == 0 quer dizer Total de ordens igual a zero
Bom, já testamos se o número total de ordens for igual a zero e se o preço for maior que 119.87. Agora é só abrir a ordem com do código abaixo:
Para abrir uma ordem vamos precisar do volume, da cotação atual, do STOP e do Take (alvo).
T = OrderSend(Symbol(),OP_BUY,volume,cotação,3,Stop,Take,Comentário’’,255,0,clrNONE);
T é uma variável para o sistema guardar as informações da ordem. É o ticket.
OrderSend = Abertura da ordem = Ordem Enviada. Symbol() = Captura o par de moedas atual.
OP_BUY = Abre ordem de compra
Volume = Volume de abertura da ordem. Exemplo: 0.01
Cotação = Valor do ASK, valor da cotação no momento da abertura da ordem
STOP = Ponto de parada Take = Alvo de Lucro
Comentário = Qualquer coisa que você quiser colocar
Pronto! Você acabou de fazer seu primeiro robô de investimentos. Observe que este robô serve para qualquer estratégia que você quiser colocar. Desde que você tenha o ponto de entrada, take e o stop.
Você deve agora compilar seu robô. Clique no botão compilar e veja se não retornou nenhum erro.
Agora é só você ir até o metatrader e clicar, segurar e arrastar o seu robô que está no painel navegador para cima do seu gráfico. Aqui eu usei o EURJPY, mas ele pode ser usado para qualquer par de moedas.
Observe que o robô só deixa abrir uma ordem de cada vez. Se você quiser configurá-lo para abrir mais ordens é só alterar para
while (OrdersTotal() <= 4)
Assim ele abre até quatro ordens. É só mudar o número e configurar. Mas, atenção! Não se esqueça de calcular se a sua conta aguenta a abertura de tantas ordens.
Falei! Falei em códigos o tempo todo! O nome desses códigos é
linguagem MQL4. É uma linguagem de programação para você criar robôs no MetaTrader4. Não quis falar antes pra não ficar técnico demais, né!
Acessem o site www.elaineleao.com.br, tem muito conteúdo lá. O canal do youtube também.
É isso! Abraços
DISCLAIMER
As informações aqui contidas são meramente indicativas, e não constituem nenhuma declaração ou garantia, de forma expressa ou implícita. Este material tem caráter meramente informativo e não deve ser entendido como análise de valor do investimento, material
promocional, oferta de compra ou venda, recomendação de
investimentos, sugestão de alocação ou adoção de estratégias por parte dos destinatários. Nós não nos responsabilizamos por decisões de investimentos que venham a ser tomadas com base nas
informações divulgadas. As informações ora veiculadas não levam em consideração os objetivos de investimento, situação financeira ou necessidade específicas de cada investidor. Os investidores devem obter orientação financeira independente, com base em suas
características pessoais, e avaliar cuidadosamente todas as informações disponíveis no prospecto e no regulamento de cada investimento, antes de tomar uma decisão de investimento. Nós nos eximimos de qualquer responsabilidade por quaisquer prejuízos, diretos ou indiretos, que venham a decorrer do conteúdo deste material.