Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4
Startseite Registrieren Hilfe Community Kalender Heutige Beiträge Suchen

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4978
Beiträge: 43260
Benutzer: 7.224
Aktive Benutzer: 74
Links: 84
Wir begrüßen unseren neuesten Benutzer: Sundaytrader
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 2 Stunden
- Sundaytrad...
vor 9 Stunden
- TS_6
vor 2 Tagen
- Mane
vor 2 Wochen
- AlbertZiz
vor 2 Wochen
- michak

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 417
Gesamt: 417
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 03.03.18
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 157
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


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 21:14 Uhr.





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