Robo para Operar na Abertura de Cada Candle

 
Olá pessoal! Preciso criar um código que opere na abertura de cada candle. Só isso. A ideia parece simples comparada com as estratégias comuns. Infelizmente meu conhecimento em lógica e programação é limitado e não estou conseguindo progredir sozinho.

Preciso inserir os Stops Loss e Gain na ordem também claro. 

É só isso que preciso. Entrar na abertura de cada candle com os Stops já programados.

Já pensei em opções como programar com base no valor de fechamento do candle anterior. Ou pelo tempo do candle (a cada 5 min por exemplo), mas não consegui elaborar o código. 

Se alguém puder ajudar, dar dicas, ficarei muito grato. Já faz dias que não consigo progredir.
 
Talvez possa utilizar no código um indicador de tempo do candle como o Candle Countdown, mas não sei se é possível.
 
XeliPin:
Talvez possa utilizar no código um indicador de tempo do candle como o Candle Countdown, mas não sei se é p

Boa tarde.

Aplicativos de negociação para o MetaTrader 5 por encomenda
Aplicativos de negociação para o MetaTrader 5 por encomenda
  • www.mql5.com
1. Expert Advisors baseado no indicador Blue Renko Bars do mql5 codebase: Indicador Blue Renko Bars: https://www.mql5.com/pt/code/21845 2. A primeira e ideia do sistema de negociação é a seguinte: são realizadas as entradas à mercado quando houver a abertura de uma SEGUNDA VELA. 3. As posições são encerradas em sinais opostos: as posições de...
 
XeliPin:
Olá pessoal! Preciso criar um código que opere na abertura de cada candle. Só isso. A ideia parece simples comparada com as estratégias comuns. Infelizmente meu conhecimento em lógica e programação é limitado e não estou conseguindo progredir sozinho.

Preciso inserir os Stops Loss e Gain na ordem também claro. 

É só isso que preciso. Entrar na abertura de cada candle com os Stops já programados.

Já pensei em opções como programar com base no valor de fechamento do candle anterior. Ou pelo tempo do candle (a cada 5 min por exemplo), mas não consegui elaborar o código. 

Se alguém puder ajudar, dar dicas, ficarei muito grato. Já faz dias que não consigo progredir.


Olá XeliPin


Para monitorar um novo candle:


// declare essas variáveis globais:

datetime     candleNovo;
datetime     candleAtual;
MqlRates     candles[];







// dentro do evento OnInit() adicione essa linha:


ArraySetAsSeries(candles,true);







// dentro do evento OnTick() adicione esse código:

CopyRates(Symbol(),Period(),0,1,candles);  // Atualiza no array "candles" os dados do candle mais recente
candleAtual = candles[0].time;             // recebe o horário do candle atual (posição 0 no array)
   
if(candleAtual != candleNovo)              // faz a comparação entre os horários
{     
    candleNovo = candles[0].time;          // se forem diferentes, significa que é um candle novo, então atualize o valor de candleNovo e execute o seu código

    // implemente aqui seu código para o candle novo

} else
{

    // enquanto permanecer no mesmo candle, pode implementar algum código também

}

  


Espero que ajude!

 

vim procurar exatamente a mesma coisa. Quando um candle fechar colocar automaticamente stop loss e alvo baseado na distância q eu escolher. 


meu conhecimento em programação é 0


se alguém tiver ou conseguir modificar um para q faça isso, agradeço:


1- quando a barra atual fechar, colocar um stop de X% do tamanho da barra na direção do fechamento (exemplo, se for 0% e for uma barra de compra, vai entrar comprando com o stop exatamente no fundo dela)

2- colocar um alvo q é a multiplicação do stop. Ou seja, se for 1, vai colocar o alvo em 1x1 em relação ao risco


3- opção de filtro q só vai  entrar se a sombra/pavio for menor q Y%. Exemplo, se eu colocar 50% e essa barra fechar com um pavio desse tamanho no topo, ele NÃO vai comprar, só se o pavio for menos q que 50%


4- calcular o lote baseado na distancia da entrada e do fundo da barra (evidente q esses exemplos se invertem pra uma venda


mas só colocar stop e alvo baseado no fundo da barra anterior já é suficiente

 
ummagummabr:

vim procurar exatamente a mesma coisa. Quando um candle fechar colocar automaticamente stop loss e alvo baseado na distância q eu escolher. 


meu conhecimento em programação é 0


se alguém tiver ou conseguir modificar um para q faça isso, agradeço:


1- quando a barra atual fechar, colocar um stop de X% do tamanho da barra na direção do fechamento (exemplo, se for 0% e for uma barra de compra, vai entrar comprando com o stop exatamente no fundo dela)

2- colocar um alvo q é a multiplicação do stop. Ou seja, se for 1, vai colocar o alvo em 1x1 em relação ao risco


3- opção de filtro q só vai  entrar se a sombra/pavio for menor q Y%. Exemplo, se eu colocar 50% e essa barra fechar com um pavio desse tamanho no topo, ele NÃO vai comprar, só se o pavio for menos q que 50%


4- calcular o lote baseado na distancia da entrada e do fundo da barra (evidente q esses exemplos se invertem pra uma venda


mas só colocar stop e alvo baseado no fundo da barra anterior já é suficiente


Olá  ummagummabr


Até onde eu sei os candles só registram o horário de ABERTURA, ou seja, se você quer executar alguma ação no fechamento, vai ter que esperar a abertura do novo candle, mas estamos falando aqui numa questão de fração de segundos.


Ou você pode criar um timer do momento da abertura do candle e disparar quando faltar por exemplo 1 segundo para o fechamento, mas eu não acho que isso seria uma boa ideia. Prefiro ficar com a primeira opção, esperar abrir o novo candle, pois se o ativo tiver boa liquidez não deverá haver problemas.


Quanto à sua estratégia de setup que você descreveu, ela é um robô completo, que precisa ser propriamente desenvolvida e testada.

 
Eduardo Fernando Teixeira:


Olá XeliPin


Para monitorar um novo candle:



Espero que ajude!

Muiiittooo obrigado! Vou tentar.

 

Existe um artigo e uma classe já pronta que possa ajudar:


https://www.mql5.com/pt/articles/159

Handler de evento "nova barra"
Handler de evento "nova barra"
  • www.mql5.com
Os autores dos indicadores e especialistas sempre estiveram interessados em escrever o código compacto em termos de tempo de execução. Você pode resolver este problema a partir de diferentes ângulos. A partir deste amplo tópico neste artigo, cobriremos o problema, que aparentemente foi solucionado: verifique por uma nova barra. Este é um meio...
 
Kl_ Urt:

Existe um artigo e uma classe já pronta que possa ajudar:


https://www.mql5.com/pt/articles/159

Muito obrigado!!!

Razão: