
17.10.19
|
Elite Mitglied
|
|
Registriert seit: Sep 2015
Beiträge: 1.178
|
|
Bei mir sieht der so aus:
Globale Variablen:
Code:
input bool Trailing_Stop=false;
extern int Trailing_Stop_Step=30;
Zwischen OrderSend und OrderClose hab ich dann OrderModify:
Code:
//=============================================================================================================
// M O D I F Y O R D E R S
//=============================================================================================================
if(Trailing_Stop==true){
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
for(i=OrdersTotal()-1;i>=0;i--){
if(OrderSelect(i,SELECT_BY_POS)){
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Neuer Market_BUY-"SL" (B_TS) Funktionen/Berechnungen
if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN&&OrderSymbol()==Symbol()){
//BUY-Öffnungskurs - gesendeten BUY-SL, um Wert zu ermitteln, der vom Ask abgezogen wurde:
double BOOP_BOSL = OrderOpenPrice() - OrderStopLoss();
//ASK - BUY_SL double-Wert = neuer BUY-"SL", der bei OrderModify gesendet werden soll:
double Buy_TS = Ask - BOOP_BOSL;
//neuer BUY_"SL" - Trailing_Stop_Step.
//Damit soll geprüft werden, ob BUY_"SL" (B_TS) nach gezogen werden muss.
double BuyTS_TSS = NormalizeDouble( Buy_TS - Trailing_Stop_Step *_Point,_Digits);
//Wenn aktueller/zuletzt gesendeter BUY_SL kleiner als
//neuer BUY_SL - TSS ist, soll neuer BUY_"SL" (BUY_TS) gesendet werden:
if( OrderStopLoss() < BuyTS_TSS ){
if(IsTradeAllowed()==true)OM=OrderModify(OrderTicket(),OrderOpenPrice(),Buy_TS,OrderTakeProfit(),0,CLR_NONE);
return(OM); }}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Neuer SELL-"SL" (S_TS) Funktionen/Berechnungen
if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MN&&OrderSymbol()==Symbol()){
//gesendeter SELL_SL - Öffnungskurs, um double-Wert ermitteln, der zum BID dazu gerechnet wurde:
double SOSL_SOOP = OrderStopLoss() - OrderOpenPrice();
//BID + SELL-SL double-Wert = neuer SELL-"SL", der bei OrderModify gesendet werden soll
double Sel_TS = Bid + SOSL_SOOP;
double SelTS_TSS=NormalizeDouble(Sel_TS + Trailing_Stop_Step *_Point,_Digits);
if( OrderStopLoss() > SelTS_TSS ){
if(IsTradeAllowed()==true)OM=OrderModify(OrderTicket(),OrderOpenPrice(),Sel_TS,OrderTakeProfit(),0,CLR_NONE);
return(OM); }} }}}
|