Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1854

 
Alexander Avksentyev #:

Si la red tarda tanto, cerrará las correctas una por una.
Al cerrar la última, puede ocurrir que haya 10 órdenes por cerrar y las cierra todas una a una y tarda un tiempo infinito.

Este proceso es un no parar.

Si es verdadero, continuamos; si es falso, procesamos un error; error crítico, salimos; no crítico (deslizamiento), continuamos.

Si la negociación no es una cocina completa, 15-20 EAs se cierran rápidamente, alrededor de 2-3 segundos, de lo contrario hasta 15 segundos. Editar, hubo casos de hasta 2 minutos.

Si es mt5, se cierra casi al instante.

 
Vitaly Muzichenko #:

Se cierra sin interrupción.

Después de cerrar una, compruebe lo que la función OrderClose devolvió, si es verdadero - continúe, si es falso - maneje el error, error crítico - salga, no crítico (deslizamiento) - continúe.

Si la negociación no es una cocina completa, 15-20 EAs se cierran rápidamente, alrededor de 2-3 segundos, de lo contrario hasta 15 segundos. Editar, hubo casos de hasta 2 minutos.

Si es mt5, se cierra casi al instante.

Si se produce algún error, todavía hay que enviar una solicitud para cerrar esta orden después de un determinado intervalo. Porque si se queda pendiente para siempre, ya será un robot malo. Con una orden (posición) de este tipo, es posible incluso perder el depósito, si lo mantiene durante mucho tiempo.

 
Mihail Matkovskij #:

Si se produce algún error, todavía hay que enviar una solicitud para cerrar esa orden después de un determinado intervalo. Si se queda ahí para siempre, será un robot malo. Debido a esta orden (posición), el depósito puede incluso perderse si se mantiene durante mucho tiempo.

Tenemos que manejarlo adecuadamente. Si es crítico, no tiene sentido machacar el servidor.

 
Vitaly Muzichenko #:

Hay que manejarlo adecuadamente. Si es crítico, no tiene sentido machacar el servidor.

Por supuesto que no tiene sentido. Pero después de un cierto intervalo, debe intentar cerrar esta orden (posición). La razón es la siguiente. En primer lugar, la posición abierta no puede permanecer indefinidamente. En segundo lugar, la propia posición no puede cerrarse para siempre. Tarde o temprano, el servidor aceptará una solicitud para cerrar la orden(para salir de la posición). Y si no haces nada, el resultado será el que he mencionado anteriormente. El depósito puede sufrir una fuerte depreciación o perder su valor.

 
Mihail Matkovskij #:

Por supuesto que no tiene sentido. Pero después de un cierto intervalo todavía vale la pena intentar cerrar esta orden (posición). Porque sí. En primer lugar, la posición abierta no puede colgar para siempre. En segundo lugar, la propia posición no puede cerrarse para siempre. Tarde o temprano, el servidor aceptará una solicitud para cerrar la orden(para salir de la posición). Y si no haces nada, el resultado será el que he mencionado anteriormente. El depósito puede caer en una gran reducción o puede ser vendido.

Se ha omitido recientemente, la empresa de corretaje deshabilitó el comercio automático en el servidor. Fue hace 1 minuto y luego se cortó.

¿Seguiremos intentando cerrarlo?

 
Vitaly Muzichenko #:

Recientemente se ha mencionado que el DC ha deshabilitado la capacidad de autocomercio en el servidor. Fue hace 1 minuto y luego lo apagaron.

¿Seguiremos intentando cerrar?

El mensaje es correcto cuando hay errores críticos en las posiciones de cierre.

 
Vitaly Muzichenko #:

Recientemente se ha mencionado que el DC ha deshabilitado la capacidad de autocomercio en el servidor. Fue hace 1 minuto y luego lo apagaron.

¿Todavía vas a intentar cerrarlo?

Bueno, entonces podemos llamar a

AccountInfoInteger(ACCOUNT_TRADE_EXPERT)

Y también

AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)

И

TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)

Por si acaso. Y no hacer nada con el resultado correspondiente de alguna o todas las funciones. Y manejar los errores resultantes de un cierre infructuoso como corresponde.

En cualquier caso, le garantizamos que el robot no operará mientras al menos una de las funciones lo prohíba.

Документация по MQL5: Программы MQL5 / Разрешение на торговлю
Документация по MQL5: Программы MQL5 / Разрешение на торговлю
  • www.mql5.com
Разрешение на торговлю - Программы MQL5 - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Mihail Matkovskij #:

Bueno, y manejar los errores como resultado de un cierre fallido en consecuencia.

Sólo que no sé, si se llama a OrderSend y el servidor ha deshabilitado la operación,¿OrdenSend devolverá false o se enviará primero la petición al servidor y luego éste devolverá una respuesta? Si es esto último, entonces OrderSend devolverá true. Y entonces definitivamente necesitas añadir una función () para bloquear las llamadas a la funciónOrderSend. Y si la primera, entonces la solicitud ni siquiera se enviará a la cola, porque OrderSend devolvió false. ¿Tiene sentido?

 
Mihail Matkovskij #:

Sólo que no sé, si se llama a OrderSend y el servidor ha deshabilitado la operación,¿OrdenSend devolverá false o se enviará primero la petición al servidor y luego éste devolverá una respuesta? Si es esto último, entonces OrderSend devolverá true. Y entonces definitivamente necesitas añadir una función () para bloquear las llamadas a la funciónOrderSend. Y si la primera, entonces la solicitud ni siquiera se enviará a la cola, porque OrderSend devolvió false. ¿Tiene sentido?

OrderSend devuelve un ticket cuando tiene éxito :)

Probablemente iré a la rama de novatos

 
Vitaly Muzichenko #:

OrderSend devuelve un ticket en caso de éxito :)

Probablemente iré a la rama de novatos

OrderSend en MQL4 devuelve un ticket. Y en MQL5 es un bool. Estoy acostumbrado a considerar las ficciones deMQL5.Me olvidé un poco de MQL4 (porque estoy acostumbrado a portar aplicaciones de MQL5 a MQL4). En MQL5 el bool OrderSend abre y cierra posiciones así como crea/elimina órdenes. MQL5 tiene funciones para órdenes, operaciones y posiciones. En MQL4, int OrderSend es para la entrada, y bool OrderClose es para la salida. También existe el bool OrderDelete para las órdenes pendientes. Y enMQL4 sólo las órdenes se dividen en órdenes de mercado y pendientes. Me has hecho recordar cuál es la diferencia entre estos dos idiomas. :)

Por lo tanto, no se puede saber todo. Y es muy fácil confundirse.