Antwort

Änderung des Wertes von Parametern

3 Antworten

chengsmine

Abonnent, bbp_participant, Gemeinschaft, 42 Antworten.

Profil besuchen

vor 10 Jahren #111615

Ich habe einen Anfangswert für einen bestimmten Parameter DS auf 5 (Eingabe) festgelegt, wenn der EA startet. Nach der Schließung einiger Trades wird DS auf 10 erhöht. Aber es scheint, dass dieser neue Wert nicht den ursprünglichen Wert von DS ersetzt hat, wenn der EA neu startet. Zum Beispiel,

Eingang: DS=5;

 

Regel 1:

PU= Open (0) + ConvetToRealPips(DS)

 

Nach vielen Regeln:

Alle Aufträge schließen

DS=DS+5

 

Der neue Wert von DS ist nun 10, aber DS ist immer noch <=5 in Regel 1, wenn der EA neu startet (zu Regel 1 zurückkehrt).

 

Und warum? Gibt es eine Lösung für dieses Problem?

 

0

Mark Fric

Administrator, sq-ultimate, 2 Antworten.

Profil besuchen

vor 10 Jahren #122729

Wenn Sie einen EA neu starten, vergisst er alle im Speicher abgelegten Werte und verwendet wieder die Standardwerte.

Dafür gibt es keine einfache Lösung, es funktioniert einfach so.

 

Die einzige Möglichkeit, frühere Werte aus der Zeit vor dem EA-Neustart beizubehalten, besteht darin, sie in einer Datei zu speichern und dann wieder zu laden.

 

Oder Sie können versuchen, DS aus Ihren Bestellungen zu erkennen - wenn Sie zum Beispiel bei jeder Bestellung eine andere Größe verwenden, können Sie anhand der Größe der aktuellen Bestellung erkennen, welcher DS-Wert beim letzten Mal verwendet wurde.

 

Mark

Mark
StrategyQuant Architekt

0

chengsmine

Abonnent, bbp_participant, Gemeinschaft, 42 Antworten.

Profil besuchen

vor 10 Jahren #122733

Wie können Sie sich an die Größe der letzten Bestellung erinnern, da Sie oben erwähnen, dass alle im Speicher abgelegten Werte gelöscht werden, sobald Sie einen EA neu starten?

0

Mark Fric

Administrator, sq-ultimate, 2 Antworten.

Profil besuchen

vor 10 Jahren #122751

Sie können sich den Wert der letzten Bestellung nicht merken, aber Sie können ihn aus der Bestellhistorie abrufen.

 

Fügen Sie diese Funktion einfach am Ende der Datei {EA Wizard}/code/CustomFunctions.mq4 ein:

 

double sqGetLastPositionSize(int orderMagicNumber) {
   for(int i=OrdersHistoryTotal(); i>=0; i-) {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true && OrderSymbol() == Symbol()) {
         if(orderMagicNumber == 0 || OrderMagicNumber() == orderMagicNumber) {
            return(OrderLots());
         }
      }
   }
 
   zurück(0);
}

 

Dann können Sie sie in Bedingungen verwenden, indem Sie die benutzerdefinierte Funktion sqGetLastPositionSize(YourMagicNumber) aufrufen.

 

Mark

Mark
StrategyQuant Architekt

0

Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)