Como só entrar na próxima ordem no segundo candle após o TakeProfit ou StopLoss?

Kleuton Novais  

Amigos sou iniciante em MQL5 já programo em Php.

Preciso filtrar a próxima operação para que seja executa somente após o segundo candle após acionar o Take ou  Stop da Ordem. Não sei como isso é possível em um if de MQL5.

Pensei em algo assim é uma ideia:

/// Pega a hora do candle atual [0]
horaCandleAtual = TimeToString(candle[0].time, TIME_MINUTES); 


if( acionaTAKE || acionaSTOP){

 horaCandleStop = TimeToString(candle[0].time, TIME_MINUTES); /// Pega a hora do candle que foi saída em TK ou SL

}

/// IF para entrada de novas ordens
if( Preço > MediaMove20 && horaCandleAtual != horaCandleStop ){

 acionaCOMPRA;

}

Estou usando as ordem dentro do evento OnTick();

Também tenho outra duvida, parece ser possível fazer isso dentro do evento   OnTrade() é possível pegar os eventos escritos e variáveis dentro do OnTrade() e executa os if() dentro do OnTick() ???

Vinicius Pereira De Oliveira  
Kleuton Novais:

Amigos sou iniciante em MQL5 já programo em Php.

Preciso filtrar a próxima operação para que seja executa somente após o segundo candle após acionar o Take ou  Stop da Ordem. Não sei como isso é possível em um if de MQL5.

Pensei em algo assim é uma ideia:

Estou usando as ordem dentro do evento OnTick();

Também tenho outra duvida, parece ser possível fazer isso dentro do evento   OnTrade() é possível pegar os eventos escritos e variáveis dentro do OnTrade() e executa os if() dentro do OnTick() ???

Boa tarde!


Veja se essa função funciona:

//+------------------------------------------------------------------+
//| Verifica se o intervalo para o próximo trade foi cumprido        |
//+------------------------------------------------------------------+
bool CheckTradePause()
  {
   //--- Determina quantas barras até o próximo trade
   datetime time_start = iTime(_Symbol, PERIOD_CURRENT, 1);
//   datetime time_start = iTime(_Symbol, PERIOD_CURRENT, 2);
//   datetime time_start = iTime(_Symbol, PERIOD_CURRENT, 3);

   if(HistorySelect(time_start, TimeCurrent()))
     {
      for(int i = HistoryDealsTotal() - 1; i >= 0; i--)
        {
         const ulong Ticket = HistoryDealGetTicket(i);

         if(HistoryDealGetString(Ticket, DEAL_SYMBOL) == _Symbol && HistoryDealGetInteger(Ticket, DEAL_MAGIC) == MAGICNUM)
           {return(false);}
        }
     }
   else
     {
      Print("Erro ao recuperar o histórico de operações ...");
      return(false);
     }

   //--- Intervalo cumprido
   return(true);
  }


Veja também OnTradeTransaction() ...

Documentação sobre MQL5: Manipulação de eventos / OnTradeTransaction
Documentação sobre MQL5: Manipulação de eventos / OnTradeTransaction
  • www.mql5.com
OnTradeTransaction - Manipulação de eventos - Referência MQL5 - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5
David.fdl  
Vinicius de Oliveira #:

Boa tarde!


Veja se essa função funciona:


Veja também OnTradeTransaction() ...

Quer dizer que se o timeframe for de 5 minutos, a proxima operação será após 5 minutos, ou seja, no candle seguinte?

Razão: