Hi,
super Danke....
ABER es gibt da noch ein Problem aus der Ausgangsfrage
ich habe jetzt in die Formel eingefügt:
Code:
if (PO_Check()==true)break;
also
Code:
for (int vv = 0; vv <= 300; vv++)
{
price[vv] = NormalizeDouble(ObjectGetDouble(0,vv,OBJPROP_PRICE2),NACHKOMMA);
priceSL[vv] = NormalizeDouble(ObjectGetDouble(0,vv,OBJPROP_PRICE1),NACHKOMMA)-NormalizeDouble(spreadReal,NACHKOMMA); // da spreadReal negativ hier minus !
priceZIEL[vv] =NormalizeDouble(price[vv]-((priceSL[vv]-price[vv])*MARGE),NACHKOMMA);
if (PO_Check()==true)break;
result[vv]=OrderSend(Symbol(),OP_SELLSTOP,Lots,price[vv],Slippage,0,0,"X"+MARGE+"_"+MagicNumber,MagicNumber,0,Blue);
TheStopLoss=priceSL[vv]+AufschlagSL;
TheTakeProfit=priceZIEL[vv]-AufschlagSL;
if(StopLoss>0) TheStopLoss=priceSL[vv]+AufschlagSL;
OrderSelect(result[vv],SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);
}
und unten die Boolische Abfrage
Code:
bool PO_Check() {
for(int i = OrdersTotal()-1; i >= 0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber){
if (OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP) {
if (OrderOpenPrice() == price[vv]) return(false);
}
}
}
}
Aber da wirft er mir den
Fehler aus -und sagt er kennt price[vv] nicht und da auch meine Frage - wie das mit price[vv] abgeglichen wird.... da müsste ich
doch eine Schleife in der Schleife haben oder nicht
und wie macht man das? Er muss doch jeden price[vv] Wert mit den bereits bestehenden PendingOrders OrderOpenPrice() abgleichen. Damit muss er ja 2 Schleifen durchlaufen ...oder nicht? ..und wie baut man das hier ein?