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

Ich habs grad mal simuliert und bei mir erhalte ich das richtige Ergebnis. Paar Dinge zu deinem Code:
Code:
if (Ereignis == true)
{
   if (OrderType() == OP_BUYSTOP)
   {
      bool LongResult=true;
   }
}
Du kannst LongResult nicht innerhalb eines Blocks erstellen, und sie dann auserhalb dieses Blocks weiter nutzen.
LongResult müsstest du am besten oben bei Ereignis erstellen.

Code:
if (LongResult)

   double StopBuyOpenValue = Price;
   double StopBuy2Low;
   double LongValuePerc;
   
   while (Ask +30 > StopBuyOpenValue)
   if (LongResult)
   {
      LongValuePerc = NormalizeDouble(StopBuyOpenValue * NextBuyPercent / 100,Digits); //NextBuyPercent = 1.5
      
      StopBuy2Low = StopBuyOpenValue + LongValuePerc;
      StopBuyOpenValue++;
   }
   
   bool LStopBuyResult_Restore=false;
   LStopBuyResult_Restore = ticketL= OrderSend(Symbol(),OP_BUYSTOP,LotsTraded,StopBuyOpenValue,Slippage,0,0,"BUY(#" + MagicNumberLong + ")",MagicNumberLong,0,Green);
   LongResult=false;
  • Das obige "if(LongResult)" bezieht sich lediglich auf "double StopBuyOpenValue = Price;", da du keine Klammern gesetzt hast.
  • Deine 1.5% befinden sich in der Variablen "StopBuy2Low". "StopBuyOpenValue" inkrementierst du lediglich bei jedem Durchlauf, addierst also immer nur +1.
  • Schmeiß die Variable "StopBuy2Low" raus und setze die Zeile so um
    Code:
    StopBuyOpenValue = StopBuyOpenValue + LongValuePerc;

Code:
bool LStopBuyResult_Restore=false;
LStopBuyResult_Restore = ticketL= OrderSend(Symbol(),OP_BUYSTOP,0.10,StopBuyOpenValue,3,0,0);
Nicht gut formuliert. Da OrderSend() im Fehlerfall -1 liefert, wäre deine Variable "LStopBuyResult_Restore" trotzdem TRUE.
Um es weiter zu verarbeiten, hättest du einfach abgefragt, ob ticketL == -1. Da brauchst du dann auch keine "LStopBuyResult_Restore" mehr.