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: 4973
Beiträge: 43248
Benutzer: 7.219
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Hopfen&Malz
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107
vor 2 Wochen
- rg-trader

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

Empfehlungen

Like Tree1Likes
  • 1 Post By traderdoc
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 25.01.17
Mitglied
 
Registriert seit: Apr 2013
Beiträge: 45
Tycoon befindet sich auf einem aufstrebenden Ast
Standard Summe der letzten Trades

Guten Abend,
mein Vorhaben liegt darin, an einer bestimmten Anzahl abgeschlossener Trades zu erfahren:

- Übersteigen oder Unterschreiten die letzten 3 Trades die Summe X?
- Dann neue Lotsize

PHP-Code:
double summe 0//als globale variable

if(test)
{
  
double x;
  
int i;
  for (
OrdersHistoryTotal() - OrdersHistoryTotal() - 10i--) 
  {
     
OrderSelect(iSELECT_BY_POSMODE_HISTORY);
     
OrderProfit() + OrderSwap() + OrderCommission();
     
summe += x;
     Print(
"summe="summe);
  } 
Hatte diesen Code hier bereits gefunden, dieser liefert mir aber nicht die Gesamtsumme der letzten Trades.
Könnte mir da vielleicht jemand Weiterhelfen??
Ich Danke im voraus!!!!
  #2 (permalink)  
Alt 26.01.17
Premium Mitglied
 
Registriert seit: Jun 2016
Ort: Österreich
Beiträge: 362
Leopold befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

also die Variable "summe" musst du vor dieser schleife auf 0 setzen, darum würde ich vor der "for" schleife "summe = 0;" schreiben.
und "Print" erst nach der schleife ausgeben, da sonst bei jedem Durchlauf das Zwischenergebnis ausgegeben wird.

Ich würde bei der Bedingung für die "for" Schleife noch "i >= 0" ergänzen, denn es kann ja sein dass noch nicht 10 Orders in der History verfügbar sind und dann würde i ins minus laufen und das macht keinen sinn.

Wieviele werte möchtest du Summieren?



mfg Leopold

Geändert von Leopold (26.01.17 um 08:22 Uhr)
  #3 (permalink)  
Alt 26.01.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Ich habe mal die richtigen Ideen von @Leopold aufgegriffen und zu einem lauffähigen Code erweitert. Es werden nun wirklich nur die letzen drei geschlossenen Order untersucht und bzgl. des Profits aufsummiert.
Die Printausgabe steht nun hinter der for-Schleife.

Code:
if(test) 
{ 
  double x = 0;
  double summe = 0;
  int cnt = 0;
  int i;
  for (i = OrdersHistoryTotal() - 1 ; i >= 0; i--)  
  { 
     if OrderSelect(i, SELECT_BY_POS, MODE_HISTORY); 
      if (cnt < 3)
      {
        x = OrderProfit() + OrderSwap() + OrderCommission(); 
        summe += x; 
        cnt++;
      } else break;
  }
   Print("summe=", summe); 
}
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #4 (permalink)  
Alt 26.01.17
Premium Mitglied
 
Registriert seit: Jun 2016
Ort: Österreich
Beiträge: 362
Leopold befindet sich auf einem aufstrebenden Ast
Standard

Wenn er aber "summe" außerhalb der "if" Anweisung benötigt muss die variable aber Global definiert sein und "summe" vor der "for" Schleife auf 0 gesetzt werden.

Zur "for" Schleife: Man kann doch auch 2 Bedingungen angeben oder?
Dann könnte man das ganze etwas kürzer ausführen.

mfg Leopold
  #5 (permalink)  
Alt 26.01.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Man kann alles Mögliche machen.
Wenn er summe braucht, kann er die einzuleitende Aktion sofort nach der for-Schleife schreiben, ansonsten richtigerweise summe richtig global deklarieren, um dann irgendwo in start() zu verwenden.

Natürlich kann man auch zwei Bedingungen in der for-Schleife schreiben, aber der Code sollte immer schön übersichtlich und leicht lesbar bleiben. Insofern schreibe ich da lieber einen incrementierenden Counter dazu.

traderdoc
Leopold likes this.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #6 (permalink)  
Alt 26.01.17
Mitglied
 
Registriert seit: Apr 2013
Beiträge: 45
Tycoon befindet sich auf einem aufstrebenden Ast
Standard

Puuuuh....
Das ist erstmal ganz schön viel Material.
Das werde ich heute Abend mal testen.
Hatte vor das Gesamtergebnis der letzten 3 Trades zu erfahren. Um dann mit dem Risiko Flexibler zu werden.
  #7 (permalink)  
Alt 26.01.17
Mitglied
 
Registriert seit: Apr 2013
Beiträge: 45
Tycoon befindet sich auf einem aufstrebenden Ast
Standard

Funktioniert Super... Besten Dank nochmals!!!
Mein geplantes Vorhaben war jetzt zwar nicht ganz so die Lösung merke ich im Nachhinein.....
Aber bleibe dran...
Schön Abend noch!!!
  #8 (permalink)  
Alt 28.01.17
Mitglied
 
Registriert seit: Nov 2015
Beiträge: 136
Adlerauge befindet sich auf einem aufstrebenden Ast
Standard

..vielleicht macht es grundsätzlich mehr Sinn, Swap und Kommission vom Profit abzuziehen.

Wenn Du das Ganze machst, um die Lotsize für die folgenden zu öffnenden Positionen anzupassen, kannst Du auch mit einem Prozentsatz der Equity arbeiten. Oder Du definierst z.B., dass pro 100 € verfügbarer Equity 0.01 Lot geöffnet werden sollen und lässt den EA das dann zu Deiner Lotsize aufaddieren.
Thema geschlossen

Lesezeichen

Stichworte
anzahl trades, mql4, programmierung, programmierung metatrader, programmierung mql4, summe trades, trades

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 +1. Es ist jetzt 20:51 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.
-----------------------------------------------------------------------------------------------------------------------------