Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 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:

Hallo zusammen! Könnten Sie mir bitte sagen, wie ich die Bedingung festlegen kann, dass der Preis eine horizontale Linie kreuzt? Und wie kann man diese Funktion mit maximaler Genauigkeit realisieren (die bei jedem Tick reagieren würde)?

Vielen Dank im Voraus))

Ich habe die Löschung meiner Zeile in OnDeinit hinzugefügt
Dateien:
-LINE.mq4  6 kb
 
Artyom Trishkin:

Welcher Elch?

Dürfen wir keinen Jargon verwenden? Es ist ja nicht so, dass wir in der Schule in der Pause darüber diskutieren, wer das coolere "adics", "yo"... hat.

Stoploss
 
ZZuretc:

if(OrderMagicNumber()!=MAGIC_3 || OrderSymbol()!=SMB_) continue; // hier werden die Aufträge, die keine magische Zahl haben, entfernt
if(OrderMagicNumber()==MAGIC_3 && OrderSymbol()==SMB_) // hier werden die Aufträge, die keine magische Zahl haben, entfernt

Zweimaliges Screening scheint übertrieben zu sein

 
STARIJ:

Zweimaliges Screening scheint übertrieben

aber sie kommen nicht rein, und der Bypass ist auf eins eingestellt, und das Selimit ist auf mehrere
 
ZZuretc:
aber es sind nicht die, die durchkommen, und der Bypass ist auf eins und der Selimit auf mehrere eingestellt
Versuchen Sie, den Debugger zu starten, indem Sie F5 im MetaEditor drücken. Dort können Sie die Werte der Variablen überwachen
 
STARIJ:
Versuchen Sie, den Debugger zu starten, indem Sie F5 im MetaEditor drücken. Sie können dort Variablenwerte verfolgen

Ich habe einen Monat lang an der Fehlersuche gearbeitet und kann das Problem nicht lösen. Hier sind einige kluge Ratschläge von Ihnen, von erfahrenen Experten

 
kaktyzzz:

Grüße, Hilfe beim Entschlüsseln des Löschens von Objekten, angeblich sollten Objekte mit Namen wie Incl005_011 gelöscht werden, aber sie werden nicht gelöscht ((

Der von Ihnen gepostete Text ist ein dekompilierter Text. Sie wird hier negativ behandelt. Strafe = Verbot. Bitte entfernen Sie es.
 
STARIJ:
Der von Ihnen gepostete Text ist eine Dekompilierung. Sie wird hier negativ behandelt. Bestrafung = Verbot. Löschen Sie es.
Woher soll ich wissen, ob es dekompiliert ist oder nicht, ich habe es gelöscht.
 
ZZuretc:
Die horizontale Linie steht für einen bestimmten WERT. Angenommen if(Bid>=0.8765){return(0);}

Ich danke Ihnen!

Grund der Beschwerde: