Bitte gründlich durchlesen, dann findest du auch den Fehler.
Manche Sachen habe ich schon in meinem vorherigen Post erwähnt. Diese hast du aber nicht korrigiert!
Code:
double StopLossLevel;
StopLossLevel = Bid - StopLoss*Point;
vereinfachen wir das mal...
Code:
double StopLossLevel = Bid - StopLoss*Point;
=== === === === === === === === === === === ===
Code:
bool Ord = OrderSelect(LongTicket,SELECT_BY_TICKET);
- Genau wie in deinem vorherigen Post, ist auch in diesem Code "LongTicket" OHNE Wert (Ticketnummer). Du versuchst hier schon wieder
die Order mit der Ticketnummer "0" zu selektieren, was natürlich zu einem erfolglosen "OrderSelect()" führt.
- Außerdem fängst du hier zwar den Rückgabewert von "OrderSelect()" ab (diesmal auch mit richtigem Variablentyp), aber du machst
nichts weiter damit. Üblicherweise sollte "OrderSelect()" in nem if aufgerufen, und der if-Block nur bei Erfolg ausgeführt werden.
- Also kurz zusammengefasst: Hier wird KEINE Order selektiert!
=== === === === === === === === === === === ===
Code:
if(OrderCloseTime() != 0 || LongTicket == 0)
"OrderCloseTime()" kann nur bei einer zuvor selektierten Order arbeiten, was, wie grad oben erklärt, NICHT der Fall ist.
=== === === === === === === === === === === ===
Code:
if(Volume[0]==1)
{
if(LongTicket > 0)
{
if(StopLossLevel < val_index)
{
bool res=OrderModify(OrderTicket(),OrderOpenPrice(),val_index,0,0,clrAliceBlue);
if(!res)
Print("OrderModify ERROR. ErrorPR: ",GetLastError());
else
Print("OrderModify hat funktioniert!");
}
}
}
- "LongTicket" hätte hier zwar eine gültige Nummer (sofern OrderSend zuvor nicht fehlschlug), aber du kommst trotzdem nicht
zu "OrderModify()" durch.
- Schau dir mal bitte "Volume[0]==1" genauer an und schlag nach, was "Volume" ist.
- Die Zeile
Code:
if(StopLossLevel < val_index)
ist sinnlos. Hier fragst du ab, ob der "StopLossLevel" (Preis -> Gleitpunktzahl) kleiner als "val_index" (Kerze, deren
Low-Wert du "val" zugewiesen hast -> Ganzzahl) ist.
- Wie weiter oben bereits erklärt, ist KEINE Order selektiert!!!
Die Funktionen "OrderTicket()" und "OrderOpenPrice()" führen
in deinem "OrderModify()" also zu einem Fehler.
- In "OrderModify()" benutzt du als dritten Parameter die Ganzzahl "val_index" (Index der Kerze von iLowest()), obwohl hier
der Stoploss gefordert ist (deine Variable "val", die den Low-Wert der Kerze beinhaltet, welche du mit "val_index" ermittelt hast).