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 MQL5 (http://www.expert-advisor.com/forum/forumdisplay.php?f=221)
-   -   Teilschließung einer Position (http://www.expert-advisor.com/forum/showthread.php?t=6965)

Max2018 29.03.21 21:45

Teilschließung einer Position
 
Hi,
ich habe ein Problem mit der Teilschließung einer Position. In MQL4 sah das so aus:
Code:

if(Bid>=KursTakeProfitEINS)
  for(int i=0;i<OrdersTotal();i++)
    {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderMagicNumber()!=MagicNo || OrderSymbol()!=Symbol()) continue;
      if(OrderType()==OP_BUY&&OrderLots()==Lots)
      {
   
      bool oc=OrderClose(OrderTicket(),TeilVerkaufEuro,OrderClosePrice(),5,clrAliceBlue);
      return;
      }
      }

Aber wie mache ich das in MQL5 ... da habe ich das so, nur da schließt er dann die gesamte Position:

Code:

if(SymbolInfoDouble(NULL,SYMBOL_BID)>=KursTakeProfitEINS_m)
  for(int i=0;i<PositionsTotal();i++)
    {
      if(PositionGetTicket(i) ==0)break;
      if(PositionGetInteger(POSITION_MAGIC)!=MagicNo || PositionGetString(POSITION_SYMBOL)!=Symbol()) continue;
     
      if((int)PositionGetInteger(POSITION_TYPE)== 0 && PositionGetDouble(POSITION_VOLUME)==Lots_m)
      {
   
      trade.PositionClose(PositionGetInteger(POSITION_TICKET),-1);
      return;
      }
      }

:confused:

Max2018 16.04.21 11:37

Hat keiner eine Idee :confused: Was ist daran falsch :confused:
Code:

  bool positions_modified=false;
  if(SymbolInfoDouble(NULL,SYMBOL_BID)>=KursTakeProfitEINS_m)
      for(int i=0; i<PositionsTotal(); i++)
        {
        ulong position_ticket =  PositionGetTicket(i);
        if(PositionGetTicket(i) ==0)
            break;
        if(PositionGetInteger(POSITION_MAGIC)!=MagicNo || PositionGetString(POSITION_SYMBOL)!=Symbol())
            continue;
        //--- check order type
        if((int)PositionGetInteger(POSITION_TYPE)== 0 && PositionGetDouble(POSITION_VOLUME)==Lots_m)
          {            trade.PositionClosePartial(PositionGetInteger(POSITION_TICKET),TeilVerkaufEuro,-1);
          }
        }


Indikator-Trading 16.04.21 17:49

Vielleicht eine deiner folgenden Variablen:
- KursTakeProfitEINS_m
- TeilVerkaufEuro
- Lots_m
- MagicNo

Viele mögliche Gründe dafür das es nicht laufen könnte.
Außerdem wirst du mit diesem Code nur BuyOrders teilschließen können

Indikator-Trading 16.04.21 18:02

Ich sehe gerade, dass du

Code:

    if(PositionGetTicket(i) ==0)
      break;

nutzt. hier musst du 'continue;' nutzen, da du sonst die anderen offenen Orders nicht durchgehen kannst

Max2018 16.04.21 18:22

SUPER Danke :)


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