Organiser le cycle de commande - page 6

 
Alexey Viktorov:

mettre un contrôle sur la modification de la liste des commandes

De cette façon, la réindexation ne sera pas prise en compte.

Il est clair que si elles ont été ajoutées, elles ou d'autres personnes manqueront. Mais que se passerait-il s'ils étaient simplement supprimés ? Nous ne pourrons plus quitter la liste des commandes ?

Il n'y a donc pas de problème - nous obtiendrons une erreur lors de l'opération OrderSelect.

 
fxsaber:

De cette façon, la réindexation ne sera pas prise en compte.

C'est bon - nous aurons une erreur sur OrderSelect.

1. Que signifie indexation/reindexation ? A mon avis, et en le signalant dans le ... les mains, parce que nous allons commencer un nouveau cycle. Ou pouvez-vous imaginer que la situation soit encore plus compliquée ? Pouvez-vous imaginer qu'il est possible d'ouvrir un ordre et d'en fermer un autre en même temps ?

2. Je suis d'accord. Je ne suis pas tout à fait réveillé ce matin... Je ne suis pas tout à fait réveillé...

 
Alexey Viktorov:

1. Qu'entend-on par indexation/re-indexation ? A mon avis et selon le drapeau de son ... les mains, parce que nous commençons un nouveau cycle. Ou pouvez-vous imaginer que la situation soit encore plus compliquée ? Pouvez-vous imaginer qu'il est possible qu'un ordre soit ouvert et qu'un autre soit fermé au même moment ?

Oui, cela pourrait être l'un des scénarios. Il existe une autre variante

un ordre en attente est exécuté pendant le cycle

 
fxsaber:

Et si, au cours d'un cycle de travail avec les commandes, à chaque tour, nous vérifions si OrdersTotal() et OrdersHistoryTotal() ont été modifiés ?

Et analyser ces valeurs en fonction de la situation ?

 
fxsaber:

Oui, une option pourrait être celle-ci. Il y a aussi

Une sorte de pendule s'accomplit pendant le cycle


1. cette variante est à la limite de la fiction. En fin de compte, rien ne se passera si tout revient à la normale au prochain tic-tac.

2. Si je comprends bien, les ordres en attente doivent être déplacés selon l'algorithme et le stop sera déplacé sur les ordres au marché. Par conséquent, le type d'ordre est vérifié et exécuté indépendamment du moment de l'exécution.

 
Alexey Kozitsyn:

Et si, au cours d'un cycle de travail avec les commandes, à chaque tour, nous vérifions si OrdersTotal() et OrdersHistoryTotal() ont été modifiés ?

Et analyser les valeurs obtenues en fonction de la situation ?

Voici une suggestion similaire


Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Particularités de mql4, trucs et astuces

Alexey Viktorov, 2017.09.15 07:24

Tout d'abord, la situation est présentée de manière non standard et peu de personnes ont déjà résolu cette situation, si tant est qu'il y en ait.

De façon purement théorique :

Pour OrderModify, il n'est pas nécessaire d'organiser une boucle inverse, il faut donc qu'elle soit directe.

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

Et ensuite nous devrions vérifier les changements dans la liste des commandes

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

Si le nombre de commandes a changé, recommençons cette boucle avec un nouveau nombre de commandes.

Il y a aussi une question :

Il est clair que si des commandes ont été ajoutées, elles ou d'autres seront ignorées. Mais que se passerait-il s'ils étaient simplement supprimés ? Nous n'irons pas au-delà de la liste des commandes ?


seulement sans vérifier OrdersHistoryTotal()
 
Alexey Viktorov:

Voici une suggestion similaire



seulement sans vérifier OrdersHistoryTotal()
Oui, je l'ai lu, j'ai juste pris soin de vérifier également les ordres d'historique, pour le cas où l'ouverture et la fermeture simultanées ont eu lieu.
 
Alexey Kozitsyn:

Et si, au cours d'un cycle de travail avec les commandes, à chaque tour, nous vérifions si OrdersTotal() et OrdersHistoryTotal() ont été modifiés?

Et analyser ces valeurs en fonction de la situation ?

Il peut ne pas exister lors de la réindexation.
 
Alexey Viktorov:

1. Cette option est sur le point de devenir un fantasme. Au final, rien ne se passera si tout se met en place au prochain tic-tac.

Le tick suivant est devenu un gap. Pourquoi remettre à demain ce qui peut être fait aujourd'hui ?

2. Si je comprends bien, selon l'algorithme, les ordres en attente doivent être déplacés et le stop doit être déplacé vers les ordres au marché. Par conséquent, le type d'ordre est vérifié et exécuté indépendamment du moment de son exécution.

Le type de commande ne peut être d'aucune aide.

 
fxsaber:
Elle peut ne pas être présente lors de la réindexation.

Alors peut-être devrions-nous essayer de sélectionner les ordres aussi rapidement que possible (il suffit de les sélectionner !) et les écrire dans un tableau, puis, dans une fonction séparée, vérifier la disponibilité de ces ordres + l'action requise (fermer/supprimer/modifier) ?

Bien que je ne pense pas que cette branche soit le meilleur endroit pour en discuter. Cette branche est destinée aux fonctionnalités.