Discusión sobre el artículo "Biblioteca para el desarrollo rápido y sencillo de programas para MetaTrader (Parte I): Concepto, organización de datos y primeros resultados" - página 6

 
pennyhunter:

¡Muchas gracias!

Soy bastante nuevo en la programación y tenía miedo de sus artículos porque se ven tan críptico y no tienen imágenes en ellos AHAHAHA.

Pero no, en realidad están muy bien escritos y bien traducidos y me están ayudando a dar el salto a la programación orientada a objetos.

:)

OK. De nada

 

Aparentemente hay un error en el siguiente pasaje:

+------------------------------------------------------------------+
| Devuelve la bandera de cierre de posición StopLoss |
+------------------------------------------------------------------+
bool COrder::OrderCloseByStopLoss(void) const
{
#ifdef __MQL4__
return(::StringFind(::OrderComment(),"[sl")>WRONG_VALUE);
#else
return
(
this.Status()==ORDER_STATUS_HISTORY_ORDER ? this.OrderReason()==ORDER_REASON_SL :
this.Status()==ORDER_STATUS_DEAL ? this.OrderReason()==DEAL_REASON_SL : false
);
#endif
}
//+------------------------------------------------------------------+
//| Devuelve la bandera para cerrar la posición por TakeProfit |
//+------------------------------------------------------------------+
bool COrder::OrderCloseByTakeProfit(void) const
{
#ifdef __MQL4__
return(::StringFind(::OrderComment(),"[tp")>WRONG_VALUE);
#else
return
(
this.Status()==ORDER_STATUS_HISTORY_ORDER ? this.OrderReason()==ORDER_REASON_TP :
this.Status()==ORDER_STATUS_DEAL ? this.OrderReason()==DEAL_REASON_TP : false
);
#endif
}

El mensaje devuelto es: 'Status' - identificador no declarado Order.mqh

Lamentablemente no puedo solucionarlo.

Gracias.

 
albertpess:

Aparentemente hay un error en el siguiente pasaje:

+------------------------------------------------------------------+
| Devuelve la bandera de cierre de posición StopLoss |
+------------------------------------------------------------------+
bool COrder::OrderCloseByStopLoss(void) const
{
#ifdef __MQL4__
return(::StringFind(::OrderComment(),"[sl")>WRONG_VALUE);
#else
return
(
this.Status()==ORDER_STATUS_HISTORY_ORDER ? this.OrderReason()==ORDER_REASON_SL :
this.Status()==ORDER_STATUS_DEAL ? this.OrderReason()==DEAL_REASON_SL : false
);
#endif
}
//+------------------------------------------------------------------+
//| Devuelve la bandera para cerrar la posición por TakeProfit |
//+------------------------------------------------------------------+
bool COrder::OrderCloseByTakeProfit(void) const
{
#ifdef __MQL4__
return(::StringFind(::OrderComment(),"[tp")>WRONG_VALUE);
#else
return
(
this.Status()==ORDER_STATUS_HISTORY_ORDER ? this.OrderReason()==ORDER_REASON_TP :
this.Status()==ORDER_STATUS_DEAL ? this.OrderReason()==DEAL_REASON_TP : false
);
#endif
}

El mensaje devuelto es: 'Status' - identificador no declarado Order.mqh

Lamentablemente no puedo solucionarlo.

Gracias.

MetaTrader 4 ? o MetaTrader 5 ?

 

Lo mismo ocurre en:

m_long_prop[ORDER_PROP_PROFIT_EN] = this.ProfitInPoints();

e

m_double_prop[this.IndexProp(ORDER_PROP_PROFIT_FULL)] = this.ProfitFull();

Ambos snippets dentro del constructor paramétrico Closed

Gracias

 
Artyom Trishkin:

MetaTrader 4 ? o MetaTrader 5 ?

MT5
 
albertpess :
MT5

Me gustaría saber qué está haciendo.

Por favor, inserte el código utilizando este botón en la barra de herramientas de la ventana de entrada de mensajes

 

Estoy estudiando sus artículos. Mi objetivo es aprender a trabajar con clases.

 
Artyom Trishkin:

Me gustaría saber qué está haciendo.

Por favor, inserte el código utilizando este botón en la barra de herramientas de la ventana de entrada de mensajes

bool COrder::OrderCloseByStopLoss(void) const
  {
#ifdef __MQL4__
   return(::StringFind(::OrderComment(),"[sl")>WRONG_VALUE);
#else 
   return
     (
     this.Status()==ORDER_STATUS_HISTORY_ORDER ? this.OrderReason()==ORDER_REASON_SL : 
     this.Status()==ORDER_STATUS_DEAL ? this.OrderReason()==DEAL_REASON_SL : false
     );
#endif 
  }
//+------------------------------------------------------------------+
//| Devuelve la bandera para cerrar la posición por TakeProfit ||
//+------------------------------------------------------------------+
bool COrder::OrderCloseByTakeProfit(void) const
  {
#ifdef __MQL4__
   return(::StringFind(::OrderComment(),"[tp")>WRONG_VALUE);
#else 
   return
     (
      this.Status()==ORDER_STATUS_HISTORY_ORDER ? this.OrderReason()==ORDER_REASON_TP : 
      this.Status()==ORDER_STATUS_DEAL ? this.OrderReason()==DEAL_REASON_TP : false
     );
#endif 
  }
 

Спасибо.

Я не знал об этой функции.

 
albertpess :

Estoy estudiando sus artículos. Mi objetivo es aprender a trabajar con clases.

¿Funciona el programa de prueba incluido con el artículo?
¿Qué errores se producen?
Por favor, descríbalos con más detalle.