[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 1050

 

Comment écrire la condition if(ordershistorytotal()"replenished by one order") ?

 
Stasjan:

Comment écrire la condition if(ordershistorytotal()"replenished by one order") ?

Pour cela, la valeur précédente de OrdersHistoryTotal() doit être stockée dans une variable statique, et les valeurs précédente et actuelle doivent être comparées dans la condition. Si elle a changé, alors elle s'est reconstituée, puisque les valeurs n'y changent pas dans un sens plus petit.
 
Reshetov:
Pour ce faire, la valeur précédente de OrdersHistoryTotal() doit être stockée dans une variable statique, et les valeurs précédente et actuelle doivent être comparées dans la condition. S'il a changé, alors il s'est reconstitué, puisque les valeurs n'y changent pas à la baisse.

Merci ! !!
 
prom18:
S'il vous plaît, aidez-moi. Le conseiller expert place deux pendentifs BuyStop et SellStop à côté du signal. Il y a également un signal pour ouvrir un ordre d'achat en attente. Je dois modifier un ancien ordre d'achat en fonction des conditions du dernier signal. Je l'ai fait via la fonction OrderModify(). Ça n'a pas marché. Il nous donne une erreur 4051. Comment sélectionner la commande requise. Je comprends que nous devons choisir le ticket, mais comment déterminer le ticket de l'ordre requis (dans ce cas, nous avons affaire à BuyStop). Expliquez au moins la logique de l'action. Merci !

int ticket = -1 ;

...

OrderSelect(...) ;

si (OrderType() == OP_BuyStop) {

ticket = OrderTicket() ;

OrderModify(...) ;

retour(0) ;

}

 
Reshetov:
Pour ce faire, la valeur précédente de OrdersHistoryTotal() doit être stockée dans une variable statique, et les valeurs précédente et actuelle doivent être comparées dans la condition. S'il a changé, alors il s'est reconstitué, puisque les valeurs n'y changent pas à la baisse.

Des conseils pour que ce soit pareil ?
 
Roman.:

1 n'est certainement pas beaucoup. Beaucoup de choses dépendent de la vitesse d'exécution de vos ordres par le courtier, dépendent de la vitesse (depuis l'internet) à laquelle vous donnez vos ordres au courtier, et probablement de "quelque chose" sur le compte réel dont nous (je) n'avons aucune idée. Slava a écrit comment le courtier a réduit ses pips en augmentant la dist minimale de 2,3 points à 18 - 20 points (voir une branche ici https://forum.mql4.com/ru/37451/page10)...
J'ai mis 2 points à "tampon" - tous les trades sont ouverts maintenant ;) Merci encore.
 
Stasjan:

Des conseils sur la façon de le réinitialiser ?

statique prevhitorytotal = 0 ;

...

if (OrderHistoryTotal() != prevhistorytotal) {

// réapprovisionné par une commande

}

prevhistorytotal = OrderHistoryTotal() ;

 
Reshetov:
À cette fin, la valeur précédente de OrdersHistoryTotal() doit être stockée dans une variable statique, et les valeurs précédente et actuelle doivent être comparées dans la condition. Si elle a changé, alors elle s'est reconstituée, puisque les valeurs qui s'y trouvent ne sont pas modifiées à la baisse.


static int totalh=OrdersHistoryTotal() ;

si(OrdersHistoryTotal()>totalh)

Ai-je bien compris ou non ?

 
Reshetov:

statique prevhitorytotal = 0 ;

...

if (OrderHistoryTotal() != prevhistorytotal) {

// réapprovisionné par une commande

}

prevhistorytotal = OrderHistoryTotal() ;


C'est compris ?

 
Stasjan:


static int totalh=OrdersHistoryTotal() ;

C'est faux.

static int totalh=0 ; // les variables statiques sont déclarées avant les appels start(), init() et deinit()

...

int start() {

...

if (OrderHistoryTotal() != totalh) {

// réapprovisionné par une commande

}

totalh = OrderHistoryTotal() ;

...

}