Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1820

 
Valeriy Yastremskiy #:
Il n'y a rien de tel. Il ne s'agit pas d'un langage procédural. Ici, le programme est strictement descendant. Et les appels de fonction résolvent tout ce qu'il y a de boucles, si c'est ça. ET OOP)
Je l'ai. Je l'ai. Merci pour cette précision.
 
Tretyakov Rostyslav #:

Merci !

 
Tretyakov Rostyslav #:

Bonjour

    if(OrderSelect(FindTicketOrder(), SELECT_BY_TICKET,MODE_TRADES)) 
    { 
      if(OrderProfit()<=-x);
        {
         OrderClose(FindTicketOrder(),OrderLots(),OrderClosePrice(),iSlippage,clrPink);
        }
    } 
  else 
    Print("OrderSelect() вернул ошибку - ",GetLastError());

J'ai un ordre de profit sur un ticket, je veux le fermer quand il atteint -x.

Mais tous les ordres sont fermés d'un coup.

Pouvez-vous me dire comment procéder correctement ?

 
Alexander Avksentyev #:

Bonjour

J'ai un ordre de profit sur un ticket, je veux le fermer quand il atteint -x.

Mais tous les ordres sont fermés d'un coup.

Pouvez-vous me dire comment le faire correctement ?

Essayez de le faire de cette façon

 int min_ticket=FindTicketOrder();
    if(OrderSelect(min_ticket, SELECT_BY_TICKET,MODE_TRADES)) 
    { 
      if(OrderProfit()<=-x);
        {
         OrderClose(min_ticket,OrderLots(),OrderClosePrice(),iSlippage,clrPink);
        }
    } 
  else 
    Print("OrderSelect() вернул ошибку - ",GetLastError());

En général, vous devez développer l'ensemble de la fonction pour comprendre ce que vous faites

//+------------------------------------------------------------------+
void Функция()
  {
   ...твой код, возможные ошибки;
  }
//+------------------------------------------------------------------+
 
Alexander Avksentyev #:

Bonjour

J'ai un ordre de profit sur un ticket, je veux le fermer quand il atteint -x.

Mais tous les ordres sont fermés d'un coup.

Pouvez-vous me dire comment procéder correctement ?

Comment faites-vous pour que tous les ordres soient clôturés si je ne vois qu'un seul appel OrderClose ?

Ce n'est pas très clair où ce code est même appelé... L'algorithme du robot n'est pas clair non plus...
 
Mihail Matkovskij #:

Comment fermez-vous tous les ordres si je ne vois qu'un seul appel OrderClose ?

Ferme une commande dès qu'elle est ouverte

 
Tretyakov Rostyslav #:
Ce n'est pas ce que vous vouliez - c'est un exemple. Je faisais un EA pour le trading semi-automatique.


Ce que vous voulez, vous devez l'écrire vous-même).

S'il y a quelque chose, je vous aiderai.

Je vais donc décrire plus précisément ce dont j'ai besoin pour cette EA Fast Pending Orders Panel, j'ai partiellement trouvé des morceaux de code dans cette liste (20%), mais le reste, je vais devoir vous le demander, chers collègues.


1) Shell : affiche un tableau avec des boutons sur le graphique : BUY_lp(lower ASK in___pips), SELL_hp (higher BID in___pips) - nombre de pips saisi manuellement sur le tableau, BUY_lt (lower ASK up to____seconds),SELL_ht (higher BID up to____seconds) - nombre de secondes saisi manuellement sur le tableau, CLOSE_buys, CLOSE_sells - clôture de tous les ordres.

a) code pour créer un bouton sur le graphique ; le tableau d'affichage comme objet de fond ;

b) code pour entrer des valeurs dans ce tableau d'affichage (pips, secondes) champs spéciaux pour cela

c) enregistrer la valeur des pips dans un certain fichier de mémoire où le prix est fixé après avoir appuyé sur le bouton et le nombre de pips pour le prix auquel vous voulez entrer sur le marché est ajouté ou soustrait ;

d) enregistrer la valeur des secondes dans un certain fichier de mémoire, où la valeur minimale/maximale du prix pour la période "en secondes" sélectionnée est comptée en continu ;

2) à l'intérieur : exécution.

a) lire la valeur en pips et le prix fixe du fichier, après avoir appuyé sur le bouton BUY_lp ou SELL_hp, afin de le comparer au prix actuel ;

b) lorsque le bouton BUY_lt ou SELL_ht est pressé, la valeur en secondes et le prix maximum/minimum modifié sont lus dans un fichier afin d'être comparés au prix actuel ;

c) lorsque le prix actuel atteint la valeur requise - entrer sur le marché (ordre ouvert) ;

d) bouton pour fermer l'ordre ou tous les ordres. Ce bouton doit fonctionner différemment selon le mode d'exécution ; si le prix a été saisi par "pips", alors, après la fermeture d'un nombre égal de pips, le prix de fermeture doit être différent dans la "meilleure" direction (en attendant ce prix après avoir appuyé sur "fermer"), si le bouton est "par secondes", alors le meilleur prix doit être calculé pour une certaine période (en attendant ce prix, mais pas plus bas/haut au moment où vous avez appuyé sur le bouton).

 
Alexander Avksentyev #:

Ferme la commande dès qu'elle est ouverte

Eh bien, oui. Le profit a toujours une valeur négative au moment où il est saisi en raison de l'écart... Essayez de diminuer la valeur de x.

Et il est préférable de créer votre propre fonction de calcul des bénéfices en pips (bien sûr, si vous ne voulez pas la définir dans la monnaie de dépôt).
 
Mihail Matkovskij #:

Eh bien, oui. Le profit a toujours une valeur négative au moment de l'entrée en raison de l'écart... Essayez de réduire la valeur de x.

-x inférieur à l'écart, sortie vers Print

if(OrderProfit()<=-x);

sera vrai si les conditions correspondent. ajouter une commande de fermeture. ferme immédiatement

 
Mihail Matkovskij #:

Eh bien, oui. Le profit a toujours une valeur négative au moment de l'entrée en raison de la présence du spread... Essayez de réduire la valeur de x.

Et il serait préférable de créer votre propre fonction pour calculer le profit en pips (bien sûr, si vous ne voulez pas le définir dans la monnaie de dépôt).

Vous pouvez le faire avec des points, cela ne fait pas grande différence. Je voulais juste le rendre plus simple

Raison: