Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 223
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Por la tarde. Por favor, ayude a un comerciante principiante a encontrar un asesor adecuado para el comercio automatizado, que es capaz de abrir órdenes bloqueadas en los pares de divisas con la posibilidad de ajuste arbitrario de take profit. Gracias.
Alternativa: declarar en todos ellos el método Type, en el que se devuelve el identificador de tipo.
Je, si pudieras editar el código fuente... No hay que simplificar tanto las cosas. Y todavía - ¿hay un nombre de clase en mql5?
Je, si pudieras editar el código fuente... No hay que simplificar tanto las cosas. Sin embargo, ¿hay alguna manera de que mql5 sepa el nombre de una clase?
Mira en la dirección de las plantillas. Este código devolverá el nombre de la clase o un tipo primitivo.
#include<Trade\Trade.mqh>
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
voidOnStart()
{
//---
El comercio de CTrade;
double d_value=M_PI;
int i_value=INT_MAX;
Print("d_value: type=",GetTypeName(d_value),", value=", d_value);
Print("i_value: type=",GetTypeName(i_value),", value=", i_value);
Print("comercio: tipo=",GetTypeName(comercio);
//---
}
//+------------------------------------------------------------------+
//| Devuelve el tipo en forma de cadena|
//+------------------------------------------------------------------+
template<typename T>
string GetTypeName(const T&t)
{
//--devuelve el tipo como una cadena
return(typename(T))
//---
}
Mira hacia los patrones. Este código devolverá el nombre de una clase o tipo primitivo.
#include<Trade\Trade.mqh>
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
voidOnStart()
{
//---
El comercio de CTrade;
double d_value=M_PI;
int i_value=INT_MAX;
Print("d_value: type=",GetTypeName(d_value),", value=", d_value);
Print("i_value: type=",GetTypeName(i_value),", value=", i_value);
Print("comercio: tipo=",GetTypeName(comercio);
//---
}
//+------------------------------------------------------------------+
//| Devuelve el tipo en forma de cadena|
//+------------------------------------------------------------------+
template<typename T>
string GetTypeName(const T&t)
{
//--devuelve el tipo como una cadena
return(typename(T))
//---
}
¡Tengo algo! Pero no funciona con new - en el código hay un ejemplo de lo que necesito - ¿puede alguien sugerir cómo?
¡Tengo algo! Pero no funciona con new - hay un ejemplo en el código de lo que necesito - ¿alguien puede sugerir alguna forma?
¿Puede alguien explicarme por qué este código no funciona en el probador, mientras que en tiempo real funciona!!!? En concreto, me interesa saber por qué en el probador, después de HistorySelect(0, TimeCurrent()) el HistoryOrderGetInteger...
Captura de pantalla en el probador de estrategias:
Captura de pantalla en tiempo real en la demo:
p.d. Lo que es interesante, la primera orden en el probador se procesa correctamente, las otras no. Además, si comentamos HistroryOrderSelect(ticketOrder), obtenemos un mensaje en el Probador de Estrategias de que la orden no ha sido seleccionada y en el Probador de Estrategias, todo empieza a funcionar, excepto la primera orden.
Y tengo algún problema con HistorySelect(). Abro una posición con el script enviando una orden de mercado, y si se abre una operación, compruebo inmediatamente el número de operaciones en el historial desde el lanzamiento del script, y lo compruebo 10 veces con un intervalo de un segundo. Obviamente, debe haber un comercio. Aquí está el guión:
Y aquí está el resultado en Alfa-Forex:
Se realiza una operación, pero no aparece en el historial ni siquiera después de 10 segundos. ¿Qué es? ¿Un error de MT? ¿Fallo en el Alfa? ¿Algún tipo de chip que no conozco? Alpari tiene el mismo script funcionando normalmente, sólo ocasionalmente se detecta el cero en el primer paso (cero) (bueno, es comprensible - la historia aún no ha tenido tiempo de actualizarse), todos los demás pasos son uno. Pero después de diez segundos, ¿por qué no hay acuerdo en la historia?
Y tengo algún problema con HistorySelect(). Abro una posición con el script enviando una orden de mercado, y si se ha abierto una operación, miro inmediatamente el número de operaciones en el historial desde que se lanzó el script, y lo compruebo 10 veces con un intervalo de un segundo. Obviamente, debe haber un comercio. Aquí está el guión:
Y aquí está el resultado del corredor Alfa:
Se realiza una operación, pero no aparece en el historial ni siquiera después de 10 segundos. ¿Qué es esto? ¿Un error de MT? ¿Fallo en el Alfa? ¿Algún tipo de chip que no conozco? El script de Alpari funciona normalmente, sólo ocasionalmente se detecta el cero en el primer paso (cero) (bueno, es comprensible - la historia aún no ha tenido tiempo de actualizarse), todos los demás pasos son uno. Pero, ¿por qué no hay acuerdo en la historia en diez segundos?
Lo que me molesta es la siguiente línea
datetime dtStartTime = TimeCurrent();
¿Estás seguro de que dtStartTime y TimeCurrent() no son el mismo número por el momento para? Tal vez el redondeo a un segundo pone la transacción completada fuera de dtStartTime.
La línea
datetime dtStartTime = TimeCurrent();
¿Está seguro de que dtStartTime y TimeCurrent() no son el mismo número por el tiempo para? Quizás el redondeo a un segundo pone la transacción completada fuera de dtStartTime.
E incluso si es uno, ¿no debería MT emitir el historial de ese segundo? Es decir, ¿no se emite el historial dentro de los límites especificados, INCLUYENDO los propios límites?
Pero de todos modos, he intentado escribir tanto dtStartTime = TimeCurrent () - 1, como dtStartTime = TimeCurrent() - 10. No funciona.