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)
-   -   History: Selektion geht das überhaupt? (http://www.expert-advisor.com/forum/showthread.php?t=7072)

pascalper 27.08.21 16:09

History: Selektion geht das überhaupt?
 
Hallo,

Keine Ahnung ob das geht: Ich möchte gerne aus der History alle negativ geschlossenen Positionen bis zu ersten positiv geschlossenen Positionen selektieren und den negativ Wert (Profit) summiert zurück geben

Code:

  double CL=0;

    double NegativClosedProfit(){
    for(int pos=0;pos<OrdersHistoryTotal();pos++)
    if(OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)){
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && (OrderType()==OP_BUY || OrderType()==OP_SELL))

leider weiß ich ab da nicht mehr weiter, wie man das machen könnte...

    }
  return(CL);
  }

Für jede Hilfe dankbar!

traderdoc 27.08.21 21:57

" Ich möchte gerne aus der History alle negativ geschlossenen Positionen bis zu ersten positiv geschlossenen Positionen selektieren"

Nun, da wäre die Frage, ob von der zeitlich ersten geschlossenen oder von der letzten historischen Order ausgegangen werden soll.

Erster Fall:

Code:

double Summ_Negativer_Profit = 0;
for (int pos = 0; pos < OrdersHistoryTotal(); pos++) {
  if (OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderProfit() <= 0) Summ_Negativer_Profit  += OrderProfit();
        else break;
}
//Weiterverarbeitung des Wertes der Variablen Summ_Negativer_Profit.

Zweiter Fall:

Code:

double Summ_Negativer_Profit = 0;
for (int pos = OrdersHistoryTotal()-1; pos >= 0; pos--) {
  if (OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderProfit() <= 0) Summ_Negativer_Profit  += OrderProfit();
        else break;
}

Ich habe die OrderProfits = 0 mit einbezogen, da ja von positiven Profits die Rede war.

traderdoc

pascalper 27.08.21 22:21

In dem Fall, zeitlich die letzten, also Fall 2
Die 0 zu integrieren ist natürlich richtig, obwohl sie direkt auf meine Zielsetzung keinen Einfluss hat, da sie das summierte Ergebnis nicht beeinflußt.

Ich möchte die negative Summe der Verlust Positionen kennen um die Option zu haben entweder den fixen TP der gerade offenen Position zu verwenden, der weit höher liegt oder einen TrailingStop zu aktivieren der >= Summe negativ Positionen ist (Austieg BreakEven), da oft der eigentlich fixe TP nicht erreicht wird, der Trend schwächelt und der Kurs wieder in die andere Richtung geht.

Auf jeden Fall danke ich Dir und werde berichten!

traderdoc 28.08.21 19:54

Ich sehe gerade, dass sich wieder ein Klammerteufel eingeschlichen hatte.
Korrektur nur von Fall 2 (analog Fall 1):

Code:

double Summ_Negativer_Profit = 0;
for (int pos = OrdersHistoryTotal()-1; pos >= 0; pos--) {
  if (OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderProfit() <= 0) Summ_Negativer_Profit  += OrderProfit();
        else break;
  }
}

traderdoc

pascalper 28.08.21 23:04

Hallo traderdoc

Funktioniert wunderbar (Variante 2) alles bereits angepasst und getestet

Nochmals Danke!


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