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

 

Bonjour à tous !

Quel est le moyen le plus simple d'écrire (modifier) un ordre dans mon conseiller expert simple pour y supprimer les Take Profit et Stop Loss lorsqu'une certaine condition se produit, jusqu'à un maximum de trois ordres dans une direction (si c'est important), je suppose que le nombre d'ordres est utilisé, dois-je en écrire un nouveau ? J'attends quelqu'un qui se soucie de moi.

 
Порт-моне тв #:

Bonjour à tous !

Quel est le moyen le plus simple d'écrire (modifier) un ordre dans mon conseiller expert simple pour y supprimer les Take Profit et Stop Loss lorsqu'une certaine condition se produit, jusqu'à un maximum de trois ordres dans une direction (si c'est important), je suppose que le nombre d'ordres est utilisé, dois-je en écrire un nouveau ? J'attends quelqu'un qui se soucie de moi.

OrderModify(OrderTicket(), OrderOpenPrice(), 0, 0, 0);
 
Ivan Butko #:

Malheureusement, il est difficile de comprendre comment utiliser un tel code.


J'ai essayé de mettre un drapeau en 1 lors de l'ouverture d'un ordre d'achat, et un drapeau en 0 lors de sa fermeture, et j'ai ajouté ce dernier à la condition d'ouverture. Cela n'a pas fonctionné)
C'est étrange, en fait la règle est brisée : ouvrir si le drapeau==0. Et il s'est quand même ouvert à 1 sur la même bougie.

Montre-moi comment tu as fait.
 
Alexey Viktorov #:

Pourquoi si compliqué ?

Ne fais pas le malin. Ce n'est pas le sujet de la question.

 
MakarFX #:
Montre-moi comment tu as fait.

Cela semble fonctionner, je l'ai refait comme ceci. Je vais maintenant l'essayer sur la vente et voir s'ils peuvent être indépendants l'un de l'autre.

int Buy=0,
    Sell=0;

void OnTick(void)
  {
    double 
    ma=iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,0),
    ma2=iMA(NULL,0,80,0,MODE_SMA,PRICE_CLOSE,0);

    if (ma>ma2 && Buy==0) 
      { 
        OrderSend(Symbol(), OP_BUY, lots, Ask, 3, Bid - SL * Point, 0, NULL, 888, 0, Blue);
        Buy=1; 
      }
      
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderMagicNumber()!=888 || OrderSymbol()!=Symbol()) continue;
      //--- check order type 
      if(OrderType()==OP_BUY)
        {
         if(perceptron_B() < Porog_B)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White))
               Print("OrderClose error ",GetLastError());
            Buy=1;
           }
           
         break;
        }

UPD
Ouf, ça a marché) J'ai fait la même chose pour vendre, maintenant ils peuvent s'ouvrir indépendamment les uns des autres et avoir une logique différente.

 
Ivan Butko #:

Cela semble fonctionner, je l'ai refait comme ceci. Je vais maintenant l'essayer sur la vente et voir s'ils peuvent être indépendants l'un de l'autre.

UPD
Ouf, le design a fonctionné) J'ai fait la même chose pour sell, maintenant ils peuvent s'ouvrir indépendamment et être accompagnés d'une logique différente.

Il se fait probablement écraser lors de la compilation))))

 
MakarFX #:

Il se fait probablement insulter à la compilation))))

C'est ça ! Un peu,"la valeur de retour de 'OrderSend' devrait être vérifiée AI (2).mq4 34 9"

Mais cela semble fonctionner)
 
Ivan Butko #:

C'est ça ! Un petit peu,"la valeur de retour de 'OrderSend' devrait être vérifiée AI (2).mq4 34 9"

Mais cela semble fonctionner)

Faites-le comme ceci

    if (ma>ma2 && Buy==0) 
      { 
        if(OrderSend(Symbol(), OP_BUY, lots, Ask, 3, Bid - SL * Point, 0, NULL, 888, 0, Blue))
        Buy=1; 
      }
 
MakarFX #:

Faites-le !

Merci !

 
MakarFX #:

Merci !

Raison: