Author: hansH
Price Data Components
Series array that contains open time of each barSeries array that contains the highest prices of each bar
Orders Execution
Checks for the total of closed ordersChecks for the total of open ordersIt automatically opens orders when conditions are reachedIt can change open orders parameters, due to possible stepping strategyIt Closes Orders by itself
Indicators Used
Relative strength index
0 Views
0 Downloads
0 Favorites
earlyBird3
//+------------------------------------------------------------------+
//|  earlyBird3.mq4             26.05.2010 - 18:53
//|  mit Hedge-Funktion
//|  Range-Break mit RSI-Filter +/-50
//|  TrailingStop/Profit mit Vola-Filter
//|  DayTrading: je 3 Buy- u. Sell-Trades
//+------------------------------------------------------------------+
#property copyright "hansH"
#property link      "finanz.consulting@freenet.de"

string        Name           ="RangeBreak3";

// ----
extern bool   autoTrading    = true;
extern bool   HedgeTrading   = true;
// ----
       bool   CommentDaten   = true;
// *****************************************************
// manuelle Entries
extern int    OrderTyp       =    0;  // extern // 0=Long&Short, 1=Long, 2=Short;
 
// TakeProfit
extern double OrderTP1       =   10; // 15
extern double OrderTP2       =   20; // 30 
extern double OrderTP3       =   30; // 45
           
// StopLoss      
extern double OrderSL        =   60; //  45

// TrailingStop/Profit
extern double TrailingStop   =   15; // 50
extern double TrailingRisk   =    1; // 1.1

// Umwandlung
       double shortEntry, longEntry, TakeProfit, TrailingTP, StopLoss, TrailingSL;
       string Long_Selekt, Short_Selekt;
       
// Einstieg u. Hinweis
       string ShortInfo      = "  short";        
       string LongInfo       = "  long";       

//----       
extern double Lots           =  0.1;

// Trading-Zeiten
extern int    Start_Std      =    7;  // 6 Uhr TradeBeginn dtsch. Zeit
       int    Start_Min      =   15;  //  extern
       
extern int    Schluss        =   15;  // 11, 21, 22 oder / bis
extern int    Closing        =   17;  // 22:00 Uhr
       int    ZD;                     // 1=WZ, 2=SZ Zeit-Differenz
       int    inTime;                 // Tradingzeit 

// Zeit-Differennz-Korrektur      
       int    Sommerzeit     =   87;  // DayOfYear Beginn Sommerzeit
       int    Winterzeit     =  297;  // DayOfYear Beginn Winterzeit

// Break-Time
extern int    TimeStart      =    3;
extern int    TimeEnd        =    7;
datetime      Time_Start, Time_End, RectangleEnd;

// ----
extern int    RectangleHours =   72;

// ----
       bool   PendingView    = true;

// ----
extern string TRADING°TESTER ="=== RangeBreak3 ===";
       int    MagicNumber    = 1805100925;
// ----
       double clsBuyOrder, clsSellOrder;
       double opLongPos, opShortPos, shortTP, longTP;
       string OrderTxt, TxtCom, TxtTime, doubleTxt, PendingTyp, RSItrend;
       color  col1=Gray, col2=Gray, col3=Silver, col4=Silver, col5=Silver, col1a=Gray, col2a=Gray;
       double Fakt, RSI;
       int    cntHistBuy, cntHistSell;
       int    i, Dig, opBar, cnt, oLP, oSP, offen, opOrders, opPos, LongIsOpen, ShortIsOpen;
       double Vola, Vola0;

       
// ----------------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------------
int init()
  { }

//----------
int deinit()
  {
   Comment("");
   
   ObjectDelete("bar0"); ObjectDelete("bar0_Label");
   
   ObjectDelete("opShort"); ObjectDelete("opShort_Label");   
   ObjectDelete("opLong"); ObjectDelete("opLong_Label");   
   ObjectDelete("aktuell"); ObjectDelete("aktuell_Label");
   ObjectDelete("longTP"); ObjectDelete("longTP_Label");   
   ObjectDelete("shortTP"); ObjectDelete("shortTP_Label");
   
   ObjectDelete("RangeL"); ObjectDelete("RangeL_Label");
   ObjectDelete("RangeS"); ObjectDelete("RangeS_Label");
   
   ObjectDelete("Trend"); ObjectDelete("Trend_Label");
  }
  
