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);
} } } } } }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
}