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
Hola Kronin,
Su modificación está funcionando. Has limitado las órdenes máximas, pero ¿es posible cerrarlas todas?
He intentado hacerlo con el siguiente código, pero parece que no funciona.
Saludos cordiales
Luis
Hmmm, no estoy seguro de entender lo que quieres decir...
¿Te refieres a que en lugar de abrir la última orden (la orden 7 si MaxOrders está establecido en 7) cerrar todas las órdenes?
Estoy bastante seguro de que no quieres esperar hasta que se alcance el MaxOrders y luego cerrar todos inmediatamente. La última orden la mayoría de las veces (o todas las veces) terminaría con una pérdida.
Por cierto, ¿has visto el PM sobre el controlador de spreads?
Hmmm, no estoy seguro de entender lo que quieres decir...
¿Te refieres a que en lugar de abrir la última orden (la orden 7 si MaxOrders está establecido en 7) cerrar todas las órdenes?
Estoy bastante seguro de que no quieres esperar hasta que se alcance el MaxOrders y luego cerrar todos inmediatamente. La última orden la mayoría de las veces (o todas las veces) terminaría con una pérdida.
Por cierto, ¿has visto el PM sobre el controlador de spreads?
Hola Kronin,
Gracias por su pronta respuesta.
Digamos que después de un ciclo de ping pong de n órdenes (MaxOrders) se deberían cerrar todas las órdenes abiertas, sé que podría no tener sentido, pero aun así.
Estoy tratando de incluir código para reingresar la orden en caso de que falle y tengo dudas si eso tiene sentido porque ya existe el código de IsContextBusy () Sleep (10). Por lo que entiendo, el significado es "si el servidor está ocupado u otro EA de la plataforma está intentando comunicarse, entonces espera 10 milisegundos y vuelve a intentarlo". Así que supongo que el EA mantendrá este comportamiento hasta que se reciba un ticket, ¿estoy en lo cierto?
En cuanto al tema del PM, en ese caso mejor no hacer uso del Test en fin de semana o hacerlo con la plataforma offline....
He insertado la línea 5, pero creo que no es necesario porque en la línea 1 ya lo has hecho, ¿estoy en lo cierto?
Otra cuestión,
En el siguiente trozo de código las líneas en negrita donde está sym y mn no hay que sustituirlas por Symbol() y MagicNumber?
Aquí, en el siguiente código he insertado los filtros según tu consejo;
(//Phil:
//Comprobar la cantidad total de órdenes. Yo añadiría un filtro para mercado, magia y símbolo...//<----------- No estoy seguro de lo que quieres decir con filtro de mercado..... (Phil: órdenes de mercado, no órdenes pendientes)
//.... pero me da pereza ahora..... es algo que tienes que hacer tú.
¿Es eso correcto?
Saludos cordiales
Luis
No comento el uso de las funciones. RaptorUK ya lo hizo unos cuantos posts antes. Lee de nuevo y entiende por qué no necesitas cambiar nada en el código dado. Mejor aún, entiende por qué puedes usarlo tal cual en otros EAs.
OrdersTotal() devuelve una cantidad de órdenes. Probablemente quieras saber si las órdenes pertenecen a tu EA o a la operativa manual o si las órdenes están pendientes o ya son de mercado. Yo crearía una función (int) que devuelva la cantidad de órdenes que el EA ha creado.
if(OTLastTick >= 2 //<------¿podrías comentar el significado de esta línea?
Si sólo tienes una orden abierta (menos de 2), no tiene sentido llamar a la función CloseAllOnSL..... la única orden abierta obviamente no está parada.
No comento el uso de las funciones. RaptorUK ya lo hizo unos cuantos posts antes. Lee de nuevo y entiende por qué no necesitas cambiar nada en el código dado. Incluso mejor, entender por qué se puede utilizar como es en otros EAs.
OrdersTotal() devuelve una cantidad de órdenes. Probablemente quieras saber si las órdenes pertenecen a tu EA o a la operativa manual o si las órdenes están pendientes o ya son de mercado. Yo crearía una función (int) que devuelva la cantidad de órdenes que el EA ha creado.
if(OTLastTick >= 2 //<------¿Podrías comentar el significado de esta línea?
Si solo tienes una orden abierta (menos de 2), no tiene sentido llamar a la función CloseAllOnSL..... la única orden abierta obviamente no está parada.
Hola Kronin,
Gracias por su respuesta a mis problemas.
Pondré mi mayor atención a su código, así RaptorUK aconseja dado antes.
Saludos cordiales
Luis
Hola Kronin,
Me ha surgido un problema que tiene que ver con el uso de dos EA's. Si pongo dos EA's en diferentes gráficos y con diferente número mágico no funcionan al mismo tiempo. Recibo un error como uninit razón 5 pero habiendo echado un vistazo en el foro no encuentro información que me ponga en la dirección correcta para tratar ese tema.
¿Tienen alguna información complementaria?
Saludos cordiales
Luis
Hola Kronin,
Me ha surgido un problema que tiene que ver con el uso de dos EA's. Si pongo dos EA's en diferentes gráficos y con diferente número mágico no funcionan al mismo tiempo. Recibo un error como uninit reason 5
Hola RaptorUK,
Gracias por su pronta respuesta.
En el enlace proporcionado he encontrado
Pero con esa información no se puede hacer nada (que yo sepa). No puedo entender qué parámetros de entrada se han cambiado. El ea es el mismo, solo cambio el numero magico para evitar conflictos entre los otros ea.
Por cierto una vez aquí ¿podrías decirme si en el siguiente código hay que introducir código para que las órdenes sean enviadas de nuevo mientras no se han recibido las entradas lo mismo para las órdenes de cierre?
Un saludo
Luis
Hola RaptorUK,
Gracias por su pronta respuesta.
En el enlace proporcionado he encontrado
Pero con esa información no se puede hacer nada (que yo sepa). No puedo entender qué parámetros de entrada se han cambiado. El ea es el mismo, solo cambio el numero magico para evitar conflictos entre los otros ea.
Si has cambiado el número mágico. . .
. . y es un externo entonces has cambiado un parámetro, el EA se reinicia y da la razón 5
Si quieres ejecutar tu EA en múltiples pares te sugiero que hagas 2 cosas, primero haz que tu EA funcione correctamente en un par, pruébalo completamente para que sepas que está funcionando. Luego, en segundo lugar, introduce un Mutex para que tus operaciones sean manejadas cuando el otro EA no esté tratando de hacer lo mismo.
Si has cambiado el Número Mágico. . .
. . y es un externo entonces ha cambiado un parámetro, el EA se reinicia y da la razón 5
Si quieres ejecutar tu EA en varios pares te sugiero que hagas 2 cosas, primero haz que tu EA funcione correctamente en un par, pruébalo a fondo para que sepas que está funcionando. Luego, en segundo lugar, introduce un Mutex para que tus operaciones se manejen cuando el otro EA no esté tratando de hacer lo mismo.
Hola RaptorUk,
Gracias por tu respuesta sobre el error, supongo que han cambiado el nombre y el número mágico y han puesto el segundo ea en el gráfico sin cerrar la plataforma.
Respecto al otro tema de las órdenes de reentrada que tiene que ver con un fallo en el cierre de la orden que devolvía un error como timeout. por eso no sé si el código tal y como está reentra la orden de cierre o de envío de la orden.
Saludos
Luis
Hola RaptorUk,
Gracias por tu respuesta sobre el error, supongo que han cambiado el nombre y el número mágico y han puesto el segundo ea en el gráfico sin cerrar la plataforma.
En cuanto al otro tema sobre las ordenes de reentrada que tiene que ver con un fallo en el cierre de la orden que devolvió un error como timeout. por eso no se si el código tal y como está reentra la orden de cierre o de envío de la orden.
Saludos
Luis
Lee los códigos de error de ejecución y haz que tu código cumpla con la información que allí se da, por ejemplo....