Discusión sobre el artículo "La escritura de un Expert Advisor mediante las librerías estándar de las clase de trading de MQL5" - página 3
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
También hay líneas en la clase COrderInfo
return(FormatType(str,Type())); ... FormatType(type,Type()) ... if(m_type==Type() && m_state==State() &&Pero la función Type() está ausente en la clase.
En el apartado 1.4 del artículo se proporcionan las características de la clase COrderInfo, que, a juzgar por la descripción, está diseñada para trabajar con órdenes pendientes activas. Se sugiere hacer lo siguiente:"Para utilizar esta clase para obtener las propiedades de las órdenes pendientes, primero solicitamos el número total de órdenes y las seleccionamos por ticket de orden"
Pero si la función HistorySelect() está diseñada para consultarel "histórico de transacciones y órdenes", es decir, para consultar órdenes históricas, ¿por qué utilizar esta función cuando se consulta el número total de órdenes pendientes activas?En la clase COrderInfo ...
Pero la función Type() está ausente en la clase.
¿Puede alguien explicarlo? Aquí hay un trozo de código de la clase CDealInfo:
Aquí la función CDealInfo::FormatDeal(string& str) contiene esta línea:
symbol.Name(Symbol());A su vez, la función Symbol() está definida tanto en la propia clase CDealInfo como entre las funciones estándar del terminal cliente. ¿Qué función se pasa como argumento a la función symbol.Name()? ¿Por qué regla?¿Puede alguien explicarlo? Aquí hay un trozo de código de la clase CDealInfo:
Aquí la función CDealInfo::FormatDeal(string& str) contiene esta línea:
A su vez, la función Symbol() está definida tanto en la propia clase CDealInfo como entre las funciones estándar del terminal cliente. ¿Qué función se pasa como argumento a la función symbol.Name()? ¿Por qué regla?Aquí funciona la misma regla que con el ámbito de las variables. Si una variable se declara con un mismo nombre a nivel global y local, dentro del ámbito local el nombre apuntará a la variable local y fuera a la global.
Resulta que si una función estándar se sobrecarga dentro de una clase, el cuerpo de la sobrecarga se llamará en la propia clase y el cuerpo de la función estándar se llamará a nivel global. El cuerpo de la función sobrecargada puede ser llamado a nivel global a través del puntero de la clase.
Aquí funciona la misma regla que con el ámbito de las variables. Si una variable se declara con el mismo nombre a nivel global y local, dentro del ámbito local el nombre apuntará a la variable local, y fuera a la global.
Resulta que si una función estándar se sobrecarga dentro de una clase, el cuerpo de la sobrecarga se llamará en la propia clase y el cuerpo de la función estándar se llamará a nivel global. El cuerpo de la función sobrecargada puede ser llamado a nivel global a través del puntero de la clase.