Diskussion zum Artikel "Anlegen eigener Trailing Stops"

 

Neuer Artikel Anlegen eigener Trailing Stops :

Die Grundregel für Händler: Lass‘ Gewinne wachsen, trenn‘ dich von Verlusten! In diesem Beitrag betrachten wir eine der grundlegenden Techniken zur Befolgung dieser Regel: die Verschiebung der schützenden Verlustbegrenzung (Stop Loss Level) nach einer Gewinnsteigerung einer Position, m. a. W.: den Trailing Stop Level, die nachlaufende Stop-Grenze. Sie finden das schrittweise Vorgehen zur Einrichtung einer Klasse zur nachlaufenden Verlustbegrenzung bei den Indikatoren SAR und NRTR. Jedermann ist in der Lage, diese Trailing Stops in die eigenen Expert-Systeme einzufügen oder sie eigenständig zur Überwachung der Positionen des eigenen Kontos zu verwenden.

Abbildung 11. Schaltflächen und Indikatoren im Diagramm nach Auslösung des Expert-Systems Sample_TrailingStop.

Autor: Dmitry Fedoseev

 

Sehr nützlich. Danke!


Steven

 

Das nachfolgende Beispiel schlägt mit einem Fehler fehl.

 
Bitte geben Sie an, um welche es sich handelt.
 

Programmierer, Hilfe mit mql5, bitte!!!

Ist es möglich, einfach eine gewöhnliche Trailing-Funktion wie in mql4 ohne Klassen zu verwenden? So wie z.B. die Funktion TradeSizeOptimised in Moving Averages.mq5 implementiert ist.

Ich habe schon alles durchsucht, in Beispielen, Artikeln, Forum - ich habe nichts gefunden. Ich habe mich schon komplett verirrt.... Vielleicht hat jemand eine fertige Variante, ich wäre sehr dankbar!!! - ich möchte unbedingt an der Meisterschaft teilnehmen.

 
Setslav:

Programmierer, Hilfe mit mql5, bitte!!!

Ist es möglich, einfach eine gewöhnliche Trailing-Funktion wie in mql4 ohne Klassen zu verwenden? So wie z.B. die Funktion TradeSizeOptimised in Moving Averages.mq5 implementiert ist.

Ich habe schon alles durchsucht, in Beispielen, Artikeln, Forum - ich habe nichts gefunden. Ich habe mich schon komplett verirrt.... Vielleicht hat jemand eine fertige Variante, ich wäre sehr dankbar!!! - ich möchte unbedingt an der Meisterschaft teilnehmen.


hier geht's

int TrailingStop()
  {
   if(PositionSelect(Symbol())) // Position auswählen
     {
      //MqlTradeRequest m_request;// Deklarieren Sie die Struktur der Anfrage an den Server
      //MqlTradeResult m_result;// Deklarieren Sie die Antwortstruktur des Servers
      double Bid = SymbolInfoDouble(Symbol(), SYMBOL_BID);                         // Schreiben Sie den Angebotspreis in die Variable
      double Ask = SymbolInfoDouble(Symbol(), SYMBOL_ASK);                         // Schreiben in die Variable Briefkurs
      double OpenPrice=PositionGetDouble(POSITION_PRICE_OPEN);                     // Schreiben Sie den Eröffnungskurs der Position in die Variable
      double PositionSL=PositionGetDouble(POSITION_SL);                            // Schreiben des Stop-Loss-Niveaus in die Variable
      double PositionTP=PositionGetDouble(POSITION_TP);                            // Take-Profit-Level in die Variable schreiben

      if((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) // Positionsart definieren
        {
         if(TrailWhileMinus==true || Bid-OpenPrice>_Point*Trail) // keine Schleppnetzfischerei, bis wir mit dem ersten Stopptransfer die Gewinnschwelle erreichen können
           {
            if(Bid-PositionSL>Trail*_Point) //Grundbedingung für die Notwendigkeit, den Stop Loss zu verschieben
              {
               //--- Daten in die Struktur schreiben
               request.action = TRADE_ACTION_SLTP;
               request.symbol = Symbol();
               request.sl     = NormalizeDouble(Bid-Trail*_Point,_Digits);
               request.tp     = NormalizeDouble(PositionTP,_Digits);
               //---
               return(OrderSend(request,result));                              // Senden Sie die Anfrage an den Server
              }
           }
        }
      else
        {
         if(TrailWhileMinus==true || OpenPrice-Ask>_Point*Trail) // keine Schleppnetzfischerei, bis wir mit dem ersten Stopptransfer die Gewinnschwelle erreichen können
           {
            if(PositionSL-Ask>Trail*_Point) //Grundbedingung für die Notwendigkeit, den Stop Loss zu verschieben
              {
               //--- Daten in die Struktur schreiben
               request.action = TRADE_ACTION_SLTP;
               request.symbol = Symbol();
               request.sl     = NormalizeDouble(Ask+Trail*_Point,_Digits);
               request.tp     = NormalizeDouble(PositionTP,_Digits);
               //---
               return(OrderSend(request,result));                            // Senden Sie die Anfrage an den Server
              }
           }
        }
     }
   return(0);
  }
[Gelöscht]  
sergey1294:

hier geht's los

Ich nehme an (wahrscheinlich nicht ohne Grund), dass das Ergebnis besser als Parameter übergeben wird :)

Ansonsten gibt es keine Möglichkeit, es zu analysieren. Das ist irgendwie nicht gut...

PS

Ich würde auch zwei Funktionen erstellen - TrailingStopBuy und TrailingStopSell

 
Interesting:

Ich nehme an (wahrscheinlich nicht ohne Grund), dass das Ergebnis besser als Parameter übergeben wird :)

Ansonsten gibt es keine Möglichkeit, es zu analysieren. Das ist irgendwie nicht gut...

PS

Ich würde auch zwei Funktionen erstellen - TrailingStopBuy und TrailingStopSell.

Naja, ich habe der Person ein Beispiel gegeben, weil er sich schon sein Hirn gemacht hat, wie man ein normales Trailing schreibt, und ihn dann ein bisschen denken lassen, dass es im Tester im Prinzip fehlerfrei funktionieren würde und diese Konstruktion normal funktioniert. im wirklichen Leben nicht überprüft
[Gelöscht]  
sergey1294:
Nun, ich gab dem Mann ein Beispiel, weil er schon sein Gehirn gemacht hat, wie man ein gewöhnliches Trailing schreibt, und dann ließ ihn ein wenig denken, das würde ohne Fehler funktionieren, im Tester im Prinzip, und dieses Design funktioniert gut. im wirklichen Leben nicht überprüfen
Als Beispiel wird es natürlich funktionieren, aber wenn man das Ergebnis nicht analysiert, wird es (früher oder später) eine Menge Fehler geben...
 
sergey1294:

Bitte sehr.

Danke!
 

sergey1294,

Nochmals vielen Dank, alles funktioniert!!!

Ich habe noch eine kleine Frage: Wie kann ich eine Prüfung mit einer magischen Zahl in die Funktion einfügen? Ich versuche, eine solche Prüfung einzufügen:

if (OrderGetInteger(ORDER_MAGIC)==EA_Magic)
{
.....
}
..... aber das macht den ganzen Handel kaputt.....