[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 486

 
abolk:

zeigen, wie Sie die Variable global_trailing_SP lesen


Im Moment wird der Nachlaufwert für die Hauptposition von ATR wie folgt berechnet:

void Trailing_Stop_by_ATR_SP(int Timeframe,int Period_ATR_SP,double Multiply_SP,int digits_symbol,int Magic)
{  
   double High_1     = NormalizeDouble(iHigh(Symbol(),Timeframe,1),Digits);
   double Low_1      = NormalizeDouble(iLow(Symbol(),Timeframe,1),Digits);
   double atr        = iATR(Symbol(),Timeframe,Period_ATR_SP,1);
   double new_trail  = Low_1 + NormalizeDouble(((Multiply_SP*atr)*digits_symbol)*Point,Digits);
    
   for(int count = OrdersTotal()-1; count >= 0; count--)
      {  OrderSelect(count,SELECT_BY_POS,MODE_TRADES);
      
         if (OrderType() == OP_SELL && OrderMagicNumber() == Magic)
            {  double Op_Price = NormalizeDouble(OrderOpenPrice(),Digits);
               double Stp_Loss = NormalizeDouble(OrderStopLoss(),Digits);
               
               if (new_trail < Stp_Loss && new_trail > High_1)
                  {  
                     OrderModify(OrderTicket(),Op_Price,new_trail,0,0,White);
                  }
            }
      }
}
Dies ist jedoch kein Problem, da die Hauptposition fehlerfrei nachgezogen wird. Das Problem besteht darin, denselben Wert anderen Positionen zuzuordnen.
 
FOReignEXchange:

Ich verstehe es also nicht. Besteht der anhängige Auftrag zum Zeitpunkt der Änderung des Hauptauftrags?

Wenn dies der Fall ist, befinden sich die Änderung des Hauptauftrags und die Änderung des schwebenden Auftrags im selben Block. Und wenn der Hauptauftrag geändert wird, sollte das auch für den schwebenden Auftrag gelten, wenn Sie das wünschen.

Eine andere Sache ist, dass unsere Idee nicht funktioniert. Das bedeutet einen Fehler in der Bedingung. Versuchen Sie, alles so zu machen, wie in der Bedingung für die Änderung des Hauptauftrags, wie ich es oben gezeigt habe. Ich habe den Eindruck, dass der Fehler in der Logik liegt. Das überrascht mich nicht. Hier ist alles sehr kompliziert. Es sollte einfacher sein.


Es ist durchaus möglich, dass Sie es einfacher machen sollten. Das ist Unerfahrenheit.)

Im Moment sieht es so aus, dass die Hauptposition in einer separaten Funktion nachgestellt wird. Wenn es dann noch schwebende Aufträge oder andere Positionen mit anderen Majors gibt, werden deren Werte mit dem Stop der Hauptposition verglichen. Und wenn sie unterschiedlich sind, wird der Wert der Hauptsache genommen.

 
FOReignEXchange:

Das überrascht mich nicht. Es ist ein bisschen kompliziert für Sie. Sie sollten es einfach halten.

Ich habe es einfach gehalten. Das Problem scheint bis jetzt verschwunden zu sein. Kombinierter Nachlauf für alle Positionen. Ich werde die Änderung ausstehender Aufträge in einer separaten Funktion vornehmen. Vielen Dank.)))
 
tol64:
Ich habe es einfacher gemacht. Das Problem scheint bis jetzt verschwunden zu sein. Vielen Dank.)))


Ist die Pause veränderbar oder so? :)

Die Handschrift muss sich ändern. Je klarer die Handschrift ist, desto weniger Fehler werden gemacht. Versuchen Sie, nicht alles auf einen Haufen zu packen, so wenig Variablen und andere unnötige Dinge wie möglich. Beginnen Sie geschweifte Klammern immer in einer neuen Zeile, damit die Blöcke deutlich sichtbar sind.

 
FOReignEXchange:

Was, hat sich die Falle verändert oder so?


Ja, in der obigen Funktion, die durch ATR nachgezogen wird, habe ich die Magic-Prüfung ausgeschlossen und eine Pause hinzugefügt:

if (OrderType() == OP_SELL || OrderType() == OP_SELLSTOP) 
 
FOReignEXchange:


Die Handschrift muss geändert werden. Je klarer die Handschrift ist, desto weniger Fehler werden gemacht. Versuchen Sie, nicht alles auf einen Haufen zu packen, sondern so wenig Variablen und Unnötiges wie möglich. Schreiben Sie geschweifte Klammern immer in eine neue Zeile, damit die Blöcke deutlich sichtbar sind.

Vielen Dank für die Tipps. Ich graviere die besten von ihnen in meine Neuronen ein.))
 
tol64:


Ja, in der obigen Funktion, ATR trailing, habe ich den Magic Check ausgeschlossen und die Pausen hinzugefügt:


Ja, das stimmt, ich wollte gerade Magik sagen. Sie sehen. Unnötige Variablen sind überflüssig. Wir sehen uns später.
 
FOReignEXchange:

Ja, das stimmt, ich wollte Magik sagen. Sie sehen. Unnötige Variablen sind überflüssig. Wir sehen uns später.


Das ist eine kluge Idee: "Kein Bedarf an unnötigen Variablen".
Keine Notwendigkeit für eine Magie - warum sollte man den Auftrag für eine Magie überprüfen?
Wenn Sie einen Auftrag aus einem anderen EA ändern, ist das in Ordnung.
Man sollte den Magier als Klasse generell ausschließen - seine Entwickler haben ihre Zeit verschwendet - und wir wurden von allen Arten von Magiern einer Gehirnwäsche unterzogen.

p.s. Und für den Tänzer gilt: Was im Weg ist, wird am besten beschnitten.

 
abolk:


kluge Idee - "kein Bedarf an zusätzlichen Variablen"
und "kein Bedarf an einem Magier" - warum die Bestellung eines Magiers überprüfen?
eine Bestellung eines anderen Beraters ändern - keine große Sache.
den Magier als Klasse überhaupt ausschließen


)))) Nein, ich denke, es wäre besser, den Magier zu verlassen. Sie sollten die ausstehenden Aufträge einfach stehen lassen.

Um genau zu sein, sollten wir die Magier, die gebraucht werden, hier lassen. Wenn wir mehrere Expert Advisors auf verschiedenen Charts verwenden, sollten wir auch Symbole in die Überprüfung einbeziehen. Aber so weit bin ich noch nicht gekommen. ))

 

Ich verwende überhaupt keine Zauberer. Manchmal sind es aber auch nur ein paar Artikel auf einmal. Ich benutze Fahrkarten. Es ist viel einfacher, dies über OrderSelect zu überprüfen. Und die Funktion OrderSend wird deutlicher. Nun, jeder ist Herr seiner eigenen Handschrift. Ich persönlich hatte noch nie Probleme ohne Zauberer.

Das Ticket führt nirgendwohin. Das ist sehr praktisch.