Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1682

 
Etwas überarbeitet, jetzt do while anstelle der for-Hauptschleife, aber immer noch kein Auftreten der ersten Bedingung in der zweiten verschachtelten Schleife!
int GetMagic(Order &order)
{
  int magic = 0;
  int unique = 0;
  
  if(order.cmd == OP_SELLSTOP || order.cmd == OP_BUYSTOP){
    if(OrdersTotal()){
      do{
        magic++;
        for(int i = OrdersTotal(); i > 0 ; i --){
          if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
            Print( "!!!!!!!!!!!!!!!!!!!");//<----------НЕ ПРИНТУЕТСЯ
            if(magic != OrderMagicNumber())
              unique ++;
          }
        }
      }while(unique < OrdersTotal());
    }else return (magic + 1);
  }
  return magic;
}
 
MakarFX #:

Wirklich?!))

Haben Sie es ausprobiert?

Bei mir funktioniert der Farbwechsel schon lange so, aber nicht auf der Linie, obwohl es keinen Unterschied machen sollte.

                     if(SymOpen < SymClose) {
                       CColor=Mirroring?BearBarColor:BullBarColor;
                        SetIndexStyle(32+(num*8),DRAW_HISTOGRAM,STYLE_SOLID,Mirroring?1:WidthOC,CColor); SetIndexLabel(32+(num*8), SubSymbol);
                        SetIndexStyle(33+(num*8),DRAW_HISTOGRAM,STYLE_SOLID,Mirroring?WidthOC:1,CColor); SetIndexLabel(33+(num*8), SubSymbol);
                        SetIndexStyle(34+(num*8),DRAW_HISTOGRAM,STYLE_SOLID,Mirroring?WidthOC:1,CColor); SetIndexLabel(34+(num*8), SubSymbol);
                        SetIndexStyle(35+(num*8),DRAW_HISTOGRAM,STYLE_SOLID,Mirroring?1:WidthOC,CColor); SetIndexLabel(35+(num*8), SubSymbol);

PS. Wenn ich mir meinen anderen Code ansehe, ändert sich dort die Farbe der Zeile

SetIndexStyle(num,DRAW_LINE,STYLE_SOLID,1,BullColor);
 
Vitaly Muzichenko #:

Ich habe schon seit langem einen Farbwechsel, der auf diese Weise funktioniert, aber nicht auf der Linie, obwohl es keinen Unterschied machen sollte.

PS. Wenn ich mir meinen anderen Code ansehe, ändert er die Farbe der Zeile

SetIndexStyle(num,DRAW_LINE,STYLE_SOLID,1,BullColor);

Ändert die gesamte Zeile, nicht nur den gewünschten Abschnitt

 
MakarFX #:

Ändert die gesamte Zeile, nicht nur den rechten Abschnitt

Nun, er schrieb, dass man die ganze Zeile ändern muss

 
Also, ich habe den Code für den Test angepasst, versuchen Sie, es auszuführen und Sie erhalten eine Endlosschleife auf die zweite Bestellung :(
Dateien:
 
Nerd Trader #:
Also, ich habe den Code für den Test angepasst, versuchen Sie, es auszuführen und Sie erhalten eine Endlosschleife auf die zweite Bestellung :(

Ich frage mich! Warum?

Warum dies, welche heilige Bedeutung hat es?

int GetMagic(Order &order)
{
  int magic = 0;
  int unique = 0;
  
  if(order.cmd == OP_SELLSTOP || order.cmd == OP_BUYSTOP){
    if(OrdersTotal()){
      do{
        magic++;
        for(int i = OrdersTotal(); i > 0 ; i --){
          if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
            Print( "!!!!!!!!!!!!!!!!!!!");//<----------НЕ ПРИНТУЕТСЯ
            if(magic != OrderMagicNumber())
              unique ++;
          }
        }
      }while(unique < OrdersTotal());
    }else return (magic + 1);
  }
  return magic;
}

---

Sie suchen nach Nummern, also suchen Sie nach Nummern.

Wenn Sie 2 Haftbefehle haben, wird er sie durchgehen, aber er kann den 3. oder den 23. nicht finden.

---

Sie scheinen sich über die Aufgabe nicht ganz im Klaren zu sein, also ist das die Lösung.

 
Nerd Trader #:

die Schleife ist nicht richtig eingestellt:

for(int i = OrdersTotal(); i > 0 ; i --){

sollte es so sein:

for(int i = OrdersTotal()-1; i >= 0 ; i --){
 
Aleksei Stepanenko #:

die Schleife ist nicht richtig eingestellt:

sollte es so sein:

Ja! Es funktioniert! Aber warum früher noch in die zweite for-Schleife und wenn ich einfügen nächste Zeile Print() - es wird ausgeführt werden (unendlich), aber nicht weiter gehen? Auf jeden Fall danke, jetzt kann ich wenigstens schlafen gehen.
 
Vitaly Muzichenko #:

Ich frage mich! Warum?

Warum dies, welche heilige Bedeutung hat es?

---

Sie suchen nach Nummern, also suchen Sie nach Nummern.

Wenn Sie 2 Haftbefehle haben, wird er sie durchgehen, aber er kann den 3. oder den 23. nicht finden.

---

Sie scheinen sich über die Aufgabe nicht ganz im Klaren zu sein, also ist das die Lösung.

Nur muss der Majik einzigartig sein, d.h. er darf nicht mit den anderen übereinstimmen.
 
Aleksei Stepanenko #:

die Schleife ist nicht richtig eingestellt:

sollte es so sein:

Was ist der Unterschied? Und beginnt die Bestellnummerierung nicht bei Null und nicht bei Eins?