Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Summe der letzten Trades (http://www.expert-advisor.com/forum/showthread.php?t=5416)

Tycoon 25.01.17 20:37

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!!!! :):)

Leopold 26.01.17 08:08

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

traderdoc 26.01.17 09:48

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

Leopold 26.01.17 10:59

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

traderdoc 26.01.17 11:21

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

Tycoon 26.01.17 13:39

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.

Tycoon 26.01.17 17:06

Funktioniert Super... Besten Dank nochmals!!!
Mein geplantes Vorhaben war jetzt zwar nicht ganz so die Lösung merke ich im Nachhinein.....:confused:
Aber bleibe dran...
Schön Abend noch!!!

Adlerauge 28.01.17 19:14

..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.


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:15 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum