Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools  
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4036
Beiträge: 38360
Benutzer: 6.345
Aktive Benutzer: 278
Links: 80
Wir begrüßen unseren neuesten Benutzer: ekman
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 2 Tagen
- ekman
vor 2 Tagen
- SaxTrade
vor 3 Tagen
- Matthias...
vor 3 Tagen
- wren
vor 4 Tagen
- Unskilled

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 62
Gesamt: 63
Team: 0
Team:  
Benutzer:  fxnoob
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 03.03.18
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 152
piptrade befindet sich auf einem aufstrebenden Ast
Question 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
Thema geschlossen

Lesezeichen

Stichworte
mql4, programmierung, programmierung metatrader, programmierung mql4, stop, trailing, trailing stopp, trailingstop, trailingstop fehler, trailing_sl


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +2. Es ist jetzt 10:00 Uhr.



Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2018 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2017 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------