Antwort

TrailingStop-Funktion - fragwürdig

5 Antworten

Mike H.

Abonnent, bbp_participant, Gemeinschaft, 76 Antworten.

Profil besuchen

vor 9 Jahren #112526

Als ich die TrailingStop-Funktion im Editor betrachtete, stellte ich fest, dass der Code identisch war

sowohl für den BUY OrderType als auch für den SELL OrderType.

 

Ich habe mich gefragt, warum meine TrailingStop-Regeln für meine SHORT-TRADES nicht aktiviert wurden...

 

Nachfolgend sehen Sie, wie der EA-Assistent die Funktion schreibt: (ich habe die betreffenden Segmente unterstrichen) (beachten Sie die unterschiedlichen MagicNumbers)

 

double getOrderTrailingStop(int orderMagicNumber, int orderType, double price) {
   doppelter Wert = 0;
   if(orderMagicNumber == 2456) {
      Wert = ( 11 * getPointCoef(orderMagicNumber));
      if(Wert > 0) {
         if(orderType == OP_BUY || orderType == OP_BUYSTOP || orderType == OP_BUYLIMIT) {        
            Wert = Gebot - Wert;
         } sonst {
            Wert = Ask + Wert;
         }
      }

 

Dasselbe gilt für OrderBreakEven:
   }
   if(orderMagicNumber == 3798) {
      Wert = ( 11 * getPointCoef(orderMagicNumber));
      if(Wert > 0) {
         if(orderType == OP_BUY || orderType == OP_BUYSTOP || orderType == OP_BUYLIMIT) {        
            Wert = Gebot - Wert;
         } sonst {
            Wert = Ask + Wert;
         }
      }
   }
   return(NormalizeDouble(value, Digits));
}
 

Das Gleiche gilt für OrderBreakEven:

 

double getOrderBreakEven(int orderMagicNumber, int orderType, double price) {
   doppelter Wert = 0;
   if(orderMagicNumber == 2456) {
      Wert = ( 7 * getPointCoef(orderMagicNumber));
      if(Wert > 0) {
         if(orderType == OP_BUY || orderType == OP_BUYSTOP || orderType == OP_BUYLIMIT) {
            Wert = Gebot - Wert;
         } sonst {
            Wert = Ask + Wert;
         }
      }
   }
   if(orderMagicNumber == 3798) {
      Wert = ( 7 * getPointCoef(orderMagicNumber));
      if(Wert > 0) {
         if(orderType == OP_BUY || orderType == OP_BUYSTOP || orderType == OP_BUYLIMIT) {
            Wert = Gebot - Wert;
         } sonst {
            Wert = Ask + Wert;
         }
      }
   }
   return(NormalizeDouble(value, Digits));
}
 

Lieber Mark, anstatt auf ein Update des EA-Assistenten warten zu müssen, könntest du mir bitte zeigen, wie ich die Änderungen im Editor vornehmen kann?

 

??? Ändern Sie KAUFEN in VERKAUFEN und Wert = ???

0

Mike H.

Abonnent, bbp_participant, Gemeinschaft, 76 Antworten.

Profil besuchen

vor 9 Jahren #126086

Lieber Mark, ich konnte nicht mehr warten und habe bereits die notwendigen Änderungen vorgenommen...

 

   if(orderMagicNumber == 3978) {
      Wert = ( 11 * getPointCoef(orderMagicNumber));
      if(Wert > 0) {
         if(orderType == OP_SELL || orderType == OP_SELLSTOP || orderType == OP_SELLLIMIT) {
            Wert = Ask + Wert;
         } sonst {
            Wert = Gebot - Wert;
 

   if(orderMagicNumber == 3798) {
      Wert = ( 0 * getPointCoef(orderMagicNumber));
      if(Wert > 0) {
         if(orderType == OP_SELL || orderType == OP_SELLSTOP || orderType == OP_SELLLIMIT) {
            Wert = Ask + Wert;
         } sonst {
            Wert = Gebot - Wert;
 

 

Die TrailingStop- und BreakEven-Funktionen funktionieren jetzt gut...

 

Später, Mike H.

0

Mark Fric

Administrator, sq-ultimate, 2 Antworten.

Profil besuchen

vor 9 Jahren #126096

Hallo Mike,

 

Es tut mir leid, aber ichWenn ich mich nicht täusche, sind diese Codes funktional gleichwertig sind.

 

if(orderType == OP_SELL || orderType == OP_SELLSTOP || orderType == OP_SELLLIMIT) {
   Wert = Ask + Wert;
} sonst {
   Wert = Gebot - Wert;

}

 

ist funktionell dasselbe wie:

 

if(orderType == OP_BUY || orderType == OP_BUYSTOP || orderType == OP_BUYLIMIT) {

   Wert = Gebot - Wert;
} sonst {
   Wert = Ask + Wert;
}

 

Die If-Bedingung erkennt, ob es sich um einen Kauf- oder Verkaufsauftrag handelt, und verwendet den entsprechenden Wert. Sie haben nur die Prüfung geändert, aber es sollte genau dasselbe geschehen.

 

Wenn es also plötzlich funktioniert, hat es vielleicht eine andere Ursache als diese.

Mark
StrategyQuant Architekt

0

Mike H.

Abonnent, bbp_participant, Gemeinschaft, 76 Antworten.

Profil besuchen

vor 9 Jahren #126108

Hallo Mark, der erste Beitrag in diesem Thema zeigt, wie der EA-Assistent den Code ausgibt...

Der EA-Assistent gibt den Code wie folgt aus:

 

double getOrderTrailingStop(int orderMagicNumber, int orderType, double price) {
   doppelter Wert = 0;
   if(orderMagicNumber == 2456) {
      Wert = ( 11 * getPointCoef(orderMagicNumber));
      if(Wert > 0) {
         if(orderType == OP_BUY || orderType == OP_BUYSTOP || orderType == OP_BUYLIMIT) {        
            Wert = Gebot - Wert;
         } sonst {
            Wert = Ask + Wert;
         }
      }

 

Dasselbe gilt für OrderBreakEven:
   }
   if(orderMagicNumber == 3798) {
      Wert = ( 11 * getPointCoef(orderMagicNumber));
      if(Wert > 0) {
         if(orderType == OP_BUY || orderType == OP_BUYSTOP || orderType == OP_BUYLIMIT) {        
            Wert = Gebot - Wert;
         } sonst {
            Wert = Ask + Wert;
         }
      }
   }
   return(NormalizeDouble(value, Digits));
}

 

Was ich sehe, ist, dass es keine Bedingung für SELL gibt... Die 2 IFs sind identisch...

Oben sehen Sie, wie der EA-Assistent den Code schreibt >>> identische unterstrichene IFs für verschiedene Magic Numbers...

0

Mark Fric

Administrator, sq-ultimate, 2 Antworten.

Profil besuchen

vor 9 Jahren #126147

ja, aber die Logik ist korrekt. Wenn der Auftrag ein Kaufauftrag ist, wird der Preis auf eine Weise berechnet, andernfalls (der Auftrag muss dann ein Verkaufsauftrag sein) wird der Preis auf eine andere Weise berechnet.

 

 

 if(orderType == OP_BUY || orderType == OP_BUYSTOP || orderType == OP_BUYLIMIT) {  

  dies bedeutet, dass es sich um einen Kaufauftrag handelt

  …

} sonst {

  dies bedeutet, dass es sich um einen Verkaufsauftrag handelt

  …

}

 

Es scheint wirklich kein Fehler in dem EA zu sein, er wurde auf beiden Seiten getestet.

Mark
StrategyQuant Architekt

0

Mike H.

Abonnent, bbp_participant, Gemeinschaft, 76 Antworten.

Profil besuchen

vor 9 Jahren #126157

Ich sehe und verstehe es jetzt... Danke Mark!!!

0

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