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)
-   -   höchste/größte Lotgröße bei offenen Trades auslesen (http://www.expert-advisor.com/forum/showthread.php?t=5469)

13500 13.02.17 22:15

höchste/größte Lotgröße bei offenen Trades auslesen
 
Hallo Zusammen :)

ich möchte gerne unter den geöffneten Trades den T/P vom Trade mit der größten Lotgröße auslesen und bekomme es nicht hin.

Der Trade mit der größsten Lotgröße ist auch der letzte geöffnete Trade, es wird immer ein Trade gesetzt mit einer größeren Lotgröße, daher ist auch immer der letzte Trade der Trade mit der größsten Lotgröße. Man könnte also auch den T/P von letzten geöffneten Trade auslesen, wie auch immer, ich bekomme es nicht hin. Die Daten vom dem gesuchten Trade sollen als BasisDaten gelten.

Ich habe es versucht folgendermaßen zu machen:

// erst die letzte geöffnete aktive-orderNR(ticketnr) abfragen, um diese als BASISORDER festzulegen

// erst NUR Buy-Trades prüfen

if(OrdersTotal()>0)
{
int x = 100; // durch x kann die schleife beendet werden
for (int i = OrdersTotal() - 1 ; i > OrdersTotal() - x; i--)
{
// evtl. MODE_TRADES
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if ( OrderMagicNumber() == MagicNumber ) // nur meine MagicNumber
{

if ( OrderType() == OP_BUY ) // nur OP_BUY
{

// Print("BasisOrderRauf: ",OrderTicket());
int BasisOrderRauf = OrderTicket();

if ( OrderTakeProfit() == 0 ) // nur wenn TP =0
{

double BasisOrderRauf_TP = OrderOpenPrice() + (Point * 10);

}else{

BasisOrderRauf_TP = OrderTakeProfit();

}

x = 2;
}
}
}
} // ENDE if ( OrderMagicNumber() == Ma

// ENDE erst die letzte geöffnete aktive-orderNR(ticketnr) abfragen, um diese als BASISORDER festzulegen


Durch die Änderung von X = 100 auf X = 2 wird NUR der letzte Trade ausgelesen, da die Schleife sofort stoppt, wenn es einen Trade gibt mit entspechender Magicnummer.

Es hat schon so funktioniert, aber auf einmal bekomme ich nicht mehr den Wert den ich benötige, sondern einen anderen Wert, vermutlich eines Trades der davor geöffnet wurde. Kann es sein das mein Script so wie es jetzt ist, davon beeinträchtigt wird, wie die Sortierung der Anzeige bei meinem geöffneten MT4 ist. z.B. entweder ORDER aufwärts oder ORDER abwärts? Bekomme ich dadurch den falschen Wert?

Daher denke ich, es wäre doch besser gleich nach dem Trade mit der größsten Lotgröße zu suchen, oder?

Aber das bekomme ich nicht hin, denn dann müsste ich doch per Array suchen, oder? Kann mir da einer von Euch helfen? Da stehe ich echt im Wald....

Bin Euch sehr dankbar für eine schnelle Hilfe. Danke :)

13500 16.02.17 09:39

War wohl zu viel Info
 
Hallo nochmal :)

ich habe mich beim Öffnen des Themas nicht sauber genugt ausgedrückt glaube ich, wahrscheinlich habe ich zu viel gelabert :rolleyes: daher versuche ich es nochmal mit einfachen Worten:

Wer kann mir helfen und einen kurzen Codeschnipsel für folgendes Problem posten?

Beispiel: Es sind NUR BuyTrades geöffnet mit verschiedenen Lotgrößen. Die Anzahl der Trades kann varieren.

Frage: Wie kann man jetzt den Trade mit der größsten/höchsten Lotgröße rausbekommen?

Sorry, aber machmal drücke ich mich einfach zu kompliziert aus :rolleyes:

Und, weiß jetzt einer von Euch wie ich es machen kann?

naranjoe 16.02.17 21:05

Zitat:

Daher denke ich, es wäre doch besser gleich nach dem Trade mit der größsten Lotgröße zu suchen, oder?
Richtig!

Zitat:

Aber das bekomme ich nicht hin, denn dann müsste ich doch per Array suchen, oder?
Viel zu kompliziert!


Folgender Code findet die BUY-Order mit dem größten Lot incl. Ticket und TakeProfit:
Code:

double LotSize = 0;
double TP;
int Ticket;
 
 for(int i = OrdersTotal() - 1; i >= 0; i--)
    {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
          {
        if (OrderType() == OP_BUY && OrderSymbol() == Symbol())
          {
            if (OrderLots() > LotSize)
              {       
              LotSize = OrderLots();
              Ticket = OrderTicket();
              TP = OrderTakeProfit();
              }                 
          }
      }
  }
Print ("Order Ticket: ", Ticket, ",  Lot Größe: ", LotSize, ",  Take Profit: ", TP);


13500 17.02.17 10:30

Super Danke
 
Vielen Dank naranjoe,

ja, machmal denke ich einfach zu kompliziert um die Ecke! :rolleyes:

Es kann so einfach sein....danke....passt....super ;)


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