Olá, traders! Hoje vamos falar sobre um código simples que detecta uma nova barra ou candle no MetaTrader 5 assim que ele é recebido.
O princípio por trás desse código é bem simples. Primeiro, ele armazena o tempo da barra/candle anterior. Em seguida, adicionamos 60 segundos (equivalente a 1 minuto, mas você pode ajustar o tempo conforme sua necessidade) ao tempo da barra anterior, resultando no valor de fechamento da barra/candle atual.
Agora, quando:
Tempo Atual = valor de fechamento da barra/candle atual, significa que uma nova barra foi recebida ou a barra atual foi fechada.
Neste código, utilizamos uma variável booleana chamada NewBarRecived que serve como um sinalizador para evitar chamadas múltiplas deste bloco de código. Assim, ele é executado apenas uma vez por barra/candle. As funções Comment(); e playsound("ok.wav"); são usadas para checar a precisão do código; você pode removê-las se preferir.
O sinalizador é redefinido para falso quando o tempo atual ultrapassa o tempo de fechamento da barra atual, permitindo assim checar a chegada da próxima barra (veja os comentários no código).
//+------------------------------------------------------------------+ //| Novo Bar Detect.mq5 | //| por H A T Lakmal | //| https://t.me/Lakmal846 | //+------------------------------------------------------------------+ bool NewBarRecived = false; // Sinalizador para controle. //+------------------------------------------------------------------+ //| Função de inicialização do Expert | //+------------------------------------------------------------------+ int OnInit() { //--- criar timer EventSetTimer(60); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Função de desinicialização do Expert | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- destruir timer EventKillTimer(); } //+------------------------------------------------------------------+ //| Função de tick do Expert | //+------------------------------------------------------------------+ void OnTick() { datetime TimePreviousBar = iTime(_Symbol,PERIOD_M1,1); datetime TimeCurrentClose = TimePreviousBar + 60; // Tempo de fechamento da barra atual. datetime Time_Current = TimeCurrent(); if(Time_Current == TimeCurrentClose && NewBarRecived == false) { PlaySound("ok.wav"); // Para verificar a execução. NewBarRecived = true; // Atualiza o sinalizador para evitar chamadas múltiplas. // Seu código aqui ----- (Faça algo) } else if(Time_Current > TimeCurrentClose) { NewBarRecived = false; // Reinicia o sinalizador para a próxima barra. // Seu código aqui ----- (Faça algo) } Comment("\n" + "\n" + "Tempo da Barra Atual -: " + TimeToString(TimePreviousBar,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + "\n" + "Tempo de Fechamento Atual -: " +TimeToString(TimeCurrentClose,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + "\n" + "Tempo Atual -: " + TimeToString(Time_Current,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + "\n" +"\n" + "Uma Nova Barra Recebida -: " + NewBarRecived); // Para checar os cálculos } //+------------------------------------------------------------------+ //| Função do timer | //+------------------------------------------------------------------+ void OnTimer() { //--- } //+------------------------------------------------------------------+ //| Função de trade | //+------------------------------------------------------------------+ void OnTrade() { //--- } //+------------------------------------------------------------------+ //| Função ChartEvent | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- } //+------------------------------------------------------------------+
Publicações relacionadas
- MACD Sample: Um Guia Prático para o Expert Advisor no MetaTrader 5
- Combo Trader: O EA Atualizado para MetaTrader 4
- Como Criar Sinais de Negociação com MQL5 Wizard Usando Estrelas da Manhã e da Noite + Estocástico
- MQL5 Wizard: Sinais de Negociação com Padrões Candlestick e RSI no MetaTrader 5
- Trader Automático: RSI e MFI com Otimização Automática para MetaTrader 4