//+------------------------------------------------------------------+ //| e-Monday_LS.mq4 | //| Êèì Èãîðü Â. aka KimIV | //| http://www.kimiv.ru | //| | //| 16.12.2005 Ñîâåòíèê ïî ñòðàòåãèè Ïîíåäåëüíèê ïðîòèâ ïÿòíèöû | //| ñ ðàçäåëüíîé ñèñòåìîé âûõîäîâ äëÿ ïîçèöèé LONG è SHORT. | //+------------------------------------------------------------------+ #property copyright "Êèì Èãîðü Â. aka KimIV" #property link "http://www.kimiv.ru" #define MAGIC 20051216 //------- Âíåøíèå ïàðàìåòðû ñîâåòíèêà -------------------------------- extern string _Parameters_Trade = "----- Ïàðàìåòðû òîðãîâëè"; extern int lStopLoss = 45; // Ðàçìåð ôèêñèðîâàííîãî ñòîïà extern int lTakeProfit = 180; // Ðàçìåð ôèêñèðîâàííîãî òýéêà extern int lDayForClose = 4; // Äåíü äëÿ çàêðûòèÿ ïîçèöèè extern int lHourClosePos = 10; // Âðåìÿ çàêðûòèÿ ïîçèöèè extern int sStopLoss = 35; // Ðàçìåð ôèêñèðîâàííîãî ñòîïà extern int sTakeProfit = 250; // Ðàçìåð ôèêñèðîâàííîãî òýéêà extern int sDayForClose = 2; // Äåíü äëÿ çàêðûòèÿ ïîçèöèè extern int sHourClosePos = 13; // Âðåìÿ çàêðûòèÿ ïîçèöèè extern int HourOpenPos = 11; // Âðåìÿ îòêðûòèÿ ïîçèöèè extern int RangeFriday = 0; // Äèàïàçîí ïÿòíèöû (Open-Close) extern double Lots = 0.1; // Ðàçìåð òîðãóåìîãî ëîòà extern int Slippage = 3; // Ïðîñêàëüçûâàíèå öåíû //---- Ãëîáàëüíûå ïåðåìåííûå ñîâåòíèêà ------------------------------- bool bLastBuy; int NumberOfTry = 9; bool UseSound = True; string NameFileSound = "expert.wav"; color clOpenBuy = LightBlue; color clOpenSell = LightCoral; color clModifyBuy = Aqua; color clModifySell = Tomato; color clCloseBuy = Blue; color clCloseSell = Red; //------- Ïîêëþ÷åíèå âíåøíèõ ìîäóëåé --------------------------------- #include <a-SimpleTrailing.mqh> #include <stdlib.mqh> void deinit() { Comment(""); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ void start() { if (DayOfWeek()==1 && Hour()==HourOpenPos && Minute()<=10) OpenPosition(); if (bLastBuy) { if (DayOfWeek()==lDayForClose && Hour()>=lHourClosePos) CloseAllPositions(); TrailingStop=80; } else { if (DayOfWeek()==sDayForClose && Hour()>=sHourClosePos) CloseAllPositions(); TrailingStop=100; } if (UseTrailing) TrailingPositions(); } //+------------------------------------------------------------------+ //| Îòêðûòèå ïîçèöèè | //+------------------------------------------------------------------+ void OpenPosition() { double ldStop=0, ldTake=0; int bs=GetSignal(); if (!ExistPosition()) { if (bs>0) { if (lStopLoss!=0) ldStop=Ask-lStopLoss*Point; if (lTakeProfit!=0) ldTake=Ask+lTakeProfit*Point; SetOrder(OP_BUY, Ask, ldStop, ldTake); bLastBuy=True; } if (bs<0) { if (sStopLoss!=0) ldStop=Bid+sStopLoss*Point; if (sTakeProfit!=0) ldTake=Bid-sTakeProfit*Point; SetOrder(OP_SELL, Bid, ldStop, ldTake); bLastBuy=False; } } } //+------------------------------------------------------------------+ //| Âîçâðàùàåò òîðãîâûé ñèãíàë | //+------------------------------------------------------------------+ int GetSignal() { double op1=iOpen (NULL, PERIOD_D1, 1); double cl1=iClose(NULL, PERIOD_D1, 1); int bs=0; if (MathAbs(op1-cl1)>RangeFriday*Point) { if (op1>Ask) bs=1; if (op1<Bid) bs=-1; } return(bs); } //+------------------------------------------------------------------+ //| Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ ïîçèöèè ïî íîìåðó | //+------------------------------------------------------------------+ bool ExistPosition() { bool Exist=False; for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { Exist=True; break; } } } } return(Exist); } //+------------------------------------------------------------------+ //| Óñòàíîâêà îðäåðà | //| Ïàðàìåòðû: | //| op - îïåðàöèÿ | //| pp - öåíà | //| ldStop - óðîâåíü ñòîï | //| ldTake - óðîâåíü òåéê | //+------------------------------------------------------------------+ void SetOrder(int op, double pp, double ldStop, double ldTake) { color clOpen; if (op==OP_BUY) clOpen=clOpenBuy; else clOpen=clOpenSell; OrderSend(Symbol(),op,Lots,pp,Slippage,ldStop,ldTake,"",MAGIC,0,clOpen); } //+------------------------------------------------------------------+ //| Çàêðûòèå âñåõ ïîçèöèé ïî ðûíî÷íîé öåíå | //+------------------------------------------------------------------+ void CloseAllPositions() { for (int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) { if (OrderType()==OP_BUY) { OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, clCloseBuy); } if (OrderType()==OP_SELL) { OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clCloseSell); } } } } } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains close prices for each bar
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
It Closes Orders by itself
Other Features: