Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Trail_SL in Hedge-Position (Pos. 2) funktioniert nicht ! (http://www.expert-advisor.com/forum/showthread.php?t=6024)

piptrade 03.03.18 17:55

Trail_SL in Hedge-Position (Pos. 2) funktioniert nicht !
 
Liebe User-Gemeinde, :), Hallo,
habe einen kleinen ersten EA fast fertiggestellt, komme aber an einer ganz bestimmten Stelle einfach nicht weiter. Problem
ist der Trailing_SL bei einer zweiten Position (Hedge-Position).

Bei Eröffung einer ersten Position laüft das Trailing absolut "sauber" ab: Der Kurs verläuft in der gewünschten Richtung (SELL),
erreicht ein bestimmtes Target (DAX = -9 Pkt.) und ein TakeProfit (nochmals -9 Pkt.) wird gesetzt. Gleichzeitig wird
auch ein erster SL ( + 5 Pkt. zum Target) vorgegeben, welcher dem Kurs mit diesem 5-Punkte-Abstand folgen soll.
Erreicht der Kurs dieser ersten Position das Target allerdings NICHT und "dreht" in die Gegenrichtung, wird hier auch kein SL
ausgelöst. Statt dessen wird bei einem bestimmten Loss ( +6 Pkt.) eine GegenPosition (Hedging / BUY) eingegangen. Somit sind jetzt 2 entgegengesetzte Trades in Aktion.
Erreicht die 2. Position nunmehr ihr Target ( +9 Pkt.), soll wieder eine TP- und eine SL-Vorgabe erfolgen und der SL als
Trail_SL nachgezogen werden.

Und nun DAS PROBLEM:
Wenn ich jetzt den Code der ersten Position (SELL) einfach übernehme und auf die zweite Position (als BUY) anwende, funktioniert auch dies noch recht gut. SL und TP werden auch hier bei Erreichen des Targets gesetzt. Und sobald die zweite Position z.B. in den TP läuft, wird diese auch geschlossen; - so weit, so gut !
Das Problem ist jedoch, dass die erste Position weiterhin geöffnet bleibt, obwohl sie gleichzeitig geschlossen werden müßte.
Ergo muss der Code der 2. Position mit "CloseAllOrders" erweitert werden.

Ich hoffe, dass die Problematik verständlich beschrieben wurde und damit auch nachvollziehbar ist.

Der Code der 1. Position (hier nur für SELL) sieht "SO" aus:

Code:

//=== conditions for Trail_SL =======================================+

//--- Trailing_SL for order type SELL / only Position 1 -------------+  ===> ok.  //  funktioniert, komplett !
  if(OrderType() == OP_SELL  &&  openOrders == 1)                                //  einschl. Trail_SL, TP und Markierg.
      {
      if (OrderOpenPrice() - Ask > Trail_Target_1 *100 *Point)
        {
        if (OrderStopLoss() > Ask + Trail_SL_1  ||  OrderStopLoss() == 0)
            {
            if (!OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Trail_SL_1, OrderTakeProfit(), Blue))
                Print("Error setting Sell trailing stop: ", GetLastError());
            } 
        }
      }

Dieser Teil läuft also recht gut.
Und hier der mit "CloseAllOrders" ergänzte Code für die 2. Position (for BUY):

Code:

//--- Trailing_SL for order type BUY / only Position 2---------------+
  if (OrderType() == OP_BUY  &&  openOrders == 2)
      {
      if (Bid - OrderOpenPrice() > Trail_Target_1 *100 * Point)
        {
        if (OrderStopLoss() < Bid - Trail_SL_2  ||  OrderStopLoss() == 0)
            {
            if (!OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Trail_SL_2, OrderTakeProfit(), Blue))
                Print("Error setting Buy trailing stop: ", GetLastError());
            }                           
            if (Bid < OrderStopLoss())    CloseAllOrders()                        //  Fehler hier ?
        }
      }

Der Gedanke mit "AllOrdersClosed" scheint hier zwar richtig zu sein, - beide Positionen werden tatsächlich geschlossen, - die Code-Einordnung jedoch ist sicher falsch!
Der SL wird nicht gesetzt und natürlich auch nicht nachgezogen. Was nun ?
Ist "CloseAllOrders" falsch eingeordnet, müssen zusätzliche Bedingungen geschaffen und erfüllt werden, - wo könnte der Fehler liegen.

Unzählige Testvarianten haben mich bisher nicht weitergebracht, so dass ich auf Eure Hilfestellung hoffe.

Liebe Grüße piptrade :o


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:16 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum