Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 09.06.18
thmatzer thmatzer ist offline
Neues Mitglied
 
Registriert seit: Jun 2018
Beiträge: 5
thmatzer befindet sich auf einem aufstrebenden Ast
Standard Wenn Wert bei X war und Y durchkreuzt

Hallo,

ich habe mir einen CCI EA erstellt und habe damit ein kleines Problem.
Mein Wunsch: Wenn zB. der CCI bei -120 war und -100 durchkreuzt soll ein Trade eröffnet werden.

Geschrieben ist es jetzt so wenn der CCI den Wert -100 durchkreuzt (von Unten nach Oben) wird ein Trade eröffnet.
Doch hier entsteht schon das erste Problem: Manchmal wird sogor bereits ein Trade eröffnet wenn der Wert -100 von Oben nach Unten durchkreuzt wird. (Beispiel: CCI geht von +1 auf -100 und bereits hier wird schon ein Trade eröffnet, obwohl der Trade erst eröffnen soll, wenn der CCI von zB -120 durch -100 geht)


Die Lösung wäre wahrscheinlich eine Schleife einzubauen, leider bekomme ich das einfach nicht Fehlerfrei hin, könnte mir da wer helfen?

Hier wäre der Code:

Code:
   //Open Buy Order, instant signal is tested first
   RefreshRates();
   if(Cross(6, iCCI(NULL, PERIOD_CURRENT, CCI_Period, PRICE_TYPICAL, CCI_Shift) > Buy_wenn_X_durchkreuzt) //Commodity Channel Index crosses above fixed value
   && Bid > iMA(NULL, PERIOD_CURRENT, MA_Period, MA_Shift, MODE_EMA, PRICE_CLOSE, Shift) + OpenTrade_EntfernungMA * Point() //Price > Moving Average + fixed value
   )
     {
      RefreshRates();
      price = Ask;
      SL = StopLoss * Point(); //Stop Loss = value in points (relative to price)
      if(TimeCurrent() - LastTradeTime < NextOpenTradeAfterMinutes * 60) return; //next open trade after time
      if(!inTimeInterval(TimeCurrent(), TOD_From_Hour, TOD_From_Min, TOD_To_Hour, TOD_To_Min)) return; //open trades only at specific times of the day   
      if(IsTradeAllowed())
        {
         ticket = myOrderSend(OP_BUY, price, TradeSize, "");
         if(ticket <= 0) return;
        }
      else //not autotrading => only send alert
         myAlert("order", "");
      LastTradeTime = TimeCurrent();
      myOrderModifyRel(ticket, SL, 0);
     }
   
   //Open Sell Order, instant signal is tested first
   RefreshRates();
   if(Cross(7, iCCI(NULL, PERIOD_CURRENT, CCI_Period, PRICE_TYPICAL, CCI_Shift) < Sell_wenn_X_durchkreuzt) //Commodity Channel Index crosses below fixed value
   && Bid < iMA(NULL, PERIOD_CURRENT, MA_Period, MA_Shift, MODE_EMA, PRICE_CLOSE, Shift) - OpenTrade_EntfernungMA * Point() //Price < Moving Average - fixed value
   )
     {
      RefreshRates();
      price = Bid;
      SL = StopLoss * Point(); //Stop Loss = value in points (relative to price)
      if(TimeCurrent() - LastTradeTime < NextOpenTradeAfterMinutes * 60) return; //next open trade after time
      if(!inTimeInterval(TimeCurrent(), TOD_From_Hour, TOD_From_Min, TOD_To_Hour, TOD_To_Min)) return; //open trades only at specific times of the day   
      if(IsTradeAllowed())
        {
         ticket = myOrderSend(OP_SELL, price, TradeSize, "");
         if(ticket <= 0) return;
        }
      else //not autotrading => only send alert
         myAlert("order", "");
      LastTradeTime = TimeCurrent();
      myOrderModifyRel(ticket, SL, 0);
     }