Zitat:
Zitat von traderdoc
Das umgeht man, indem immer zuerst nach der Order gefragt (gesucht) wird, wenn z.B. getrailt werden soll. Ist die Order nicht mehr im Kasten der offenen Orders, ja dann braucht (kann) auch nicht mehr getrailt werden.
traderdoc
|
Hallo traderdoc,
naja das ist ja das merkwürdige: Ich frage zuerst mit einer if-Schleife ab, ob die Order noch vorhanden ist, und erst dann frage ich in dieser Schleife, ob der Trailing-Stop notwendig ist.
Hier der Code:
HTML-Code:
if(OrderSelect(LongOrder1,SELECT_BY_TICKET)==true)
{
//Trailing-Stop für LongOrder1:
static datetime timestamp;
datetime time = iTime(NULL, PERIOD_M1, 0); //Nachziehen des Trailing Stops nur bei jeder neuen M1-Kerze und NICHT jedem Tick!
if(timestamp != time)
{
timestamp = time;
double norm_iHigh = NormalizeDouble(iHigh(NULL,0,1),1);
double Initial_SL_Long = (OrderTakeProfit() - OrderOpenPrice()) * SL_Prozent/TP_Prozent1; //Ursprünglicher SL in Punkten
double TS_Long_Punkte = Initial_SL_Long * TS_Faktor; //Trailing Stop in Punkten;
double TS_Long_Kurs = NormalizeDouble(OrderStopLoss() + TS_Long_Punkte,1);
if(OrderType() == OP_BUY && norm_iHigh > TS_Long_Kurs)
{
bool TS_Long = OrderModify(OrderTicket(), OrderOpenPrice(), norm_iHigh - TS_Long_Punkte, OrderTakeProfit(), 0);
}
}
}
Mach ich da was falsch?