Einzelnen Beitrag anzeigen
  #4 (permalink)  
Alt 10.03.18
next user next user ist offline
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

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).