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
Deja que los desarrolladores lo solucionen. aquí hay una captura de pantalla de 3 ejecuciones de este script.
No me funciona.
Error: antes funcionaba, pero ahora no.
Gracias por su mensaje.
Seguiremos buscando.
Se ha encontrado un pequeño error en el método PrintCheckResult (archivo Trade.mqh, clases Trade, clase CTrade).
void CTrade::PrintCheckResult(void) const
{
printf("CheckResult");
// printf("%d,%f,%f,%f,%f,%f,'%s'", - el penúltimo parámetro es innecesario
printf("%d,%f,%f,%f,%f,%f,'%s'",
m_check_result.retcode,m_check_result.balance,m_check_result.equity,
m_check_result.margin,m_check_result.margin_free,m_check_result.margin_level,
m_check_result.comment);
}
En lugar de la cadena: printf("%d,%f,%f,%f,%f,%f,%f,'%s'", - comentado por mí
debería haber una línea: printf("%d,%f,%f,%f,%f,%f,%f,%f,'%s'",
Lo he comprobado, la función corregida funciona correctamente.
Error: antes funcionaba, pero ahora no.
Gracias por el mensaje. Estará disponible en la próxima actualización. Para que funcione en la versión actual, utilice la fundición explícita para la constante o la multiplicación en general
{
// вот так работает
Print(TimeCurrent()+2*PeriodSeconds(PERIOD_D1));
// а вот так нет (а раньше работало)
datetime time_end=0;
time_end=TimeCurrent()+(long) 2*PeriodSeconds(PERIOD_D1);
Print(time_end);
}
Se ha encontrado un pequeño error en el método PrintCheckResult (archivo Trade.mqh, clases Trade, clase CTrade).
Gracias por el mensaje.
Se arreglará pronto.
Gracias por su mensaje. Estará disponible en la próxima actualización. Para que funcione en la versión actual, utilice la fundición explícita para la constante o la multiplicación en general
Gracias. Si he entendido bien, se debe a la conversión de tipos. Es una pena que no exista este mensaje en tiempo de compilación, sería más fácil de encontrar
Los errores ENUM_TRADE_RETURN_CODES deben ser interpretados correctamente para poder manejarlos correctamente. ¿Existe algún material que los describa con detalle?
En particular, no se entienden del todo los siguientes errores:
10008
TRADE_RETCODE_PLACED
Pedido realizado
10021
TRADE_RETCODE_PRICE_OFF
No hay presupuestos disponibles para procesar la solicitud
10028
TRADE_RETCODE_LOCKED
Consulta bloqueada para su procesamiento
10029
TRADE_RETCODE_FROZEN
Orden o posición congelada
¿Puede alguien ayudar con este asunto?
Los errores ENUM_TRADE_RETURN_CODES deben ser interpretados correctamente para poder manejarlos correctamente. ¿Existe algún material que los describa en detalle?
En particular, no se entienden del todo los siguientes errores:
10008
TRADE_RETCODE_PLACED
Pedido realizado
10021
TRADE_RETCODE_PRICE_OFF
No hay presupuestos disponibles para procesar la solicitud
10028
TRADE_RETCODE_LOCKED
Consulta bloqueada para su procesamiento
10029
TRADE_RETCODE_FROZEN
Orden o posición congelada
¿Puede alguien ayudar con este asunto?
Todo lo anterior se refiere a los códigos que devuelve el servidor en respuesta a la solicitud del terminal. Por eso, todo se da en la sección "Códigos de retorno del servidor comercial".
Sería lógico suponer que la lista contiene algo más que errores.
Ahora en orden.
En cuanto a
10008
TRADE_RETCODE_PLACED
Pedido realizado
Sería lógico suponer que esta respuesta no es un error, sino que simplemente informa al cliente (el terminal de operaciones) de que la orden se ha colocado con éxito.
En este caso hay tres soluciones posibles:
1. No procesar la respuesta en absoluto;
2. procesar la colocación de la orden en el bloque OnTrade() - bastante aceptable, pero no muy correcto en mi opinión;
En mi opinión, esta es la mejor manera de procesar un comercio mecánico.
PS
Prefiero procesar las respuestas del servidor en el lugar de la orden y capturar el resultado de las acciones de un comerciante, el servidor u otros Asesores Expertos en OnTrade().
Por ejemplo, en OnTrade puede captar las operaciones de los operadores (colocar o eliminar una orden, o trabajar con las posiciones).
Con respecto a
10029
TRADE_RETCODE_FROZEN
La orden o la posición está congelada
Hay un determinado nivel en el que una posición o una orden están "congeladas" (cualquier operación con ellas está prohibida).
Este nivel es una distancia al precio actual en la que el servidor prohíbe cualquier acción con la orden o posición. Esta distancia se mide en pips y se establece para cada símbolo.
Puede obtenerse utilizando SymbolInfoInteger() con elparámetro SYMBOL_TRADE_FREEZE_LEVEL.
Si recibe una respuesta de este tipo por parte del servidor, deberá esperar a que ocurra una de estas dos cosas
1. El precio no se ha movido la distancia requerida (mayor que la especificada en las propiedades del símbolo);
2. la orden o la posición no funciona en las condiciones establecidas en ellas.
Con respecto a
10021
TRADE_RETCODE_PRICE_OFF
No hay presupuestos para tramitar la solicitud
Probablemente, cuando reciba esta respuesta, debería comprobar el nombre del símbolo (por si acaso), asegurarse de que el símbolo está seleccionado (importante para los probadores y las transmisiones múltiples), comprobar la disponibilidad del historial, incluso en el servidor (si es necesario descargarlo), probablemente asegurarse de que el mercado está abierto y de que es posible operar con el símbolo.
PS
Aunque aquí será necesario especificar en los desarrolladores
¿Qué pasa con
10028
TRADE_RETCODE_LOCKED
Solicitud bloqueada para su tramitación
Esta es probablemente la más específica de las respuestas del servidor enumeradas anteriormente... es más probable que necesite una aclaración por parte de los desarrolladores (voy a suponer que probablemente sólo debe esperar una cierta cantidad de tiempo)...
En cuanto a
10029
TRADE_RETCODE_FROZEN
Orden o posición congelada
Hay un determinado nivel por debajo del cual una posición o una orden se "congelan" (cualquier acción con ellas está prohibida).
Este nivel es una distancia al precio actual en la que el servidor prohíbe cualquier acción con la orden o posición. Esta distancia se mide en pips y se establece para cada símbolo.
Puede obtenerse utilizando SymbolInfoInteger() con elparámetro SYMBOL_TRADE_FREEZE_LEVEL.
Si recibe una respuesta de este tipo por parte del servidor, deberá esperar a que ocurra una de estas dos cosas
1. El precio no se ha movido la distancia requerida (mayor que la especificada en las propiedades del símbolo);
2. la orden o la posición no ha cumplido las condiciones establecidas en ellas.
Gracias por la respuesta detallada. Entiendo el código "10029: TRADE_RETCODE_FROZEN: La orden o posición está congelada".
Sin embargo, seguimos teniendo dudas respecto al resto (quiero saber la respuesta exacta y no sólo conjeturas):
10008
TRADE_RETCODE_PLACED
Pedido realizado
10021
TRADE_RETCODE_PRICE_OFF
No hay presupuestos disponibles para procesar la solicitud
10028
TRADE_RETCODE_LOCKED
La solicitud está bloqueada para su procesamiento
En particular, no está muy claro qué significa "10008: El pedido se ha realizado", porque cuando el pedido se pone en cola en el servidor, se le asigna un ticket y se devuelve el código "10009: TRADE_RETCODE_DONE: Pedido ejecutado".