//+------------------------------------------------------------------+ //| e-Friday-abricOS.mq4 | //| abricOS & KimIV | //| http://www.kimiv.ru | //| | //| 12.10.2005 Friday edition by abricOS | //+------------------------------------------------------------------+ #property copyright "abricOS & KimIV" #property link "http://www.kimiv.ru" #define MAGIC 20051011 //------- Âíåøíèå ïàðàìåòðû ñîâåòíèêà -------------------------------- extern string _Parameters_Trade = "----- Ïàðàìåòðû òîðãîâëè"; extern double Lots = 0.1; // Ðàçìåð òîðãóåìîãî ëîòà extern int StopLoss = 37; // Ðàçìåð ôèêñèðîâàííîãî ñòîïà extern int TakeProfit = 90; // Ðàçìåð ôèêñèðîâàííîãî òåéêà extern int HourSetOrders = 20; // ×àñ óñòàíîâêè îðäåðîâ extern int MinuteSetOrders = 55; // Ìèíóòû óñòàíîâêè îðäåðîâ extern int DeltaSetOrders = 30; // Äåëüòà óñòàíîâêè îðäåðîâ extern int Slippage = 3; // Ïðîñêàëüçûâàíèå öåíû extern string _Parameters_Expert = "----- Ïàðàìåòðû ñîâåòíèêà"; extern color clOpenBuy = LightBlue; // Öâåò îòêðûòèÿ ïîêóïêè extern color clOpenSell = LightCoral; // Öâåò îòêðûòèÿ ïðîäàæè extern color clModifyBuy = Aqua; // Öâåò ìîäèôèêàöèè ïîêóïêè extern color clModifySell = Tomato; // Öâåò ìîäèôèêàöèè ïðîäàæè extern color clCloseBuy = Blue; // Öâåò çàêðûòèÿ ïîêóïêè extern color clCloseSell = Red; // Öâåò çàêðûòèÿ ïðîäàæè //---- Ãëîáàëüíûå ïåðåìåííûå ñîâåòíèêà ------------------------------- //------- Ïîäêëþ÷åíèå âíåøíèõ ìîäóëåé -------------------------------- //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ void deinit() { Comment(""); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ void start() { if (DayOfWeek()==5 && Hour()==HourSetOrders && Minute()>=MinuteSetOrders && Minute()<MinuteSetOrders+3) SetOrders(); DeleteOppositeOrders(); } //+------------------------------------------------------------------+ //| Óñòàíîâêà îðäåðîâ | //+------------------------------------------------------------------+ void SetOrders() { double ldStop=0, ldTake=0; double pAsk=Ask+DeltaSetOrders*Point; double pBid=Bid-DeltaSetOrders*Point; if (!ExistOrder(1)) { if (StopLoss!=0) ldStop=pAsk-StopLoss*Point; if (TakeProfit!=0) ldTake=pAsk+TakeProfit*Point; SetOrder(OP_BUYSTOP, pAsk, ldStop, ldTake, 1); return; } // Ïîêóïêà îò íèæíåé ãðàíèöû if (!ExistOrder(2)) { if (StopLoss!=0) ldStop=pBid+StopLoss*Point; if (TakeProfit!=0) ldTake=pBid-TakeProfit*Point; SetOrder(OP_SELLSTOP, pBid, ldStop, ldTake, 2); return; } } //+------------------------------------------------------------------+ //| Óäàëåíèå ïðîòèâîïîëîæíûõ îðäåðîâ | //+------------------------------------------------------------------+ void DeleteOppositeOrders() { bool fep1, fep2; fep1=ExistPosition(1); fep2=ExistPosition(2); for (int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol()) { if (OrderType()==OP_BUYSTOP && OrderMagicNumber()==MAGIC+1) { if (fep2) OrderDelete(OrderTicket()); } if (OrderType()==OP_SELLSTOP && OrderMagicNumber()==MAGIC+2) { if (fep1) OrderDelete(OrderTicket()); } } } } } //+------------------------------------------------------------------+ //| Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ îðäåðà èëè ïîçèöèè ïî íîìåðó | //+------------------------------------------------------------------+ bool ExistOrder(int mn) { bool Exist=False; for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC+mn) { if (TimeDay(OrderOpenTime())==TimeDay(CurTime())) { Exist=True; } } } if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC+mn) { Exist=True; } } } return(Exist); } //+------------------------------------------------------------------+ //| Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ ïîçèöèè ïî íîìåðó | //+------------------------------------------------------------------+ bool ExistPosition(int mn) { bool Exist=False; for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC+mn) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { Exist=True; } } } } return(Exist); } //+------------------------------------------------------------------+ //| Óñòàíîâêà îðäåðà | //| Ïàðàìåòðû: | //| op - îïåðàöèÿ | //| pp - öåíà | //| ldStop - óðîâåíü ñòîï | //| ldTake - óðîâåíü òåéê | //| mn - äîáàâèòü ê MAGIC | //+------------------------------------------------------------------+ void SetOrder(int op, double pp, double ldStop, double ldTake, int mn) { color clOpen; if (op==OP_BUYLIMIT || op==OP_BUYSTOP) clOpen=clOpenBuy; else clOpen=clOpenSell; OrderSend(Symbol(),op,Lots,pp,Slippage,ldStop,ldTake,"",MAGIC+mn,0,clOpen); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
It automatically opens orders when conditions are reached
Other Features: