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)
-   -   Zu viel Positionen (http://www.expert-advisor.com/forum/showthread.php?t=6276)

Max2018 05.12.18 11:59

Zu viel Positionen
 
Hallo,
irgendwie komme ich nicht weiter. Mein EA soll an den augelesenen "Rectangles" jeweils nur EINE Position eröffnen. Er eröffnet aber hunderte :confused: - obwohl ich mit "result" das auf eine Position einschränke.....das geht aber nicht... was ist hier falsch?
Code:

double priceSL[100];
double priceZIEL[100];
int result[100];
for (int xx = 0; xx <= 100; xx++)
{
  price[xx] = NormalizeDouble(ObjectGetDouble(0,xx,OBJPROP_PRICE2),NACHKOMMA); 
  priceSL[xx] = NormalizeDouble(ObjectGetDouble(0,xx,OBJPROP_PRICE1),NACHKOMMA)-NormalizeDouble(spreadReal,NACHKOMMA);  // da spreadReal negativ hier minus !
  priceZIEL[xx] =NormalizeDouble(price[xx]-((priceSL[xx]-price[xx])*MARGE),NACHKOMMA);
}
for (int vv = 0; vv <= 100; vv++)

  if(Bid<price[vv]&&result[vv]==0&&Hour()==9)continue;
  if (result[vv]>0)break;
  result[vv]=OrderSend(Symbol(),OP_SELLSTOP,Lots,price[vv],Slippage,0,0,"X"+MARGE+"_"+MagicNumber,MagicNumber,0,Blue);
  ObjectsDeleteAll(0,OBJ_ARROW);
  TheStopLoss=priceSL[vv];
  TheTakeProfit=priceZIEL[vv];
  if(StopLoss>0) TheStopLoss=priceSL[vv];
  OrderSelect(result[vv],SELECT_BY_TICKET);
  OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);
  if(Open[1]>priceSL[vv])OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red );
  Comment (result[vv]); 
  price[vv]=0;
}


Adlerauge 05.12.18 20:13

Wenn ich das richtig sehe, müsste er Deinem Code zufolge genau 100 Positionen öffnen und dann eine Fehlermeldung "Array out of Range" machen. Deine Schleife macht nämlich 101 Durchläufe und Dein Result-Array ist nur 100 Stellen lang.
Die Bedingung: if (Result[vv] > 0) ... ist in keiner Schleife erfüllt, deshalb läuft die for-Schleife komplett durch, und öffnet 100 Positionen...

Max2018 12.12.18 00:32

Super - Danke


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