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)
-   -   Wie die letzten Trades auslesen? (http://www.expert-advisor.com/forum/showthread.php?t=2980)

Ca$hDigger 08.08.13 13:36

Klasse das läuft einwandfrei
Nun eine neue Frage :o
Wenn ich auch die die Pipsumme auslesen will gibt es eine einfacherer Variante als mit der Subtraktion von OrderClosePrice() und OrderOpenPrice() zu arbeiten?? Blöd ist auch hierbei die unterscheidung zwischen Long und Short Orders... Den Pipwert direkt auslesen geht nicht oder? PipProfit() gibt es leider nicht...

LG C$D

traderdoc 08.08.13 14:04

------Doppelpost!------

traderdoc 08.08.13 14:05

Meinst Du nun die Pipsumme über alle diese historischen Trades oder nur die Pips des Gewinnes/Verlustes jedes einzelnen Trades?

Prinzipiell ist das doch eine einfache Methode Open - Close bzw. Close - Open zu berechnen! Wo ist das Problem?
Du kannst auch vom OrderProfit() ausgehen und mit dem Pipvalue auf die Anzahl Pips zurückrechnen. Da sich aber der PipValue mit der Zeit ändert, würde die erste Methode wählen.

traderdoc

Ca$hDigger 08.08.13 17:25

Genau die Pipsumme wie im Beispiel der 10 letzten Orders. Wie unterscheide ich dann short und longorders? woher weiss der code wann wird open von close subtrahiert und wann umgekehrt das war noch unklar

traderdoc 08.08.13 17:56

Code:

double summe = 0; //als globale variable
 int summepips = 0;

 int m = 1;
 if (Digits == 3 || Digits == 5) m = 10;

if(test)
{
  int pips;
  double f;
  double x;
  int i;
  for (i = OrdersHistoryTotal() - 1 ; i > OrdersHistoryTotal() - 10; i--)
  {
    OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
    double point = MarketInfo(OrderSymbol(), MODE_POINT);
    f = m * point;
    if (OrderType() == OP_BUY)
        pips = MathRound((OrderClosePrice() - OrderOpenPrice())/f);
    if (OrderType() == OP_SELL)
        pips = MathRound((OrderOpenPrice() - OrderClosePrice())/f);
    summepips += pips;
    x = OrderProfit() + OrderSwap() + OrderCommission();
    summe += x;
    Print("summe=", summe);
  }
}

traderdoc

Ca$hDigger 08.08.13 19:40

Danke! Ist das MathRound eine Vorsichtsmaßnahme? Weil normal müsste doch sowieso immer der richtige Ganzzahlige Wert rauskommen wenn f den richtigen Faktor zur Umrechnung hat oder nicht

traderdoc 08.08.13 20:08

Nein. Bei einem 5-Digit-Broker wäre z.B. die Differenz 0,00082. Wird diese nun durch 0,00001 dividiert, erhält man 82, welche in "Wahrheit" aber nur 8,2 Pips sind, deshalb nochmal dividiert durch m = 10 (für eben diesen 5-Digit-Broker).
Und zuletzt wird auf die nächstgelegene Integerzahl gerundet und Du erhältst 8 Pips!

traderdoc


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:46 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