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
Muchas gracias, estoy procesando los errores, viene el mensaje - precio erróneo, y no puedo averiguar lo que está mal.
entonces añade también una línea
al comienzo de la función - borrar el búfer de errores: a veces es posible leer el error de "otra persona", y de esta manera el búfer de errores se borrará al comienzo de la función.
Esto no es necesario, pero si los programas para el mundo real, es muy deseable para hacer todo lo más correctamente posible.
Buena suerte.
entonces añade también una línea
al comienzo de la función - borrar el búfer de errores: a veces es posible leer el error de "otra persona", y de esta manera el búfer de errores se borrará al comienzo de la función.
Esto no es necesario, pero si los programas para el mundo real, es muy deseable para hacer todo lo más correctamente posible.
Buena suerte.
Sí, gracias, eso es lo que hago en el software real.
Buenas gente, me podéis decir por qué esta función devuelve 0 aunque no haya órdenes abiertas. ¿No debería haber algún tipo de error?
Devuelve la cantidad total de órdenes abiertas y pendientes.
¿Sigue escribiendo por encargo?
-- Usar nombres que empiezan con un guión bajo y un doble guión bajo es una mala forma. Prefiero usar un guión bajo al final.
-- ¿Por qué la cadena _Type_Order? Creo que es irrealmente incómodo. Entonces habría que citarlo. Porque si escribes "Vender" o "vender" no funcionará.
-- Si quieres cometer un error, comete un error:
ERROR = -1;
Mejor aún.
--
¿Por qué romper? Supongamos que, hace un milisegundo, la orden ha sido cerrada por TP, ¿por qué no vamos a cerrar el resto? Esto es mejor:
--
La línea es peor que inútil: es perjudicial. ¿Es eso lo que debe haber querido decir?
--
Es decir, si una orden no se cierra de repente, "suelta el volante, cierra los ojos y empieza a gritar".
¿No hay necesidad de cerrar los otros? ¿No es necesario volver a intentarlo?
-- ¿Por qué hay un retorno de error aquí en absoluto? Sería mucho más apropiado devolver, por ejemplo, true si todos tuvieron éxito para cerrar y false si no.
Eso es todo por ahora.
-- El uso de nombres que comienzan con un guión bajo y un doble guión bajo es una mala forma. Prefiero usar un guión bajo al final.
Al utilizar nombres que comienzan con guiones bajos dentro de las funciones, elimino el riesgo de sobreescritura de variables. Así, puedo utilizar los mismos nombres en start() pero sin guiones bajos, lo que aumenta la transparencia del código.
- ¿Por qué la cadena _Type_Order? Un inconveniente poco realista, en mi opinión. Entonces se debe dar. Porque si escribimos "Vender" o "vender" nada funcionará.
Tienes razón, por supuesto. Sin embargo, el uso de una cadena aumenta la transparencia del código y con la cantidad de código que tengo en este momento, no hay necesidad de un subrayado. Cuando me encuentre con este problema de verdad, lo haré, pero por ahora no es necesario. Simplemente escribo VENDER o COMPRAR.
Desde luego, tiene usted razón, gracias.
La función IsTradeContextBusy() sólo informa sobre la ocupación de los hilos, IsTradeAllowed() es algo más amplia
Es decir, si de repente la orden no se puede cerrar, "suelta el volante, cierra los ojos y empieza a gritar"...
sí, para el período de depuración es
¿Por qué habría un retorno de error? Sería mucho más apropiado devolver true si todo se puede cerrar y false si no.
Gracias, creo que he descubierto cuál es el error. Lo comprobaré e informaré.
El error fue el siguiente:
la variable bool _Resultado no está inicializada, por lo que contendrá false; por tanto, al no cumplirse ninguna de las condiciones, no hemos modificado la variable _Resultado, y ya contiene false. Y la función procede a la gestión de errores que realmente no se produjeron.
He arreglado la función y la cuelgo aquí, creo que a alguien le puede ser útil.
P.D. a los moderadores. He creado una rama de este tipo por accidente - auto-tutorial completo sobre cómo cerrar las órdenes correctamente. Tal vez debería ser renombrado como - cómo cerrar correctamente las órdenes con ejemplos.
PPS Muchas gracias a todos los que han participado. Probablemente habrá más preguntas.
El error fue el siguiente:
la variable bool _Resultado no está inicializada, por lo que contendrá false; por tanto, al no cumplirse ninguna de las condiciones, no hemos modificado la variable _Resultado, y ya contiene false. Y la función procede a la gestión de errores que realmente no se produjeron.
He arreglado la función y la cuelgo aquí, creo que a alguien le puede ser útil.
P.D. a los moderadores. He creado una rama de este tipo por accidente - auto-tutorial completo sobre cómo cerrar las órdenes correctamente. Tal vez debería ser renombrado como - cómo cerrar correctamente las órdenes con ejemplos.
PPS Muchas gracias a todos los que han participado. Probablemente habrá más preguntas.
Si miras en el CodeBase y lees atentamente el foro - hay más de cien ejemplos de cierre de orden correcto, pero eso no significa que todas las ramas deban ser renombradas a la vez. Hay suficientes héroes.
El error fue el siguiente:
la variable bool _Resultado no está inicializada, por lo que contendrá false; por tanto, al no cumplirse ninguna de las condiciones, no hemos modificado la variable _Resultado, y ya contiene false. Y la función procede a la gestión de errores que realmente no se produjeron.
He arreglado la función y la cuelgo aquí, creo que a alguien le puede ser útil.
P.D. a los moderadores. He creado una rama de este tipo por accidente - auto-tutorial completo sobre cómo cerrar las órdenes correctamente. Tal vez debería ser renombrado como - cómo cerrar correctamente las órdenes con ejemplos.
PPS Muchas gracias a todos los que han participado. Probablemente habrá más preguntas.
IMHO: Esta función no es clara en su lógica. Si es para un probador, es demasiado innecesario, si es para el mundo real, los errores deben ser manejados. El valor devuelto no tiene ningún significado porque estás diciendo en el nivel externo (en el nivel de la llamada) que la llamada terminó con un error, estás perdiendo el error en sí, bueno, el experto escribió en el registro - ¿cómo cuenta?
Lo que sería mejor: (de nuevo, IMHO)
1. Lee y guarda el número de error.
2. Dividir los errores en reparables y no reparables. Para ello, debemos crear un manejador - aquellos errores, a la aparición de los cuales la orden puede ser cerrada (un hilo está ocupado, fallo de conexión ..., etc.) debe ser manejado inmediatamente en el sitio. Yo lo he hecho así (primero los errores irrecuperables y luego los que se pueden "arreglar"):
3. Cuando se produce un error intratable, devolver no una bandera de error, sino su número, para que esta situación pueda ser manejada en un módulo externo. Al analizar el resultado de una operación:
Buena suerte.
SZ sobre la pausa/continuación
la cuestión es discutible. Si todavía hay órdenes, cuando se activa una toma/parada la numeración de la orden cambiará, es decir, la orden seguirá siendo seleccionada: se selecciona por número de orden, no por ticket. Si la orden no está seleccionada, significa que no hay orden. Como no se comprueba el número de pedidos cada vez, se ejecutará el ciclo en blanco un cierto número de veces.