Einzelnen Beitrag anzeigen
  #3 (permalink)  
Alt 11.07.20
MA-EA MA-EA ist offline
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Code:
input bool Trailing_Stop=false; // Zum Testen aus
extern int Trailing_Stop_Step=40; // Zum Testen 40. Bei TSS 6 wurden gar keine Orders geöffnet.
Code:
if(Trailing_Stop==true){


//////////////////////////////////////////////////////////////////////////////////////////////////////////////


//Neuer SELL-"SL" (S_TS) Funktionen/Berechnungen
  if(open_Sel==true){
    for(int k=OrdersTotal()-1;k>=0;k--){
      if(OrderSelect(k,SELECT_BY_POS)){
        if(OrderSymbol()==Symbol()){
          if(OrderMagicNumber()==MN_Sel){


//          gesendeter SELL_SL - Öffnungskurs, um double-Wert zu ermitteln, der zum BID dazu gerechnet wurde:
            double OSLS_OOPS = OrderStopLoss() - OrderOpenPrice();


//          Bid + SELL-SL double-Wert = neuer SELL-"SL", der bei OrderModify gesendet werden soll
            double TS_Sel = Bid + OSLS_OOPS;


            double TSS_TSS=NormalizeDouble( TS_Sel + Trailing_Stop_Step *_Point,_Digits);
        

            if(OrderStopLoss() > TSS_TSS){
              if(IsTradeAllowed()==true)OrderModify(OrderTicket(),OrderOpenPrice(),TS_Sel,OrderTakeProfit(),NULL,Blue);
              if(IsTradeContextBusy()==true)Sleep(Sl_MS);

} } } } } }


//////////////////////////////////////////////////////////////////////////////////////////////////////////////

  
  if(open_Buy==true){
    for(int l=OrdersTotal()-1;l>=0;l--){
      if(OrderSelect(l,SELECT_BY_POS)){
        if(OrderSymbol()==Symbol()){
          if(OrderMagicNumber()==MN_Buy){


//          BUY-Öffnungskurs - gesendeten BUY-SL, um Wert zu ermitteln, der vom Ask abgezogen wurde:
            double OOPB_OSLB = OrderOpenPrice() - OrderStopLoss();


//          Ask - BUY_SL double-Wert = neuer BUY-"SL", der bei OrderModify gesendet werden soll:
            double TS_Buy = Ask - OOPB_OSLB;


//          neuer BUY_"SL" - Trailing_Stop_Step.
//          Damit soll geprüft werden, ob BUY_"SL" (B_TS) nach gezogen werden muss.
            double TSB_TSS = NormalizeDouble( TS_Buy - Trailing_Stop_Step *_Point,_Digits);


//          Wenn aktueller BUY_SL kleiner als
//          neuer BUY_SL - TSS ist, soll neuer BUY_"SL" (BUY_TS) gesendet werden:
            if( OrderStopLoss() < TSB_TSS ){
              if(IsTradeAllowed()==true)OrderModify(OrderTicket(),OrderOpenPrice(),TS_Buy,OrderTakeProfit(),NULL,Blue);
              if(IsTradeContextBusy()==true)Sleep(Sl_MS);
            
} } } } } }


//////////////////////////////////////////////////////////////////////////////////////////////////////////////


 }