/* Ñèñòåìà íà íåäåëþ.mq4 © 2003-2006 Mandor ® E-mail: mandorr@gmail.com Ðåçóëüòàò ðàáîòû ñîâåòíèêà íå çàâèñèò îò èñïîëüçóåìîãî ïåðèîäà Âî âòîðíèê â íà÷àëå ÷àñà 2 GMT âûñòàâëÿþòñÿ îòëîæåííûå îðäåðà Öåíà îòêðûòèÿ îðäåðà Buy Stop ðàâíà òåêóùåé öåíå ïëþñ 50 ïèïñîâ Öåíà îòêðûòèÿ îðäåðà Sell Stop ðàâíà òåêóùåé öåíå ìèíóñ 50 ïèïñîâ Ñòîï ëîññ îðäåðîâ Buy Stop è Sell Stop ðàâíî 100 ïèïñîâ Ïåðåíîñ ñòîï ëîññà íà 30 ïèïñîâ îò òåêóùåé öåíû ïåðåä âàæíûìè íîâîñòÿìè -> ïîêà âðó÷íóþ Âî ïÿòíèöó â íà÷àëå ÷àñà 21 GMT âñå îðäåðà ðàêðûâàþòñÿ (äëÿ FIBO Groupe Ltd. â íà÷àëå ÷àñà 20 GMT) UseMM: èñïîëüçîâàòü Money Management PercentMM: ïðîöåíò îò ñâîáîäíûõ ñðåäñòâ äëÿ âû÷èñëåíèÿ íîâîé ïîçèöèè MinLots: ìèíèìàëüíî äîïóñòèìûé ðàçìåð ïîçèöèè ó äèëåðà MinStop: ìèíèìàëüíî äîïóñòèìîå ðàññòîÿíèå îò òåêóùåé öåíû äî îòëîæåííîãî îðäåðà, ñòîï ëîññà èëè òåéê ïðîôèòà ó äèëåðà ShiftGMT: âðåìÿ äèëåðà ìèíóñ âðåìÿ ïî Ãðèíâè÷ó (äëÿ Alpari = +1, äëÿ FXTeam = +2, äëÿ FIBO = +1, äëÿ LiteForex = +2) ********************************************* Åâðî îòêðûòèå â 5.00 ÌÑÊ, çàêðûòèå ïÿòí.21.00,ÒÏ íå ñòàâèòñÿ, ëîññ=100, éåíà +9 GMT îòêðûòèå, çàêðûòèå â ïÿòí. 21.00 ÌÑÊ, ÒÏ íå ñòàâèòñÿ, ëîññ-100. Âñå îòêðûòèÿ âî âòîðíèê íî÷üþ. */ // Parametres extern int StartDayOfWeek=2; extern int StartHour=2; extern int StopDayOfWeek=5; extern int StopHour=21; extern int Range=50; extern int TakeProfit=0; extern int StopLoss=100; extern double Lots=0.1; extern bool UseMM=false; extern int PercentMM=20; extern double MinLots=0.1; extern int MinStop=11; extern int ShiftGMT=1; // Variables int result; int err; int i; int time; int hour; int day_of_week; int set_buy_stop=0; int set_sell_stop=0; double range; double volume; double price; double loss; double profit; // New quotations are received void start() { if (Bars<100 || IsTradeAllowed()==false) return; if (Range<=0 || ShiftGMT<-23 || ShiftGMT>23) return; if (StartDayOfWeek<1 || StartDayOfWeek>5 || StartHour<=0 || StartHour>23) return; if (StopDayOfWeek<1 || StopDayOfWeek>5 || StopHour<=0 || StopHour>23) return; time=CurTime()-ShiftGMT*3600; hour=TimeHour(time); day_of_week=TimeDayOfWeek(time); if (day_of_week==StartDayOfWeek && hour==StartHour) { if (set_buy_stop==0 && TotalBuyStop()==0) { if (SetBuyStop()>0) {set_buy_stop=1; return;} } if (set_sell_stop==0 && TotalSellStop()==0) { if (SetSellStop()>0) {set_sell_stop=1; return;} } } else { set_buy_stop=0; set_sell_stop=0; } if (day_of_week==StopDayOfWeek && hour==StopHour) { if (CloseAllOrders()>0) return; } } // Set a Buy Stop order int SetBuyStop() { result=0; volume=LotsCounting(); if (Range<MinStop) range=MinStop*Point; else range=Range*Point; price=Ask+range; loss=0; if (StopLoss>0) loss=price-StopLoss*Point; profit=0; if (TakeProfit>0) profit=price+TakeProfit*Point; if (OrderSend(Symbol(),OP_BUYSTOP,volume,price,0,loss,profit,"Open by expert",0,0)>0) result=1; else {err=GetLastError(); Print("Set a pending order failed with error #",err);} return(result); } // Set a Sell Stop order int SetSellStop() { result=0; volume=LotsCounting(); if (Range<MinStop) range=MinStop*Point; else range=Range*Point; price=Bid-range; loss=0; if (StopLoss>0) loss=price+StopLoss*Point; profit=0; if (TakeProfit>0) profit=price-TakeProfit*Point; if (OrderSend(Symbol(),OP_SELLSTOP,volume,price,0,loss,profit,"Open by expert",0,0)>0) result=1; else {err=GetLastError(); Print("Set a pending order failed with error #",err);} return(result); } // Close opened positions & deleting of pending orders int CloseAllOrders() { result=0; for (i=0;i<OrdersTotal();i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if (OrderSymbol()!=Symbol()) continue; if (OrderType()==OP_BUY) { if (OrderClose(OrderTicket(),OrderLots(),Bid,2)) result=1; else {err=GetLastError(); Print("Close of opened order failed with error #",err);} break; } if (OrderType()==OP_SELL) { if (OrderClose(OrderTicket(),OrderLots(),Ask,2)) result=1; else {err=GetLastError(); Print("Close of opened order failed with error #",err);} break; } if (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP) { if (OrderDelete(OrderTicket())) result=1; else {err=GetLastError(); Print("Delete of pending order failed with error #",err);} break; } } return(result); } // Buy Stop count int TotalBuyStop() { result=0; for(i=0;i<OrdersTotal();i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if (OrderSymbol()!=Symbol()) continue; if (OrderType()==OP_BUYSTOP ) result++; } return(result); } // Sell Stop count int TotalSellStop() { result=0; for(i=0;i<OrdersTotal();i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if (OrderSymbol()!=Symbol()) continue; if (OrderType()==OP_SELLSTOP) result++; } return(result); } // Account lots double LotsCounting() { volume=Lots; if (UseMM) volume=NormalizeDouble((PercentMM*AccountFreeMargin()/100000),1); if (volume<MinLots) volume=MinLots; return(volume); } // End
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
It automatically opens orders when conditions are reached
Checks for the total of open orders
It Closes Orders by itself
Other Features: