Asesores Expertos: cheduecoglioni
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()); }
¿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; } } } }
cheduecoglioni:
Autor: Vladimir Karputov