Hilfe! - Wie kann Trailing Stop keine Verluste bei negativem Gewinn nehmen?
Ergebnis 1 bis 6 von 6

Thema: Hilfe! - Wie kann Trailing Stop keine Verluste bei negativem Gewinn nehmen?

  1. #1
    Ich bin wieder testen mit MB-Demo-Demo. Der Standard-Trailing-Stop-Code berücksichtigt nicht den Kommissions- und Order-Swap.
    Hat jemand versucht, den Trailing Stop nicht mit negativen Gewinnen zu verlieren?

    typischer Trailing Stop Code:

    void ShortTrailingStop ()
    {
    int scnt;
    int stotal = BestellungenTotal ();

    für (scnt = stotal-1; scnt gt; = 0; scnt--)
    {
    OrderSelect (scnt, SELECT_BY_POS, MODE_TRADES);
    if (OrderType () lt; = OP_SELL OrderSymbol () == Symbol ())
    {
    if (OrderType () == OP_SELL)/Kurze Position wird geöffnet
    {
    if (TrailingStopgt; 0)
    {
    if ((OrderOpenPrice () - Ask) gt; (Punkt * TrailingStop))
    {
    if ((OrderStopLoss () gt; (Fragen (Point * TrailingStop))) || (OrderStopLoss () == 0))
    {
    OrderModify (OrderTicket (), OrderOpenPrice (), Ask (Punkt * TrailingStop), OrderTakeProfit (), 0, Rot);
    Rückkehr (0);
    }
    }
    }
    }
    }
    }
    }

  2. #2
    Einfach. Lassen Sie einfach den abschließenden Code addieren Sie den Profit = Profit OrderProfit () und verweigern Sie die Auszahlung, es sei denn, der Profitgt; 0. - Sie müssen die Aufträge mit dem Programmcode schließen, anstatt einen Stop-Loss in der richtigen Reihenfolge zu verwenden.

  3. #3
    Danke für Ihre Antwort, Dann ist es nicht Trail, es wird nur profitieren, wenn es Profit erfordert OrderModify () -Funktion für Trailing, aber der doppelte Stoploss Parameter ist die Ursache des Problems. Es wird nicht mit dem beauftragten Broker funktionieren. Gibt es eine Möglichkeit, dies zu umgehen?

  4. #4

    Zitat Zitat von ;
    Ich bin wieder testen ... if (OrderType () lt; = OP_SELL OrderSymbol () == Symbol ()) {if (OrderType () == OP_SELL)/kurze Position ist geöffnet {
    Nun, ich bin mir nicht sicher, ob es das Endergebnis des Codes im Moment ändern würde, aber ich denke, ich habe dieses Bit in einem anderen Thread kürzlich erwähnt. Wenn (OrderType () lt; = OP_SELL immer wahr ist, ist etwas, was mit OrderType () zu tun hat, keine Zahl. Ich denke, Sie kommen damit durch Ihre nächste if () if if (OrderType () == OP_SELL) Siehe in dieser 1 Sie überprüfen, ob es gleich OP_SELL ist, was die richtige Verwendung ist Überprüfen, wenn weniger als OP_SELL ist nicht die richtige Verwendung (Gramar?) Ich denke, es ist ein Swap-Wert für die Bestellung gespeichert, aber nicht sicher über Provision . Prost

  5. #5
    Danke für deine Antwort. Das ist nicht das Problem, ich habe es nur in == FYI ändern, das war zu überprüfen, ob es OP_SELL oder OP_BUY ist, die 1 und 0 zurückgeben. Lt; = 1 oder 0. Nicht der Grund für den Tailing Stop Loss zu verkaufen Bei Verlust.

  6. #6
    Die Routine wird ein wenig beteiligt. Sie müssen den höchsten Gewinn berechnen, der seit der Eröffnung des Auftrags erzielt wurde. Subtrahieren Sie Ihren Trail-Faktor. Wenn Trail aktiviert wäre, dann überprüfe auch, ob die Order in Profit ist. Wenn dies der Fall ist, kann die Bestellung geschlossen werden. Sie müssen iBarShift für M1 und iHighest oder iLowest verwenden, um den höchsten oder niedrigsten Preis seit der Auftragserstellung zu berechnen. Beginnen Sie mit der OrderOpenTime () und gehen Sie auf die aktuelle Zeit und finden Sie den höchstenniedrigsten Preis (abhängig davon, ob es ein Kauf oder Verkauf ist). Behalten Sie auch OrderProfit () bei - wenn es im Profit ist, schließen Sie die Order mit OrderClose ().

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
Die tradingintuitive Webseite verwendet Cookies
Wir nutzen Cookies, um Ihnen das Webseitenerlebnis bestmöglich anbieten zu können. Durch weitere Nutzung der Webseite erlauben Sie die Nutzung von Cookies. Für weitere Details und wie Sie ggf. diese Einstellungen verändern können, lesen Sie bitte unsere Datenschutzbestimmung. Lesen Sie mehr