Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1060

 
abeiks:

Aquí puedes encontrar parte de las respuestas: https://www.mql5.com/ru/forum/131859


1. Gracias, pero no encontré la respuesta. Hay una función SetOrder(), pero es la misma que OrderSend() esencialmente. No puede abrir varias órdenes al mismo tiempo con esta función.
 
smart_man:
1. Gracias, pero no he encontrado la respuesta. Hay una función SetOrder(), pero es lo mismo que OrderSend() en esencia. No puede abrir varias órdenes al mismo tiempo con esta función.

No puedes abrir varias órdenes al mismo tiempo con ninguna función, porque el servidor ejecuta las órdenes una a una y no en paralelo, y las órdenes son de todos los clientes, no sólo de los tuyos.

En el mejor de los casos, las órdenes se abrirán con unos milisegundos de diferencia una tras otra, pero sólo si hay alguna demanda en el mercado.

 
evillive:

No puedes abrir varias órdenes al mismo tiempo con ninguna función, porque el servidor ejecuta las órdenes una a una, no en paralelo, y las órdenes son de todos los clientes, no sólo de los tuyos.

En el mejor de los casos, las órdenes se abrirán con unos milisegundos de diferencia una tras otra, pero eso sólo si hay demanda en el mercado.

Veo que ha entendido el problema. Lo único que se me ocurre es si abrimos estas órdenes por pendientes. ¿Es posible entonces abrirlos al mismo tiempo?
 
smart_man:
Ya veo que entiendes el problema. Lo único que se me ocurre es si abres estas órdenes de forma pendiente. Entonces, ¿es posible abrirlos al mismo tiempo?
No, el servidor sigue ejecutándolos uno a uno, pendientes o en el mercado.
 
evillive:
No, el servidor seguirá ejecutándolos uno a uno, pendientes o de mercado.

1. entonces se elimina la cuestión de la "simultaneidad". Entonces, en este aspecto no hay diferencia entre abrir un mercado o uno pendiente.

2. ¿Es correcto comprobar manualmente en cada tick si la orden se ha cerrado, para captar el momento de este mismo cierre (por TP o SL) o hay funciones preparadas?

 
smart_man:

1. Entonces se elimina la pregunta sobre la "simultaneidad". Entonces, en este aspecto no hay diferencia entre abrir el mercado o estar pendiente.

2. ¿Es correcto comprobar manualmente en cada tick si la orden se ha cerrado, para determinar el momento de este mismo cierre (por TP o SL) o hay funciones preparadas?

2 Mira con atención: https://www.mql5.com/ru/forum/131859

isCloseLastPosByStop();
isCloseLastPosByTake();
 
¿Qué significa esta línea: PostMessageA(hwnd, WM_COMMAND, 0x822c, 0)? No puedo encontrar el propósito de la misma.
 

¿Puede aconsejar qué empresa de corretaje elegir? Interesado en los problemas de depósito/retirada, así como en la fiabilidad de las cotizaciones. Por ejemplo, los resultados de las pruebas del servidor de Alpari son muy diferentes a los de las metacotizaciones, a favor de estas últimas. Los parámetros de las velas en diferentes servidores tienen diferentes valores, etc.

Es interesante que Alpari y el club de forex no tuvieran licencia la semana pasada, fueron registrados por Teletrade. ¿Cómo seguir viviendo?

 

Hola a todos. Quiero hacer una función personalizada totalmente autónoma. No hay problema con la emulación de OnInit(). La propia función de usuario se ejecuta por definición. Pero tengo problemas con el pseudoOnDeinit(const int reason).

Aclarar la tarea. La función del usuario debe borrar sus objetos gráficos en la última pasada y, por ejemplo, guardar algunos datos en variables globales del terminal.

En un programa en bucle, la señal de finalización del programa puede ser IsStopped()==true. En un programa sin bucles, es siempre=0. No es un método universal.

He intentado llamar a la función UninitializeReason() desde OnTick(). El resultado es siempre=0. Sin embargo, sería lógico hacer que diera el valor de la razón de desinicialización inminente en la última pasada.

Por lo tanto, la función UninitializeReason() está truncada y sólo puede utilizarse dentro de OnDeinit(const int reason).

Todas las funciones de usuario pueden escribirse adicionalmente en la función de desinicialización OnDeinit(const int reason) y uno de los parámetros obligatorios que se pasan a la función de usuario debe ser reason-el motivode la desinicialización.

La presencia de un valor distinto de cero pasado desde OnDeinit(const int reason) a la función de usuario será la señal del cierre del programa principal.

Tal vez haya otras formas y variables del sistema que necesite para este fin. Escríbeme. Comparte tus experiencias. Si no lo sientes. ;-)

 
kosmos0975:

He intentado llamar a la función UninitializeReason() desde OnTick(). El resultado es siempre 0, aunque lo lógico sería hacer que diera la razón de la próxima desinicialización en la última pasada.

¿Cómo podría ser si no? Si cierra el terminal entre ticks, OnTick() no se ejecuta, y por lo tanto no se maneja ningún evento que llame a UninitializeReason().
Razón de la queja: