Einzelnen Beitrag anzeigen
  #31 (permalink)  
Alt 02.09.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

@ Michael: Dann mach halt je nach Buy oder Sell nen Trailing Stop, der für alle Orders genutzt wird.


SL / TP / OrderOpenPrice() aus ner offenen Order auszulesen sollte ja eigentlich möglich sein. Auch wenn der SL natürlich immer wieder nach gezogen wird, kann man immer noch
Code:
OrderOpenPrice() +||- (Je nach Richtung halt) OrderStopLoss()
rechnen.
Code:
input bool Trailing_Stop=false;
 extern int Trailing_Stop_Step=35;.
Prüfung der MagicNumber rauslassen, dann müsste für alle Buy / Sell-Orders, die offen sind, der SL nach gezogen werden.

Code:
if(Trailing_Stop==true){
 
//////////////////////////////////////////////////////////////////////////////////////////////////////////////

  for(int j=OrdersTotal()-1;j>=0;j--){
    if(OrderSelect(j,SELECT_BY_POS)){
      if(OrderSymbol()==Symbol()){

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


// Neuer SELL-"SL" (S_TS) Funktionen/Berechnungen
        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(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);}}

} } } }