//---------
int start()
  {

if(DayOfYear()>=Sommerzeit && DayOfYear()<=Winterzeit) ZD=2; else ZD=1;
if(TimeHour(Time[0])<=5) { clsBuyOrder=0; clsSellOrder=0; }

//  if(TimeHour(Time[0])>= 3-ZD && TimeHour(Time[0])< 10-ZD)  { TimeStart=3; TimeEnd= 7; } else
//  if(TimeHour(Time[0])>=10-ZD && TimeHour(Time[0])< 24   )  { TimeStart=6; TimeEnd=10; }

   Time_Start   = StrToTime(StringConcatenate(Day(),".",Month(),".",Year()," ",TimeStart-ZD,":00"));
   Time_End     = StrToTime(StringConcatenate(Day(),".",Month(),".",Year()," ",TimeEnd-ZD,  ":00"));
   RectangleEnd = StrToTime(StringConcatenate(Day(),".",Month(),".",Year()," ",Schluss-ZD,  ":00"));   

// ---- Tradingzeit 1=ja, 0=nein
    if(DayOfWeek()>0 && DayOfWeek()<=5
    && ((TimeHour(Time[0])==Start_Std-ZD && TimeMinute(Time[0])>=Start_Min)
    || TimeHour(Time[0])>Start_Std-ZD)     
    && TimeHour(Time[0])< Schluss-ZD)
        
    inTime=1; else inTime=0;
    
// ----
if(Close[0]>10)  {Fakt=100;   Dig=2; }  else
if(Close[0]<10)  {Fakt=10000; Dig=4; }

// ----
if(OrderSL!=0)      StopLoss=OrderSL/Fakt;
if(TrailingStop!=0) TrailingSL=TrailingStop/Fakt;

// ************************************************************************
// ********** Selektion ********** (Anfang) ********** Selektion **********

// ---- Breakwerte
      RSI  = iRSI(NULL,0,14,PRICE_OPEN,0);   

      int    BarStart = iBarShift(NULL,0,Time_Start,false);
      int    BarEnd   = iBarShift(NULL,0,Time_End  ,false);

double Top    = iHigh(NULL,0,iHighest(NULL,0,MODE_HIGH,BarStart-BarEnd,BarEnd))+2/Fakt;
double Bottom = iLow (NULL,0,iLowest (NULL,0,MODE_LOW, BarStart-BarEnd,BarEnd))-2/Fakt;

// ---- Entries
       if(RSI> 50) longEntry=Top;     else longEntry =0;
       if(RSI<=50) shortEntry=Bottom; else shortEntry=0;

// ---- Vola 
double V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16;
     V1=High[i+1]-Low[i+1]; V2=High[i+2]-Low[i+2]; V3=High[i+3]-Low[i+3]; V4=High[i+4]-Low[i+4];
     V5=High[i+5]-Low[i+5]; V6=High[i+6]-Low[i+6]; V7=High[i+7]-Low[i+7]; V8=High[i+8]-Low[i+8];     
     V9=High[i+9]-Low[i+9]; V10=High[i+10]-Low[i+10]; V11=High[i+11]-Low[i+11]; V12=High[i+12]-Low[i+12];     
     V13=High[i+13]-Low[i+13]; V14=High[i+14]-Low[i+14]; V15=High[i+15]-Low[i+15]; V16=High[i+16]-Low[i+16];     
     
     Vola=(V1+V2+V3+V4+V5+V6+V7+V8+V9+V10+V11+V12+V13+V14+V15+V16)*Fakt/16;
     Vola0=(High[i]-Low[i])*Fakt;
       
// ---- Rectangle  
         ObjectDelete("bar0"); ObjectDelete("bar0_Label");
     
         ObjectCreate("bar0", OBJ_RECTANGLE, 0, 0,0, 0,0);
         ObjectSet   ("bar0", OBJPROP_STYLE, STYLE_SOLID);
         ObjectSet   ("bar0", OBJPROP_COLOR, C'60,60,60');
         ObjectSet   ("bar0", OBJPROP_BACK,  true);
         ObjectSet   ("bar0", OBJPROP_TIME1 ,Time_End); // Time_Start // Time_End-1*60
         ObjectSet   ("bar0", OBJPROP_PRICE1,Top);
         ObjectSet   ("bar0", OBJPROP_TIME2 ,MathMin(TimeCurrent(),RectangleEnd)); // Time_End od. TimeCurrent()
         ObjectSet   ("bar0", OBJPROP_PRICE2,Bottom);

// ********** Selektion ********** (Ende) ********** Selektion **********
// **********************************************************************
           
// --------------------------------------------------------------
// ---- bilanzierte, offene Positionen u. Pendings ermitteln ----
// --------------------------------------------------------------
int cnt = OrdersHistoryTotal();

// ---- geschlossene Positionen
cntHistBuy=0; cntHistSell=0;
  
  for (int i=0; i < cnt; i++) 
  {
  if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
    
  if (TimeDayOfYear(OrderCloseTime()) == DayOfYear()) 
    {
    if (OrderSymbol()==Symbol())
      {
      if (OrderType()==OP_BUY)  { clsBuyOrder  = OrderOpenPrice(); cntHistBuy =cntHistBuy +1; }
      if (OrderType()==OP_SELL) { clsSellOrder = OrderOpenPrice(); cntHistSell=cntHistSell+1; }
      }
    } // TimeDayOfYear
  } // for(int

// ---- Anzahl offene Positionen/Symbol
opOrders=0;

if(OrdersTotal()!=0)
  {
  for(cnt=0; cnt<OrdersTotal(); cnt++)
   {
   OrderSelect(cnt,SELECT_BY_POS);
   if((OrderType()==OP_SELL || OrderType()==OP_BUY) && OrderSymbol()==Symbol())
       {
       opOrders=opOrders+1;
       }
   } // for(cnt
  } // if(OrdersTotal

// ---- Anzahl offene Positionen/Typ
LongIsOpen=0; ShortIsOpen=0;

 for(cnt=0; cnt<OrdersTotal(); cnt++)
 {
 OrderSelect(cnt,SELECT_BY_POS);

 if(OrderType()==OP_BUY  && OrderSymbol()==Symbol()) { LongIsOpen=LongIsOpen+1; }
 if(OrderType()==OP_SELL && OrderSymbol()==Symbol()) { ShortIsOpen=ShortIsOpen+1; }
 }

// --------------------------------------------------------------------------------
string lEntryTxt=DoubleToStr(longEntry,Digits);
string sEntryTxt=DoubleToStr(shortEntry,Digits);

// ----
int    DiffL, DiffS;

// ----
string BidTxt=DoubleToStr(Bid,Digits);
string AskTxt=DoubleToStr(Ask,Digits);

// ----
string longTxt, shortTxt;
if(longEntry!=0)  longTxt =DoubleToStr(longEntry,Digits);
if(shortEntry!=0) shortTxt=DoubleToStr(shortEntry,Digits);

// ----
   ObjectDelete("longTP"); ObjectDelete("longTP_Label");   
   ObjectDelete("shortTP"); ObjectDelete("shortTP_Label");
   ObjectDelete("opLong"); ObjectDelete("opLong_Label");   
   ObjectDelete("opShort"); ObjectDelete("opShort_Label");

// ----  
if(OrdersTotal()!=0)
  {
  opShortPos=0; shortTP=0; opLongPos=0; longTP=0;
    
  for(cnt=0; cnt<OrdersTotal(); cnt++)
   {
   OrderSelect(cnt,SELECT_BY_POS);
   
    if(OrderType()==OP_SELL && OrderSymbol()==Symbol())
    { opShortPos=OrderOpenPrice(); shortTP=(opShortPos-Ask)*Fakt; col1=Red; }
   
    if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
    { opLongPos=OrderOpenPrice(); longTP= (Bid-opLongPos)*Fakt;  col2=SpringGreen; }
   } // for(cnt
  } // if(OrdersTotal
  
// --------------------------------------------
// ----------------- Objekte ------------------
// --------------------------------------------
if(opShortPos==0) {shortTP=0; col1=Gray; col1a=Gray;}
if(opLongPos==0)  {longTP=0;  col2=Gray; col2a=Gray;}
 
// ----
if(shortTP< 0) col1a=Yellow; if(shortTP> 0) col1a=Aqua;
if(longTP < 0) col2a=Yellow; if(longTP > 0) col2a=Aqua; 

// ----
if(CommentDaten==true)
{
if(opShortPos!=0)
   {
   ObjectCreate("opShort", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("opShort",DoubleToStr(opShortPos,Dig),9,"Tahoma", col1);
   ObjectSet("opShort", OBJPROP_CORNER, 0);
   ObjectSet("opShort", OBJPROP_XDISTANCE, 3);
   ObjectSet("opShort", OBJPROP_YDISTANCE, 11);

   ObjectCreate("shortTP", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("shortTP","("+DoubleToStr(shortTP,0)+")",9,"Tahoma", col1a);
   ObjectSet("shortTP", OBJPROP_CORNER, 0);
   ObjectSet("shortTP", OBJPROP_XDISTANCE, 44);
   ObjectSet("shortTP", OBJPROP_YDISTANCE, 11);
   }

if(opLongPos!=0)   
   {
   ObjectCreate("opLong", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("opLong",DoubleToStr(opLongPos,Dig),9,"Tahoma", col2);
   ObjectSet("opLong", OBJPROP_CORNER, 0);
   ObjectSet("opLong", OBJPROP_XDISTANCE, 85);
   ObjectSet("opLong", OBJPROP_YDISTANCE, 11);

   ObjectCreate("longTP", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("longTP","("+DoubleToStr(longTP,0)+")",9,"Tahoma", col2a);
   ObjectSet("longTP", OBJPROP_CORNER, 0);
   ObjectSet("longTP", OBJPROP_XDISTANCE, 126);
   ObjectSet("longTP", OBJPROP_YDISTANCE, 11); 
   }

// ----   
   ObjectCreate("aktuell", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("aktuell",StringSubstr(BidTxt,0,6),9,"Tahoma", col3);
   ObjectSet("aktuell", OBJPROP_CORNER, 0);
   ObjectSet("aktuell", OBJPROP_XDISTANCE, 172);
   ObjectSet("aktuell", OBJPROP_YDISTANCE, 11); 
   
// ---- Pending-Typ
if(cntHistBuy <=0 && cntHistSell ==0 && RSI>50 && LongIsOpen<=0)  {PendingTyp="*up*";   col4=Aqua; }  else
if(cntHistBuy <=0 && cntHistSell !=0 && RSI>50 && LongIsOpen<=0)  {PendingTyp="*up*";   col4=Aqua; }  else
if(cntHistBuy <=0 && cntHistSell !=0 && RSI<50 && LongIsOpen<=0)  {PendingTyp="*up*";   col4=Olive; } else

if(cntHistSell<=0 && cntHistBuy  ==0 && RSI<50 && ShortIsOpen<=0) {PendingTyp="*down*"; col4=Red; }   else
if(cntHistSell<=0 && cntHistBuy  !=0 && RSI<50 && ShortIsOpen<=0) {PendingTyp="*down*"; col4=Red; }   else
if(cntHistSell<=0 && cntHistBuy  !=0 && RSI>50 && ShortIsOpen<=0) {PendingTyp="*down*"; col4=Olive; } else
                                                                  {PendingTyp="-flat-"; col4=Gray; }
  
   ObjectCreate("Trend", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("Trend",PendingTyp,12,"Arial Black", col4);
   ObjectSet("Trend", OBJPROP_CORNER, 0);
   ObjectSet("Trend", OBJPROP_XDISTANCE, 218);
   ObjectSet("Trend", OBJPROP_YDISTANCE, 4);
        
} // if(CommentDaten==true)
  
// -----------------------------------------------------
// ----------------- Text für Comment ------------------
// ----------------------------------------------------- 
double spread=MarketInfo(Symbol(),MODE_SPREAD)/10;

// ---- Risk
if(Vola0>=Vola*TrailingRisk && opOrders==1) string trail="Trailing!"; else trail="";

// ---- TxtCom
if(Period()<5)
   TxtCom="Periode ändern: von M5 bis H1"; else TxtCom="";

// ---- TxtTime
if(Start_Min<10) TxtTime=(Start_Std+":0"+Start_Min+" bis "+Schluss+":00 / "+Closing+" Uhr");
 else TxtTime=(Start_Std+":"+Start_Min+" bis "+Schluss+":00 / "+Closing+" Uhr");  
   
// ---- OrderTxt
if(autoTrading==false) OrderTxt="Trading deaktiviert!"; else

if(inTime==0)
if(Start_Min<10) OrderTxt="DayTrading geschlossen bis "+Start_Std+":0"+Start_Min; else
   OrderTxt="DayTrading geschlossen bis "+Start_Std+":"+Start_Min; else

if(OrderTyp==1)        OrderTxt=">>>>> Long <<<<<   "; else
if(OrderTyp==2)        OrderTxt=">>>>> Short <<<<<  "; else
                       OrderTxt="";

// ----------------------------------------------
// ----------------- Comment --------------------
// ----------------------------------------------
if(CommentDaten==true) // "DayOfYear: "+DayOfYear()+"\n" +
   Comment(
       // Standard       
       "\n"+
       //"\n"+

       // Extra s.Selektion ****************************
       "Vola:  ("+DoubleToStr(Vola,1)+") "+DoubleToStr(Vola0,2)+
       "  Range: "+TimeStart+"-"+TimeEnd+" Uhr"+"  "+trail+"\n"+
       "Break / Long:  "+DoubleToStr(Top,Dig)+
       "   RSI "+DoubleToStr(RSI,1)+"\n"+       
       "          Short:  "+DoubleToStr(Bottom,Dig)+
       "   L -S "+DoubleToStr((Top-Bottom)*Fakt,1)+"\n"+
       "\n"+
       // **********************************************
       
       // Standard
//     "   Spread: "+DoubleToStr(spread,1)+"\n"+
       "Lots: "+DoubleToStr(Lots,1)+doubleTxt+"  offen: "+opOrders+"  L/S: "+(cntHistBuy+LongIsOpen)+"´"+(cntHistSell+ShortIsOpen)+
       "\n"+
       "TP: +"+DoubleToStr(OrderTP1,0)+", "+DoubleToStr(OrderTP2,0)+", "+DoubleToStr(OrderTP3,0)+"  SL -"+DoubleToStr(OrderSL,0)+
       "\n" +
       "Trail SL (TP):  "+DoubleToStr(TrailingStop,0)+"  ("+DoubleToStr(TrailingStop/2,1)+")\n" +
       TxtTime+"\n"+
       "\n"+
       TxtCom+"\n"+
       OrderTxt+"\n"+

       "\n" 
           );                

// ----------------------------------------------
// --------------- Rectangle (Range) ------------
// ----------------------------------------------
  double   EntryL, topL, bottomL, EntryS, topS, bottomS; 
  datetime EntryTimeL,EntryTimeS;
  color    colRangeL=C'0,0,100', colRangeS=C'100,0,0';

// --
int cntRect;
if(OrdersTotal()!=0)
  {
  oSP=0; oLP=0;
  for(cntRect=0; cntRect<OrdersTotal(); cntRect++)
    {
    OrderSelect(cntRect,SELECT_BY_POS);

     if( OrderType()==OP_SELL && OrderSymbol()==Symbol() )
       { opShortPos=OrderOpenPrice(); shortTP=(opShortPos-Ask)*Fakt; oSP=oSP+1; }
   
     if( OrderType()==OP_BUY && OrderSymbol()==Symbol() )
       { opLongPos=OrderOpenPrice(); longTP= (Bid-opLongPos)*Fakt; oLP=oLP+1; }
    } // for(cntRect=0;   
 } // if(OrdersTotal()!=0)

// --
  ObjectDelete("RangeL"); ObjectDelete("RangeL_Label");
  ObjectDelete("RangeS"); ObjectDelete("RangeS_Label");

  // offene Orders prüfen ...
int cnt0buy=0, cnt0sell=0 ;
for (i=0; i<OrdersTotal(); i++) 
 {
  if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
    
  if(OrderSymbol()==Symbol())
   {
    if(OrderType()==OP_BUY && OrderTakeProfit()!=0 && opLongPos!=0)
      { EntryL     = OrderOpenPrice();
        EntryTimeL = OrderOpenTime();
        topL       = OrderTakeProfit();
        bottomL    = OrderOpenPrice()+(Ask-Bid);
// ----
datetime leftL   =EntryTimeL;
datetime rightL  =EntryTimeL+(RectangleHours*60*60);

// ----
ObjectCreate("RangeL",OBJ_RECTANGLE,0,leftL,topL,rightL,bottomL);
ObjectSet("RangeL",OBJPROP_BACK,true);
ObjectSet("RangeL",OBJPROP_COLOR,colRangeL);

      } // if(OrderType

// ----
    if(OrderType()==OP_SELL && OrderTakeProfit()!=0 && opShortPos!=0)
      { EntryS     = OrderOpenPrice();
        EntryTimeS = OrderOpenTime();
        topS       = OrderOpenPrice();
        bottomS    = OrderTakeProfit()-(Ask-Bid);
// ----
datetime leftS   =EntryTimeS;
datetime rightS  =EntryTimeS+(RectangleHours*60*60);

// ----
ObjectCreate("RangeS",OBJ_RECTANGLE,0,leftS,topS,rightS,bottomS);
ObjectSet("RangeS",OBJPROP_BACK,true);
ObjectSet("RangeS",OBJPROP_COLOR,colRangeS);

      } // if(OrderType
   } // if(OrderSymbol()==Symbol())  
 } // for(int

// --------------------------------------------
// ----------- 1st Trade / OrderSend ----------
// --------------------------------------------
 if(autoTrading==true
    && opOrders==0
    && inTime==1)
    
  {
// ---- open Long
  if( longEntry!=0
   && Low[0]<longEntry  
   && Bid<=longEntry+1/Fakt && Bid>=longEntry-2/Fakt
   
   && cntHistBuy==0
   && OrderTyp!=2)
       {
       OrderSend(Symbol(),OP_BUY,Lots,Ask,0, 0, 0,"1st Trade",MagicNumber,0);
       OrderSend(Symbol(),OP_BUY,Lots,Ask,0, 0, 0,"2nd Trade",MagicNumber,0);
       OrderSend(Symbol(),OP_BUY,Lots,Ask,0, 0, 0,"3rd Trade",MagicNumber,0);
       }

// ---- open Short
  if( shortEntry!=0
   && High[0]>shortEntry  
   && Bid>=shortEntry-1/Fakt && Bid<=shortEntry+2/Fakt

   && cntHistSell==0    
   && OrderTyp!=1)
       {
       OrderSend(Symbol(),OP_SELL,Lots,Bid,0, 0, 0,"1st Trade",MagicNumber,0);
       OrderSend(Symbol(),OP_SELL,Lots,Bid,0, 0, 0,"2nd Trade",MagicNumber,0);
       OrderSend(Symbol(),OP_SELL,Lots,Bid,0, 0, 0,"3rd Trade",MagicNumber,0);
       }

  } // autoTrading 

// --------------------------------------------
// ------------ Hedging / OrderSend -----------
// --------------------------------------------
 if(autoTrading==true
    && HedgeTrading==true
    && opOrders!=0
    && inTime==1)
    
  {
// ---- open Long
  if(longEntry!=0
   && LongIsOpen==0 && ShortIsOpen!=0
   && cntHistBuy==0
   
   && Low[0]<longEntry     
   && Bid<=longEntry+1/Fakt && Bid>=longEntry-2/Fakt

   && OrderTyp!=2)
       {
       OrderSend(Symbol(),OP_BUY,Lots,Ask,0, 0, 0,"1st Hedge",MagicNumber,0,Green);
       OrderSend(Symbol(),OP_BUY,Lots,Ask,0, 0, 0,"2nd Hedge",MagicNumber,0,Green);
       OrderSend(Symbol(),OP_BUY,Lots,Ask,0, 0, 0,"3rd Hedge",MagicNumber,0,Green);
       }

// ---- open Short
  if(shortEntry!=0
   && ShortIsOpen==0 && LongIsOpen!=0
   && cntHistSell==0
   
   && High[0]>shortEntry
   && Bid>=shortEntry-1/Fakt && Bid<=shortEntry+2/Fakt
   
   && OrderTyp!=1)
       {
       OrderSend(Symbol(),OP_SELL,Lots,Bid,0, 0, 0,"1st Hedge",MagicNumber,0,Crimson);
       OrderSend(Symbol(),OP_SELL,Lots,Bid,0, 0, 0,"2nd Hedge",MagicNumber,0,Crimson);
       OrderSend(Symbol(),OP_SELL,Lots,Bid,0, 0, 0,"3rd Hedge",MagicNumber,0,Crimson);
       }

  } // autoTrading 

// ----------------------------------------------
// ------------- OrderModify TP u. SL -----------
// ----------------------------------------------
opPos=0;
// ----

if(   opOrders!=0
   && OrderTP1!=0 && OrderSL!=0
   && autoTrading==true && inTime==1)
{
 for(cnt=0; cnt<OrdersTotal(); cnt++)
 {
 OrderSelect(cnt,SELECT_BY_POS);

   if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && (OrderStopLoss()==0 || OrderTakeProfit()==0))
   {
   opPos=opPos+1;
      
      if(opPos==1)
      {
      TakeProfit=OrderTP1/Fakt;
      OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-StopLoss,OrderOpenPrice()+TakeProfit,0);
      }
    
      if(opPos==2)
      {
      TakeProfit=OrderTP2/Fakt;
      OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-StopLoss,OrderOpenPrice()+TakeProfit,0);
      }
    
      if(opPos==3)
      {
      TakeProfit=OrderTP3/Fakt;
      OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-StopLoss,OrderOpenPrice()+TakeProfit,0);
      }
   } // if(OrderType()==OP_BUY
   
// ---- 
 if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && (OrderStopLoss()==0 || OrderTakeProfit()==0))
   {
   opPos=opPos+1;
   
      if(opPos==1)
      {
      TakeProfit=OrderTP1/Fakt;
      OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+StopLoss,OrderOpenPrice()-TakeProfit,0);
      }
    
      if(opPos==2)
      {
      TakeProfit=OrderTP2/Fakt;
      OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+StopLoss,OrderOpenPrice()-TakeProfit,0);
      }
    
      if(opPos==3)
      {
      TakeProfit=OrderTP3/Fakt;
      OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+StopLoss,OrderOpenPrice()-TakeProfit,0);
      }
   } // if(OrderType()==OP_SELL
 } // for(cnt=0
} // if(OrderTP1

