Price Data Components
Orders Execution
Indicators Used
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 Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---