Errores, fallos, preguntas - página 1724
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
En el proceso surgieron un par de preguntas:
1. ¿Por qué es imposible escribir operator() en Comp (está prohibido por alguna razón)?
2. ¿Por qué no podemos pasar prvalue a una función que acepta una referencia constante?
ZS: y también muy molesta esta advertencia: "struct no tiene miembros, tamaño asignado a 1 byte"
Todo está bien allí, la colocación de la orden debe ser controlada a través de OnTradeTransaction, por cierto, si se conecta a la bolsa directamente a través de Plaza2, la situación es la misma - usted necesita para controlar la llegada de los mensajes sobre la colocación de la orden. En MT4, esta función es sincrónica, pero la misma opción está disponible en MT5, sólo que en este caso, la lógica se detendrá hasta que la función no reciba respuesta.
Si lo necesitas, puedo enviarte la clase de control, pero está escrita para la colocación en el mercado, pero pronto la finalizaré para los limitadores.
¡Te pido mucho que publiques algo en la kodobase! Con fines educativos.
No se puede por la razón que tú mismo has señalado https://www.mql5.com/ru/forum/1111/page1743#comment_2877482. Recientemente no pude localizar el error, pasé mucho tiempo para formar el código fuente en servicedesk - al final no salió nada debido a muchas referencias cruzadas (una tira de la otra en progresión geométrica) - envié .ex5
Para fines educativos puedo sugerir la tarea: sin introducir variables adicionales simplificar h() para que f() sea llamada en todo caso una vez
Error de compilación
(*) En general, en el patrón (1) tanto A->(2) como const A->(3) pueden ser sustituidos en lugar de T.
¿Por qué? Un patrón con const no puede aceptar non-const - viola el contrato.
Con fines didácticos, puedo sugerir la siguiente tarea: sin introducir variables adicionales, simplificar h() para que f() sea llamada una vez en cualquier caso
¿Por qué? Una plantilla con const no puede aceptar non-const - viola el contrato.
¿Alguien ha experimentado un problema similar? ¿Un "bug" en el terminal o en el mío?
MT5-OrderSend NO está totalmente sincronizado - no hay sincronización con el entorno de trading. Esto significa que las lecturas del historial no se corresponden con la situación real.
No hay tiempo de espera. No hay una solución fiable para el problema, porque hay que tratar los problemas de sincronización a nivel de terminal, no a nivel de servidor.
De hecho, los usuarios de MT5 se enfrentan a lo mismo que los desarrolladores del puente de MT4.
Si se envía un OrderSend, hay que RECORDAR (aquí es donde está la potencial vulnerabilidad) que se hace. A continuación, ignore el historial actual (entorno comercial) hasta que llegue el mensaje correspondiente en OnTrade. Una vez que llegue, RECUERDE OLVIDARSE.
Cuando no hay REMEMBER, se puede confiar en el historial como en MT4.
MT4-OrderSend está TOTALMENTE sincronizado.Entiendo que si te metes con OrderSendAsync de forma asíncrona, puedes manejar tanto OnTrade como OnTradeTransaction. Con OrderSend quiero tener un comportamiento simple, como en MT4. Una vez que se llama, obtenemos en la salida las posiciones abiertas ya modificadas y el historial.
Hay un punto sutil. Si el estado actual se almacena en una variable global y la expectativa de cambios de estado lleva un tiempo relativamente largo, y el operador consigue cambiar los parámetros del EA, las variables globales se reiniciarán y el estado se descartará.