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: 0
Gäste: 63
Gesamt: 63
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 26.11.17
Neues Mitglied
 
Registriert seit: Feb 2017
Beiträge: 16
Trader93 befindet sich auf einem aufstrebenden Ast
Post Stop Loss ODER Trendwechsel

Guten Abend zusammen,

ich bin - mal wieder- auf eure Hilfe angewiesen. Ich habe aktuell folgendes Problem:

Derzeit wird die Order ausschließlich dann geschlossen, wenn der Trend (Moving Average) sich dreht. Da mir aber dabei möglicherweise zu hohe umkalkulierbare Verluste entstehen, wollte ich zusätzlich zu dieser Logik einen SL einbauen, um den Maximalverlust zu deckeln.

Hierbei ergibt sich aber bei mir die Problematik, dass der EA durch den SL "zerschossen" wird - Hab erst den SL und dann den Code für die "Trendwende". Der Code an sich funktioniert, nur generiert er interessanterweise deutlich weniger Trades. Daher die Frage:

Habt ihr eine Idee, wie man die beiden Komponenten verbinden kann? Quasi:

Schließe die Long Order, wenn der Kurze den Langen MA kreuzt, oder du 25% im Verlust bist.
  #2 (permalink)  
Alt 26.11.17
Neues Mitglied
 
Registriert seit: Feb 2017
Beiträge: 16
Trader93 befindet sich auf einem aufstrebenden Ast
Standard

Aktuell sieht es so aus

Code:
  
// SL Long setzen
   if (OrderSelect(LongOrder,SELECT_BY_TICKET)== true)
   {
   if (OrderCloseTime()== 0 && OrderStopLoss()==0)
   {
   double StopLoss= NormalizeDouble(OrderOpenPrice()/(1+(SL_prozent/100)),Digits);
   bool OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss,OrderTakeProfit(),0,Yellow);
   }
   }
 // Trendwechsel von Long auf Short
      if (OrderSelect(LongOrder,SELECT_BY_TICKET)== true)
      {
      if((MAkurz<MAlang) == true)
       {
      bool LongOrderGeclosed = OrderClose(LongOrder,OrderLots(),Bid,10,Blue);
      if (LongOrderGeclosed==true) LongOrder=0;
       }
    
      }
  #3 (permalink)  
Alt 27.11.17
Neues Mitglied
 
Registriert seit: Feb 2017
Beiträge: 16
Trader93 befindet sich auf einem aufstrebenden Ast
Standard

Nach mehrmaligem Lesen habe ich das Gefühl, dass der Kern der Aussage noch nicht ganz raus kommt. Und zwar benötige ich einen Tipp/Hinweis, wie ich die beiden Dinge miteinander verknüpfen kann. Wenn ich den SL drin habe, schließt er die Order aufgrund des MA Crossings nicht mehr... Ziel soll einfach nur sein, dass das MA Crossing die Primärexitlogik ist und der SL quasi nur unterstützend agiert und den maximalen Verlust pro Trade deklariert. Nur bin ich leider mit meinen minimalistischen Programmierfähigkeiten nicht in der Lage sowas ohne Hilfe hinzubekommen. Aber ich möchte es lernen

Über Tipps, der Spezialisten freue ich mich sehr
  #4 (permalink)  
Alt 27.11.17
Gesperrter Benutzer
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 313
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard

Versuch den SL und den Kreuzungspunkt NICHT zu verknüpfen, sondern hintereinander abzufragen.
Zuerst den Kreuzungspunkt, dann den SL.

Und ein kleiner Programmierhinweis:
Code:
if((MAkurz<MAlang) == true)

es reicht:

if(MAkurz<MAlang)
detto:
Code:
 if (OrderSelect(LongOrder,SELECT_BY_TICKET)== true)

vereinfacht:

 if (OrderSelect(LongOrder,SELECT_BY_TICKET))
Grüße, Otto
  #5 (permalink)  
Alt 27.11.17
Neues Mitglied
 
Registriert seit: Feb 2017
Beiträge: 16
Trader93 befindet sich auf einem aufstrebenden Ast
Standard

Danke für deinen Hinweis hinsichtlich der Redundanzen. Diese nehme ich raus, merci.

Verstehe ich dich richtig, dass ich die beiden Codes nur umstellen muss und dort nicht extra eine Art „Bindebefehl“ rein muss?

Sorry für die blöden Fragen
  #6 (permalink)  
Alt 27.11.17
Gesperrter Benutzer
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 313
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard

Blöde Gegenfrage: warum verwendest du nicht den MT5 ?
Da könnte ich dir wesentlich besser helfen.

Ich versuche deine Frage in Pseudocode zu beantworten.
Das ganze wär für die Ereignisprocedur OnTick()
Code:
void OnTick()
  {
   if(offenePosition)
      {
         if(posLong)
           {                  // pos is long
            if(maCrossShort)
               drehe_position;
            if(SL_long_trigger)
               closeLong;
           }
         else
           {                  // pos is short
            if(maCrossLong)
               drehe_position;
            if(SL_short_trigger)
               closeShort;
           }
      }
   else        // keine position offen
      {
         if(maCrossShort)
            open_short;
         if(maCrossLong)
            open_long;
      }
  }
Ich hoffe das hilft dir weiter.

Es ist irgendwie ein Jammer, das es da keine vernünftige Codebibliothek gibt
und jeder das Rad neu erfinden muss.

Grüße, Otto
  #7 (permalink)  
Alt 28.11.17
Neues Mitglied
 
Registriert seit: Feb 2017
Beiträge: 16
Trader93 befindet sich auf einem aufstrebenden Ast
Standard

Ich muss ein wenig zurück rudern. Wenn ich das "== true" entferne, führt dies zu Fehlern im Programm.

Aber deinen Pseudocode (danke dafür) habe ich versucht umzusetzen.
Zuerst das Positive: Der EA macht die Tradeanzahl die ich erwartet habe. ABER: Der EA macht jetzt aber mehr Verluste?! Obwohl der SL_prozent mit 25definiert wird. Lt. Strategietester ist der größte Verlusttrade bei 0.1 Lot bei 269 EUR, während das reine schließen einen max. Verlust von 87,50 EUR generiert. Irgendwo ist da noch der Wurm drin, wenn die Sicherheitsmaßnahme das Loss quasi mehr als verdreifacht.
Ideen, was ich falsch mache?

Code:
{
.
.
.
// Trendwechsel von Long auf Short
      if (OrderSelect(LongOrder,SELECT_BY_TICKET)== true)
      {
         if((MAkurz<MAlang) == true)
            {
       //Order Closing
               bool LongOrderGeclosed = OrderClose(LongOrder,OrderLots(),Bid,10,Blue);
               if (LongOrderGeclosed==true) LongOrder=0;
            }
       else
            {
       //SL
               if (OrderCloseTime()== 0 && OrderStopLoss()==0)
                {
                  double StopLoss= NormalizeDouble(OrderOpenPrice()/(1+(SL_prozent/100)),Digits);
                  bool OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss,OrderTakeProfit(),0,Yellow);
                }
      
            }
      //Trendwechsel von Short auf Long
      
      if (OrderSelect(ShortOrder,SELECT_BY_TICKET)== true)
      {
         if ((MAkurz>MAlang)== true)
             {
      //Order Closing
                bool ShortOrderGeclosed = OrderClose(ShortOrder,OrderLots(),Ask,10,Green);
                if (ShortOrderGeclosed==true) ShortOrder=0;
             }
       else
             {
       //SL
               if (OrderCloseTime()== 0 && OrderStopLoss()==0)
                {
                  double StopLoss= NormalizeDouble(OrderOpenPrice()*(1+(SL_prozent/100)),Digits);
                  bool OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss,OrderTakeProfit(),0,Yellow);
                }
             }
      }
      }
.
.
.
return(0);
}
  #8 (permalink)  
Alt 28.12.17
Gesperrter Benutzer
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 313
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard

Code:
if(OrderSelect(LongOrder,SELECT_BY_TICKET))
   if(MAkurz<MAlang)
      {
      }
Das MUSS funktionieren
Thema geschlossen

Lesezeichen

Stichworte
mql4, order, programmierung, programmierung metatrader, programmierung mql4, stoploss, trendwechsel


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 03:07 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.
-----------------------------------------------------------------------------------------------------------------------------