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: 4012
Beiträge: 38240
Benutzer: 6.326
Aktive Benutzer: 309
Links: 80
Wir begrüßen unseren neuesten Benutzer: TradeStrat
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 8 Stunden
- TradeStrat
vor 3 Tagen
- spidder
vor 5 Tagen
- Blancomi
vor 5 Tagen
- Banause
vor 5 Tagen
- Xypa

Onlineuser
'Wer ist online' anzeigen Benutzer: 3
Gäste: 59
Gesamt: 62
Team: 0
Team:  
Benutzer:  Domke01, fxnoob, traderdoc
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 19.01.18
Neues Mitglied
 
Registriert seit: Jan 2018
Beiträge: 14
L0rdy befindet sich auf einem aufstrebenden Ast
Standard Die letzten Verlustorders zusammen zählen

Hallo,
ich möchte was ausprobieren und einem Verlust mit grösseren Lots entgegenwirken. Nun es müsste zuerst der Verlust bestimmt werden.

Die Idee: die letzten aufeinander folgenden Verluste zusammen zu zählen.
Entsprechend bei Gewinn soll abgebrochen werden und Verlust (falls welcher vorkam) zurückgegeben werden.

Dazu habe ich ein Beispiel Code hier aus Forum etwas modifiziert. Ich kenne mich nicht so richtig mit "return" und "break" aus und hoffe, dass ich die richtig (entsprechend der Logik)eingesetzt habe.
Wäre dankbar für Vorschläge und Anregungen.
PHP-Code:
double ClosedLooses(){
double x;
double summe 0;
  for (
int i OrdersHistoryTotal() - OrdersHistoryTotal() - 10i--) 
  {
     
OrderSelect(iSELECT_BY_POSMODE_HISTORY);     
     if(
OrderProfit()<0)
            {
            
OrderProfit() + OrderSwap() + OrderCommission();
            
summe += x;
            Print(
"summe="summe);
            }
        else break
  }
  
summe=MathAbs(summe);
  return(
summe);

  #2 (permalink)  
Alt 19.01.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.071
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Soweit im Prinzip richtig, noch ein paar Feinheiten dazugeproggt.

Code:
double ClosedLooses()
{
   double x;
   double summe = 0;

   for (int i = OrdersHistoryTotal() - 1; i >= 0; i--) 
   {
      if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) 
      {
         if (OrderSymbol() == Symbol && OrderMagicNumber() == MagicNumber)
         {    
            if (OrderProfit() < 0)
            {
               x = OrderProfit() + OrderSwap() + OrderCommission();
               summe += x;
               Print("summe = ", summe);
            }
            else break;
         }
      }
   }
   summe = MathAbs(summe);
   return(summe);
}
Dein Code hätte einen Compilerfehler ergeben müssen, denn hinter dem break muss unbedingt ein ; stehen.
Warum nur die letzten 10 Orders nach i > OrdersHistoryTotal() - 10?
Ob die zusätzliche Zeile mit der Abfrage nach dem OrderSymbol() (und ggf. mit der OrderMagicNumber()) notwendig ist, liegt in Deiner Entscheidung. Mit dieser Zeile werden eben nur die Orders zu einen bestimmten WP genommen (und ggf. sogar eines WP mit ausgewählter MagicNumber!).
Die entscheidende Stelle ist jedoch die Zeile mit dem break, denn richtigerweise von Dir bereits geproggt, soll ja die Aufsummierung sofort unterbrochen werden, wenn eine Order mit OrderProfit() >= 0 ist.
Man hätte auch formulieren können:
if (OrderProfit() + OrderSwap() + OrderCommission() < 0)
denn im Endeffekt belastet auch ggf. der Swap und auf alle Fälle die Commission das Konto.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #3 (permalink)  
Alt 19.01.18
Neues Mitglied
 
Registriert seit: Jan 2018
Beiträge: 14
L0rdy befindet sich auf einem aufstrebenden Ast
Standard

Danke für ";"
Zitat:
Warum nur die letzten 10 Orders nach i > OrdersHistoryTotal() - 10?
weil EA max. 3-5 mal am Stück verliert. Deswegen denke ich 10 is ausreichend.

OrderSymbol() und OrderMagicNumber() nutze ich nicht, da ich sonst nichts laufen habe.

Zitat:
if (OrderProfit() + OrderSwap() + OrderCommission() < 0)
Gute Idee ! Danke ! Werde ich mal so und so austesten )
  #4 (permalink)  
Alt 22.01.18
Mitglied
 
Registriert seit: Nov 2015
Beiträge: 120
Adlerauge befindet sich auf einem aufstrebenden Ast
Standard

OrdersHistoryTotal() gibt Dir nur die Anzahl von Orders an, die auch im Metatrader im Terminal unter Kontohistory angezeigt werden, und nicht die gesamte History (es sei denn, Du hast dort unter "Zeitraum auswählen" die gesamte History ausgewählt.
Wenn Du dort z.B. "heute" auswählst, und heute noch keine Order geschlossen hast, gibt Dir OrdersHistoryTotal() als Wert 0 zurück.
Man braucht also die Abfrage nicht begrenzen mit der Befürchtung, dass tausende von alten Orders durchgezählt werden.
Thema geschlossen

Lesezeichen

Stichworte
mql4, order verluste zählen, programmierung, programmierung metatrader, programmierung mql4, verluste addieren, verluste order, verluste zählen


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 19:36 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.
-----------------------------------------------------------------------------------------------------------------------------