Cruzamento de médias móveis no EA - página 2

 
Olá, esse código aqui EA com dois pares de Medias Moveis em confluencia, editaveis a seu bel gosto, faz entradas perfeitamente na proxima vela, coloquei extern para editar como desejarem, 
se alguem poder agregar TrailingStop eu agradeço, estou nessa etapa desse codigo. 
//+------------------------------------------------------------------+
//|                                                    EAFXTRADE.mq4 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "6.00"
#property strict


extern int MAGICMA = 1;
extern int periodo_menor = 3;
extern int periodo_maior = 7;

extern int periodo_conf_menor = 4;
extern int periodo_conf_maior = 12;

extern double Lote_Entrada= 0.01;
extern bool OperarSELL= true;
extern bool OperarBUY = true;
extern int Slippage = 50;
extern bool PararTrade = false;
extern int Takeprofit = 100;
extern int StopLoss = 200;


int total_de_ordem_venda_aberta = 0;
int total_de_ordem_compra_aberta = 0;





void OnTick()
{
    if(PararTrade==true)
     {
      return;
     }
      BuscaTotalOrdensAbertas(MAGICMA);
     checkFor_open(MAGICMA);
      return;
  
}
  
  
   
   bool obtem_sinal (int BUY_SELL)
{
   double Media_p = iMA(NULL,0,periodo_menor,0,MODE_SMA, PRICE_CLOSE,1);
   double Media_p_ant = iMA(NULL,0,periodo_menor,0,MODE_SMA, PRICE_CLOSE,2);
   
   double Media_M = iMA(NULL,0,periodo_maior,0,MODE_SMA, PRICE_CLOSE,1);
   double Media_M_ant = iMA(NULL,0,periodo_maior,0,MODE_SMA, PRICE_CLOSE,2);
   
   double Media_p_conf = iMA(NULL,0,periodo_conf_menor,0,MODE_SMA, PRICE_CLOSE,1);
   double Media_p_conf_ant = iMA(NULL,0,periodo_conf_menor,0,MODE_SMA, PRICE_CLOSE,2);
   
   double Media_M_conf = iMA(NULL,0,periodo_conf_maior,0,MODE_SMA, PRICE_CLOSE,1);
   double Media_M_conf_ant = iMA(NULL,0,periodo_conf_maior,0,MODE_SMA, PRICE_CLOSE,2);
   
   bool resultado= false;
   
   if(BUY_SELL == OP_SELL)
   {
     if((Media_p_ant > Media_M_ant)&&(Media_p < Media_M)&&(Media_p_conf_ant > Media_M_conf_ant)&&(Media_p_conf < Media_M_conf))
       resultado = true;
   else
       resultado = false;
   
   }
   else if (BUY_SELL == OP_BUY)
  {
     if((Media_p_ant < Media_M_ant)&&(Media_p > Media_M)&&(Media_p_conf_ant < Media_M_conf_ant)&&(Media_p_conf > Media_M_conf))
       resultado = true;
   else
       resultado = false;
   
   }
   return(resultado);
   
  }

  
  void checkFor_open(int MAGICMA_n)
  {
  int res;
  if(Volume[0]>1)
  return;
  
  if( IsTradeContextBusy() == true)
   return;
   
   RefreshRates();
   if(OperarSELL == true)
  {
      if((obtem_sinal(OP_SELL)==true)&&(total_de_ordem_venda_aberta==0)&& (total_de_ordem_compra_aberta==0))
      {
       res=OrderSend(Symbol(),OP_SELL,Lote_Entrada,Bid,Slippage,Bid + (StopLoss* Point),Bid - (Takeprofit*Point),"",MAGICMA_n,0,clrYellow);
      }
  }
  if(OperarBUY ==true)
  {
      if((obtem_sinal(OP_BUY)==true)&& (total_de_ordem_compra_aberta==0)&&(total_de_ordem_venda_aberta==0))
      {
      res=OrderSend(Symbol(),OP_BUY,Lote_Entrada,Ask,Slippage,Ask - (StopLoss* Point),Ask + (Takeprofit* Point),"",MAGICMA_n,0,clrGreen);
      }
  
  }
  
   return;  
  }
  
  void BuscaTotalOrdensAbertas(int MAGICMA_n)
  {
      int buys=0,sells=0;
      total_de_ordem_compra_aberta=0;
      total_de_ordem_venda_aberta=0;
      
      for(int i=0;i<OrdersTotal();i++)
      {
        if(OrderSelect(1,SELECT_BY_POS,MODE_TRADES)==false)
           break;
        
        if((OrderMagicNumber()==MAGICMA_n) && (OrderSymbol()==Symbol()))
        {
         if((OrderType()==OP_BUY))
         {
          total_de_ordem_compra_aberta++;
         }
         if((OrderType()==OP_SELL))
         {
          total_de_ordem_venda_aberta++;
         } 
       }
     }
   }
 
TraderPrado:

Blz Galera!

Dei uma olhada no fórum, mas não encontrei nada do tipo para minha dúvida.

Gostaria de saber se é possível colocar a abertura de ordem compra ou venda no exato momento do cruzamento das médias, 

e não no PRICE_CLOSE ou OPEN do próximo candle que se forma depois do cruzamento como de costume?

Ex: if (iMA(NULL,0,MediaCurta,0,MODE_SMA,PRICE_CLOSE,0) > iMA(NULL,0,MediaLonga,0,MODE_SMA,PRICE_CLOSE,0) && order_compra==true){

Eu já tenho uma dúvida onde não estou conseguindo capturar um candle no meio de 2 médias móveis. Minha intenção eh saber se o candle que está entre as médias móveis que não serão de close e sim de high e low ele está para compra ou venda após ele fechar os 30 minutos ou 15 minutos. Alguém pode me dar uma luz?