Desarrollo de una biblioteca de funciones API para MetaTrader 4 - página 4

 
Según la configuración del servidor de cotizaciones de MT4, no se pueden realizar operaciones más de una vez cada 10 segundos. El servidor limita la frecuencia de las distintas peticiones para evitar posibles ataques de hackers al DOS. Esta información se planteó una vez en este foro.
No es cierto.
La frecuencia de las transacciones sólo está limitada por la velocidad de reacción del corredor =)
No hay límite en MT.

Los desarrolladores lo han dicho en el foro, y más de una vez. Pero siempre nos advirtieron honestamente: tendrás que lidiar con tu corredor por ti mismo ;)


Por lo tanto, sería más justo decir que la pausa no es obligatoria (en sentido técnico), pero al menos es deseable (en el sentido del peligro de bloqueo de la cuenta).
 
Me interesa un ejemplo sencillo, envío tres solicitudes para realizar tres pedidos, aunque el intervalo sea de 20 segundos. En este momento el mercado es lento y el intervalo entre ticks es de hasta dos minutos. ¿Se perderán los dos primeros o se ejecutarán los tres durante el primer tick?
 
Me interesa un ejemplo sencillo, envío tres solicitudes para realizar tres pedidos, aunque el intervalo sea de 20 segundos. En este momento el mercado es lento y el intervalo entre ticks es de hasta dos minutos. ¿Se perderán los dos primeros o se ejecutarán los tres durante el primer tick?

No se perderá nada. No es necesario implementar ningún retraso en el programa. Se inicia la función int NewPos(...) para la primera orden. Todos los retrasos ya están implementados en él. Si la función devuelve 0, todo está bien: la petición se ha ejecutado. Pasamos al segundo orden, y así sucesivamente.
Si la ejecución tiene éxito, la función hará un retraso de 10 segundos por sí misma, por lo que no tendremos problemas con las peticiones frecuentes al servidor. El tiempo de espera crítico de la respuesta del terminal MT4 también se implementa en esta función. Si no hay respuesta del terminal durante este tiempo, la función devuelve el código de una situación de error. Esto se ha hecho para diagnosticar situaciones relacionadas con la falta de cotizaciones, la desactivación de cuentas, los fallos de Internet, etc.
De esta manera, cuando se regresa de la función, el evento ya ha ocurrido. Buena suerte.
 
Los comandos de procesamiento de órdenes se ejecutarán sólo cuando lleguen las cotizaciones del par para el que está instalado el Asesor Experto. En otras palabras, el botón "BUY" en su programa no significa que la orden sea enviada al servidor, sólo está "esperando en el disco" la cotización del par donde está instalado el Asesor Experto. El Asesor Experto buscará el comando de archivo y si lo encuentra, enviará una orden al servidor, y por cierto, lo buscará en cada tick. El resultado de la realización de un pedido o de la anulación del mismo, respectivamente, sólo puede recibirse con la llegada de la siguiente cotización. Esto no nos permite organizar una lógica clara para algunos ST. Espero que lo entiendas.


La lógica de la ST no tiene nada que ver. La pregunta se refiere únicamente a los retrasos en la ejecución de las órdenes. Pero, como he escrito antes, este problema es inverosímil: la variabilidad de las cotizaciones está determinada por los ticks entrantes con nuevos precios. Durante la negociación activa se reciben hasta 200 ticks por minuto. Por lo tanto, en este caso no puede haber ningún retraso. Si se abre una posición en el período de floja negociación, los cambios de precios son casi inexistentes, por lo que la expectativa tampoco tiene un gran impacto en el nivel de la cotización.
Además, aquí no podemos hablar del botón de "COMPRA", porque estamos hablando de sistemas mecánicos de trading, que toman sus propias decisiones sin ningún botón. Buena suerte.
 
Según la configuración del servidor de cotizaciones de MT4, no se pueden realizar transacciones más de una vez cada 10 segundos.

Este era el caso en MetaTrader 3, pero MT4 ya no tiene esta restricción.
Pero de todos modos, hay que ser moderado y no hacer muchas operaciones seguidas.
 
En realidad era así en MetaTrader 3, pero MT4 ya no tiene esta restricción. <br/ translate="no"> Pero aun así, hay que tener cuidado de no hacer demasiadas operaciones seguidas.

Sí, tienes razón, por supuesto. De lo contrario, si las peticiones son demasiado frecuentes, el servidor puede bloquear la dirección del usuario con las correspondientes consecuencias para el comercio. Buena suerte.
 
¡ATENCIÓN!
La nueva versión de la biblioteca MFOREX 2.05 para el uso de las funciones de MetaTrader 4 API ha sido lanzada.
Sus beneficios son:
1. Durante el trabajo de la biblioteca no se forman archivos temporales, el transporte de datos se realiza a través de áreas de memoria compartida. Esta solución acelera considerablemente el acceso a la información y aumenta la fiabilidad de la biblioteca;
2. Además, se implementan funciones especiales para el diagnóstico del terminal, devolviendo la hora del último tick y el código informático único para el proceso de registro;
3. La función de diagnóstico de situaciones erróneas y de emergencia devuelve el código de la situación y guarda la descripción en el registro especial en ruso.
4. El precio de la biblioteca se ha reducido considerablemente. Los usuarios registrados de la versión antigua recibirán las actualizaciones de forma gratuita.
Lea todos los detalles en nuestro sitio web http://www.min2006.ru
 


Por desgracia, la propuesta de EA:
- no entrega el historial de cotizaciones;
- no hace un seguimiento de los errores y las emergencias;
- no da el historial de operaciones ni la lista de posiciones abiertas;
- no permite obtener las últimas cotizaciones (en forma de ticks).

En la biblioteca que propongo se implementan todas las funciones que faltan. Además, el intercambio de información se realiza a través de zonas de memoria compartida sin generar archivos temporales. Lea todos los detalles en http://www.min2006.ru
Buena suerte.
 
Por cierto, ahora lo que ofrece Min es más parecido a lo que se puede comprar que antes.
Puro imho :)
Razón de la queja: