Organizar el ciclo de pedidos - página 6

 
Alexey Viktorov:

poner un control sobre la modificación de la lista de pedidos

De este modo, no se tendrá en cuenta la reindexación.

Está claro que si se han añadido, se echará de menos a ellos o a otros. Pero, ¿y si simplemente se borran? ¿No podremos salir de la lista de pedidos?

Por lo tanto, no hay nada malo en ello - obtendremos un error durante OrderSelect.

 
fxsaber:

De esta manera no se tendrá en cuenta la reindexación.

No pasa nada, obtendremos un error en OrderSelect.

1. ¿Qué significa indexar/reindexar? En mi opinión, y lo señalo en el ... manos, porque empezaremos un nuevo ciclo. ¿O puede imaginar que la situación es aún más complicada? ¿Se imagina que es posible abrir una orden y cerrar otra al mismo tiempo?

2. Estoy de acuerdo. No estoy muy despierto esta mañana... No estoy del todo despierto...

 
Alexey Viktorov:

1. ¿Qué se entiende por indexación/reindexación? En mi opinión y bandera en su ... manos, porque estamos empezando un nuevo ciclo. ¿O puede imaginar que la situación es aún más complicada? ¿Se imagina que es posible que se abra una orden y se cierre otra al mismo tiempo?

Sí, este podría ser uno de los escenarios. Hay una variante más

se ejecuta alguna orden pendiente durante el ciclo

 
fxsaber:

¿Qué pasa si durante cualquier ciclo de trabajo con los pedidos, en cada turno, comprobamos si OrdersTotal() y OrdersHistoryTotal() han sido modificados?

¿Y analizar estos valores en función de la situación?

 
fxsaber:

Sí, una opción podría ser esta. También hay

Algún tipo de péndulo se cumple durante el ciclo


1. Esta variante está al borde de la ficción. Bueno, al final no pasará nada si todo va bien en el siguiente tic.

2. Entiendo que las órdenes pendientes deben moverse según el algoritmo y el stop se trasladará a las órdenes de mercado. Por lo tanto, el tipo de orden se comprueba y se ejecuta independientemente de la hora de ejecución.

 
Alexey Kozitsyn:

¿Qué pasa si durante cualquier ciclo de trabajo con los pedidos, en cada turno, comprobamos si OrdersTotal() y OrdersHistoryTotal() han sido modificados?

¿Y analizar los valores obtenidos en función de la situación?

He aquí una sugerencia similar


Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Peculiaridades de mql4, consejos y trucos

Alexey Viktorov, 2017.09.15 07:24

En primer lugar, la situación se presenta de forma atípica y son pocas las personas que ya han resuelto esta situación, si es que hay alguna.

En pura teoría:

Para OrderModify no es necesario organizar el bucle inverso, así que deja que sea directo.

int i, total = OrdersTotal();
for(i = 0; i < total; i++)

Y luego debemos comprobar los cambios en la lista de pedidos

if(total != OrdersTotal())
 {
  i = 0;
  total = OrdersTotal();
  continue;
 }

Si la cantidad de pedidos ha cambiado, iniciemos este bucle de nuevo con una nueva cantidad de pedidos.

También hay una pregunta:

Está claro que si se añaden órdenes, éstas u otras se saltarán. Pero, ¿y si simplemente se borran? ¿No vamos a ir más allá de la lista de pedidos?


sólo sin comprobar OrdersHistoryTotal()
 
Alexey Viktorov:

Aquí hay una sugerencia similar



sólo sin comprobar OrdersHistoryTotal()
Sí, lo leí, sólo hice un punto para comprobar también las órdenes de la historia, para el caso en que se produjo la apertura simultánea + cierre.
 
Alexey Kozitsyn:

¿Qué pasa si durante cualquier ciclo de trabajo con los pedidos, en cada turno, comprobamos si OrdersTotal() y OrdersHistoryTotal() han sido modificados?

¿Y analizar estos valores en función de la situación?

Es posible que no exista durante la reindexación.
 
Alexey Viktorov:

1. esta opción está a punto de ser una fantasía. Al final, no pasará nada si todo encaja en el siguiente tic.

La siguiente garrapata se ha convertido en un hueco. ¿Por qué dejar para mañana lo que se puede hacer hoy?

2. Según entiendo, de acuerdo con el algoritmo, las órdenes pendientes deben ser movidas y el stop debe ser movido a órdenes de mercado. Por lo tanto, el tipo de orden se comprueba y se ejecuta independientemente de la hora de su ejecución.

Bueno, el tipo de orden no puede ayudar de ninguna manera.

 
fxsaber:
Es posible que no esté ahí al reindexar.

Entonces, ¿tal vez deberíamos intentar seleccionar los pedidos lo más rápidamente posible (¡sólo seleccionarlos!) y escribirlos en una matriz, y luego, en una función separada, comprobar la disponibilidad de esos pedidos + la acción necesaria (cerrar/borrar/modificar)?

Aunque no creo que esta rama sea el mejor lugar para discutirlo. Esta rama es para las características.

Razón de la queja: