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)
-   -   Tagesgewinn auslesen (http://www.expert-advisor.com/forum/showthread.php?t=5877)

Julia 05.10.17 17:27

Tagesgewinn auslesen
 
Hi,
ich möchte den Gewinn des Tages des Kontos auslesen. Geht das mit
double AccountProfit(0);
und dies möchte ich als Grundlage zur Berechnung für neue Lotgrößen heranziehen und das mal in einer NICHT MQ4 Sprache bezeichnet:

(Festbetrag +/- Tagesgewinn)/500 => und das abrunden auf 1 Stelle nach dem Komma - z.B. für die Einsatzgöße im DAX

BEISPIEL
Angenommen mein vorher vom mir festgelegter Festbetrag den ich manuell eingeb ist
Festbetrag = 500
Der Tagesgewinn war bis 15 Uhr 122 Euro
dann wäre die nächste Einsatzgröße
(500+122)/500 = 1,244 das aber dann abrunden auf 1 Nachkommastelle also
1,20 Euro für den nächsten Trade
=>Berücksichtigt werden bei Tagesgewinn nur die bereits geschlossenen Trades des Tages

Wie kann man sowas umsetzen?

traderdoc 05.10.17 18:12

Code:

double CheckHistoryOrders() {
  double day_profit = 0;
  for(int i = OrdersHistoryTotal()-1; i >= 0; i--) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
        if (OrderSymbol() == Symbol()){  //weglassen, falls alle Orders genommen werden sollen
            if (OrderCloseTime() >= iTime(NULL, PERIOD_D1, 0)) {
              day_profit += OrderProfit() + OrderSwap() + OrderCommission();
            }
        }
      }
  }
  return(day_profit);
}

So in etwa könnte das aussehen.

traderdoc

Julia 05.10.17 18:16

Danke
 
Danke für die schnelle Antwort. Werde ich gleich mal ausprobieren.
Liebe Grüße

Julia 05.10.17 20:22

Frage
 
Hallo

leider komme ich mit der Antwort nicht klar, da es das beschriebene Ergebnis nicht auswirft.....

Wie muss ich denn die einzelnen Teile wo in dem EA hin schreiben ?

:confused:

traderdoc 05.10.17 20:33

Der Aufruf der Funktion CheckHistoryOrders() kann im Hauptteil unter
OnTick() stehen oder auch aus jeder anderen Funktion aufgerufen werden.
Da diese Funktion einen Rückgabewert hat, muss der in einer Variablen aufgenommen werden, z.B.

double Tagesprofit = CheckHistoryOrders();

Wichtig ist dabei die Stelle der Deklarierung der Variablen Tagesprofit, denn wenn der Wert dieser Variablen in einer anderen Funktion gebraucht wird, dann steht als Wert eine 0 drin.

traderdoc


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:47 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