Asesores Expertos: cheduecoglioni

 

cheduecoglioni:

Esperamos cuando TP o SL se activen, y después de esto abrimos una posición en la dirección opuesta. Se comprueba que los recursos sean suficientes antes de enviar la orden comercial. OnTradeTransaction.

Autor: Vladimir Karputov

 

Hola mi amigo , Vladimir.

La condición era muy interesante para mí:

            if( m_trade.ResultDeal()==0 )
              {
               Print("Buy -> false. Result Retcode: ",m_trade.ResultRetcode(),
                     ", description of result: ",m_trade.ResultRetcodeDescription());
              }

Las siguientes condiciones son correctas para la función OrderSendAsync() o Pending Order ?

            if( m_trade.ResultDeal()==0  ||  m_trade.ResultOrder()==0 )
              {
               Print("Buy -> false. Result Retcode: ",m_trade.ResultRetcode(),
                     ", description of result: ",m_trade.ResultRetcodeDescription());
              }
 
Automated-Trading:

cheduecoglioni:

Autor: Vladimir Karputov

Muy bueno, ¿cómo puedo utilizar este E A? Me encantó su razonamiento, siempre quise un robot en este parámetro descrito

 
sztusz1 :
Muy bueno, ¿cómo puedo utilizar este E A? Me encanta su razonamiento, siempre he querido un robot en este parámetro descrito

Adjuntar el indicador a los gráficos de símbolos. Eso es todo.

 
Las victorias están bien, ¡y sería mejor si pudiéramos añadir a Martin!
 
¿Cuál es la condición para abrir la primera posición? ¿O hay que abrirla manualmente?
 
284954 #:
¿Cuál es la condición para abrir la primera posición? ¿O tiene que abrirla manualmente?

El EA espera a que se active un TP o SL, y luego abre una posición en la dirección opuesta. Comprueba si hay suficiente dinero antes de enviar una solicitud de operación. OnTradeTransaction.

Por ejemplo, tenemos una posición abierta de Compra. Una vez que se activa TP o SL, se abre una nueva posición de Venta. Entonces, después de la activación de TP o SL, se abre una nueva posición de Compra.

El cierre de una operación se monitoriza en"OnTradeTransaction":

//+------------------------------------------------------------------+
//| Función TradeTransaction|
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//--- obtener el tipo de transacción como valor de enumeración 
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- si la transacción es el resultado de la adición de la transacción en la historia
   if(type==TRADE_TRANSACTION_DEAL_ADD)
     {
      long     deal_entry        =0;
      long     deal_type         =0;
      string   deal_symbol       ="";
      long     deal_magic        =0;
      long     deal_time         =0;
      if(HistoryDealSelect(trans.deal))
        {
         deal_entry=HistoryDealGetInteger(trans.deal,DEAL_ENTRY);
         deal_type=HistoryDealGetInteger(trans.deal,DEAL_TYPE);
         deal_symbol=HistoryDealGetString(trans.deal,DEAL_SYMBOL);
         deal_magic=HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
         deal_time=HistoryDealGetInteger(trans.deal,DEAL_TIME);
        }
      else
         return;
      if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)
        {
         if(deal_entry==DEAL_ENTRY_OUT)
           {
            if(deal_type==DEAL_TYPE_BUY || deal_type==DEAL_TYPE_SELL)
              {
               if(deal_type==DEAL_TYPE_BUY)
                  m_close_pos_type=POSITION_TYPE_SELL;
               else if(deal_type==DEAL_TYPE_SELL)
                  m_close_pos_type=POSITION_TYPE_BUY;
               else
                  return;
               m_is_trade=true;
              }
           }
         else if(deal_entry==DEAL_ENTRY_IN)
           {
            m_is_trade=false;
           }
        }
     }
  }