// ----------------------------------------------
// --------------- TrailingSL/TP ----------------
// ----------------------------------------------

if(  opOrders!=0
  && TrailingStop!=0
  && Vola0 > Vola*TrailingRisk)
 
{
 for(cnt=0; cnt<OrdersTotal(); cnt++)
 {
 OrderSelect(cnt,SELECT_BY_POS);

  if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && opOrders==1)
    {
     if( Bid > OrderOpenPrice()+TrailingSL
      && Bid-TrailingSL > OrderStopLoss() )
      {
      OrderModify(OrderTicket(),OrderOpenPrice(),Bid-StopLoss,Bid+TrailingSL/2,0);
      } 
    }

// ---- 
  if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && opOrders==1)
    {
    if( Ask < OrderOpenPrice()-TrailingSL 
     && Ask+TrailingSL < OrderStopLoss() )
     {    
     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+StopLoss,Ask-TrailingSL/2,0);    
     } 
    }
 } // for(cnt=0;
} // if(TrailingStop

// ----------------------------------------------
// --------- DayTrade-Closing -------------------
// ----------------------------------------------
if(  opOrders!=0
  && Closing!=0 && TimeHour(Time[0])>=Closing-ZD)
{ 
 for(cnt=0; cnt<OrdersTotal(); cnt++)
 {
 OrderSelect(cnt,SELECT_BY_POS);

     if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
     {
     if(Bid<OrderOpenPrice())
     OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OrderOpenPrice(),0);
     if(Bid>OrderOpenPrice())
     OrderClose(OrderTicket(),Lots,Bid,0);     
     }
   
// ----   
     if(OrderType()==OP_SELL && OrderSymbol()==Symbol())
     { 
     if(Ask>OrderOpenPrice())
     OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OrderOpenPrice(),0);
     if(Ask<OrderOpenPrice())
     OrderClose(OrderTicket(),Lots,Ask,0);          
     }
 } // for(cnt=0;
} // if(Closing!=0

// ----
  } // start
return(0);       
//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---