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

 
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderMagicNumber()!=MAGIC_3 || OrderSymbol()!=SMB_) continue;        //  здеся отсеиваются ордера не со своим магиком
      if(OrderMagicNumber()==MAGIC_3 && OrderSymbol()==SMB_)                     //  здеся отсеиваются ордера не со своим магиком
        {
         if(OrderType()==OP_SELL)
           {
            ticket=OrderTicket();OpenPrice=OrderOpenPrice();SL=OrderStopLoss();TP=OrderTakeProfit();comm_=OrderComment();
        //    if( comm_ != (DoubleToString(MAGIC_3,0)+" Uni OP_SeLL") || comm_ != (DoubleToString(MAGIC_3,0)+" UNI OP_SELLSTOP") ) return(0);
            RefreshRates();
            //+------------------TAKE НА SELL------------------------------------+ берёт несвой магик
            if(TP==0)//|| SL==0)   потому и здесь закомментировано || SL==0   поменял || на &&
              {
               TP    = OpenPrice - TakeProfit*Point;
               SL    = OpenPrice + 2*TakeProfit*Point;
               Color = clrViolet;
               Print(MAGIC_3," TAKE НА SELL ticket: ",ticket,", PR ",OpenPrice," SL: ",SL," TP: ",TP," Bid: ",Bid_);
               MODE_POS_b(ticket,OpenPrice,SL,TP,Color);
              }
            RefreshRates();
            //+------------------ОТКРЫТИЕ BUYSTOP--------------------------------+
            if(SchBuyStop_b(MAGIC_3,SMB_)==0 && SchSell_b(MAGIC_3,SMB_)==2)
              {
            if( SL==0 )return(0);
               OP_CMD_ = OP_BUYSTOP;
               Price   = NormalizeDouble(SL,Digits);
               SL      = 0;
               TP      = 0;
               lts     = SchSellLots_b(MAGIC_3,SMB_)*2;
               lts     = MathRound(lts/LotStep)*LotStep; // округление объема до ближайшего допустимого
               Color   = clrYellow;   //clrGreenYellow
               comm_   = DoubleToString(MAGIC_3,0)+" UNI OP_BUYSTOP";
               Print(MAGIC_3," OP_BUYSTOP:PR  ",Price," SL: ",SL," TP: ",TP," lts: ",lts," Ask: ",Ask_);
               res=bool_OP_b(SMB_,OP_CMD_,lts,Price,SL,TP,comm_,MAGIC_3,Color);
              }
            //+------------------ОТКРЫТИЕ SELLLIMIT------------------------------+
            if(SchSellLimit_b(MAGIC_3,SMB_)==0 && TP>0 && SchSell_b(MAGIC_3,SMB_)==1)
              {
               OP_CMD_ = OP_SELLLIMIT;
               Price   = TP + 2*Point*TakeProfit;
               Price   = NormalizeDouble(Price,Digits);
               TP      = TP + Point*TakeProfit;
               SL      = NormalizeDouble(SL,Digits);
               lts     = MathRound(SchSellLots_b(MAGIC_3,SMB_)/LotStep)*LotStep; // округление объема до ближайшего допустимого
               Color   = clrMediumSpringGreen;
               comm_   = DoubleToString(MAGIC_3,0)+" UNI OP_SELLLIMIT";
               Print(MAGIC_3," OP_SELLLIMIT:PR  ",Price," SL: ",SL," TP: ",TP," lts: ",lts," Ask: ",Ask_);
               res=bool_OP_b(SMB_,OP_CMD_,lts,Price,SL,TP,comm_,MAGIC_3,Color);Sleep(1000);
              }
           }
        }
      //   break;
     }
 
Alexander Boltunov:

Bonjour à tous ! Pouvez-vous me dire comment définir la condition de franchissement d'une ligne horizontale par le prix ? Et comment réaliser cette fonction avec une précision maximale (qui réagirait à chaque tick) ?

Merci d'avance))

J'ai ajouté la suppression de ma ligne dans OnDeinit
Dossiers :
-LINE.mq4  6 kb
 
Artyom Trishkin:

Quel élan ?

Peut-on ne pas utiliser de jargon ? Ce n'est pas comme si on était à l'école à la récréation à discuter de qui a les "adics", "yo" les plus cool...

Stoploss
 
ZZuretc:

if(OrderMagicNumber()!=MAGIC_3 || OrderSymbol()!=SMB_) continue ; // ici, les ordres qui n'ont pas de numéro magique sont supprimés.
if(OrderMagicNumber()==MAGIC_3 && OrderSymbol()==SMB_) // ici, les ordres qui n'ont pas de numéro magique sont supprimés.

Un double dépistage semble être excessif

 
STARIJ:

Un double dépistage semble excessif

mais ils n'entrent pas, et le bypass est réglé sur un, et le selimit est réglé sur plusieurs...
 
ZZuretc:
mais ce n'est pas le leur qui passe, et le bypass est réglé sur un et le selimit sur plusieurs.
Essayez de lancer le débogueur en appuyant sur F5 dans MetaEditor. Vous pouvez y contrôler les valeurs des variables
 
STARIJ:
Essayez de lancer le débogueur en appuyant sur F5 dans le MetaEditor. Vous pouvez y suivre les valeurs des variables

Je le débogue depuis un mois, je n'arrive pas à le débugger. Voici quelques conseils avisés de la part d'experts chevronnés.

 
kaktyzzz:

Salutations, aidez à déchiffrer la suppression des objets, supposément les objets avec des noms comme Incl005_011 devraient être supprimés, mais ils ne sont pas supprimés ((

Le morceau de texte que vous avez posté est un texte décompilé. Il est traité négativement ici. Sanction = interdiction. Veuillez l'enlever.
 
STARIJ:
Le morceau de texte que vous avez posté est une décompilation. Il est traité négativement ici. Punition = interdiction. Supprimez-la.
Comment suis-je censé savoir s'il est décompilé ou non, je l'ai supprimé.
 
ZZuretc:
La ligne horizontale repose sur une certaine VALEUR. Supposons que si(Bid>=0.8765){return(0);}

Merci !