[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 478

 
abolk:

Le lien https://www.mql5.com/ru/code présente un entrepôt rempli de produits similaires.

vous avez donné un lien vers une énorme section entière ))))

C'est drôle.

 

Bonjour !

Je demande de l'aide, je me suis déjà tué, je n'arrive pas à comprendre ! !! J'ai besoin, qu'à l'accomplissement +20 p., SL de l'ordre a été réarrangé sur le prix d'ouverture, c'est-à-dire la fonction donne 77

 for(i=(OrdersTotal()-1); i>=0; i--) // перебор ордеров 
         { 
       if (!OrderSelect(i, SELECT_BY_POS))
      {
         continue;
      }

      if (OrderSymbol()!=Instr||OrderMagicNumber()!=MN)
          continue;
      if(OrderStopLoss()==OrderOpenPrice())
            break;    
       if (   OrderProfit()>=(MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub)        ) 
   return(77);
                  
           }
   

Je n'arrive pas à le faire fonctionner.

 
demlin:

J'ai besoin que le SL de l'ordre soit réinitialisé au prix d'ouverture lorsqu'il atteint +20 pips, c'est-à-dire que la fonction montre 77

20 p n'est pas calculé de cette façon, vous devez utiliser la fonction OrderOpenPrice() et la comparer avec le prix actuel, c'est-à-dire que lorsque l'ordre atteint un profit positif ou nul, vous voulez probablement que le résultat soit 77, c'est-à-dire

for(i=(OrdersTotal()-1); i>=0; i--) // перебор ордеров 
         { 
            if (!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;
            if (OrderSymbol()!=Instr||OrderMagicNumber()!=MN)  continue;
            if(OrderStopLoss()==OrderOpenPrice()) break;    
            if ( OrderProfit()>=0)) return(77);
           }
la fonction OrderProfit() renvoie le profit de l'ordre dans la devise de dépôt, et non en pips.
 
Pouvez-vous me dire s'il est possible pour un EA de récupérer les données d'un indicateur (de ceux qui le permettent) à partir d'un autre indicateur. Je n'ai pas trouvé une telle opportunité dans les types de prix.
 
IgorM:

20p n'est pas calculé de cette façon, vous devez utiliser la fonction OrderOpenPrice() et la comparer au prix actuel, apparemment vous voulez que le résultat 77 soit retourné lorsque l'ordre atteint un profit positif ou nul, alors cela ressemble à ceci :

la fonction OrderProfit() renvoie le profit de l'ordre dans la devise de dépôt, et non en pips.

C'est à peu près ce que je pensais, je ne calcule pas les 20 pips, ils sont définis dans la variable Bezub. J'essaie de comparer le profit actuel de l'ordre dans la devise de dépôt (OrderProfit()) et les 20 points requis dans la devise de dépôt ((MarketInfo(Symbol (),MODE_TICKVALUE)*Bezub)
 
demlin:
C'est à peu près ce que je pensais, je ne calcule pas 20 p. Ils sont définis dans la variable Bezub. J'essaie de comparer le profit actuel de l'ordre dans la devise de dépôt (OrderProfit()) et le niveau requis de 20 p dans la devise de dépôt ((MarketInfo(Symbol (),MODE_TICKVALUE)*Bezub)

alors vous avez oublié de prendre en compte le prix actuel et le nombre de pips que le prix a bougé depuis que l'ordre a été placé :

(OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub

ZZZEROXXX:
Veuillez m'indiquer si je peux obtenir les données d'un indicateur (ceux qui le permettent) à partir d'un autre indicateur. Je n'ai pas trouvé une telle opportunité dans les types de prix.

iCustom()

https://book.mql4.com/ru/samples/shared
 
IgorM:

alors vous avez oublié de prendre en compte le prix actuel et le nombre de pips que le prix a bougé depuis que l'ordre a été placé :

(OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub


J'ai essayé votre système. Alert donne une valeur de (OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub de -0.033. Bien qu'il y ait 21p dans le bénéfice ! Est-ce normal ?
 
demlin:
J'ai testé votre système. Une alerte est générée pour (OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub valeurs -0.033. Bien qu'il y ait 21p dans le bénéfice ! Est-ce normal ?

Désolé, j'écris sans vérifier, je me suis trompé ici, ça devrait fonctionner comme ça :

Vendre :(OrderOpenPrice()-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

Achat : (Ask-OrderOpenPrice())*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

 
IgorM:

Désolé, j'écris sans vérifier, je me suis trompé ici, ça devrait fonctionner comme ça :

Vendre :(OrderOpenPrice()-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

Achat : (Ask-OrderOpenPrice())*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

Il n'y a pas encore de chiffres précis non plus. Je ne pense pas que ce soit une question de formule. L'expression (MarketInfo(Symbol (),MODE_TICKVALUE)*Bezub) elle-même donne essentiellement 20 pour l'euro. Le point est quelque part dans la boucle for
 
IgorM:

Désolé, j'écris sans vérifier, je me suis trompé ici, ça devrait fonctionner comme ça :

Vendre :(OrderOpenPrice()-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

Achat : (Ask-OrderOpenPrice())*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

Il n'y a pas encore de chiffres précis non plus. Je ne pense pas que ce soit une question de formule. L'expression (MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub) elle-même donne essentiellement 20 pour EURUSD. C'est quelque part dans la boucle for