//+------------------------------------------------------------------+ //| Scalping by day channel.mq4 | //| Copyright © 2005, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" //---- input parameters extern int Order_Point=10; // Íà êàêîì ðàññòîÿíèè âûñòàâëÿòü îðäåðà îò äíåâíûõ ìàõ/ìèí extern int SL_Point=50; // Âåëè÷èíà ñòîï-ëîñcà extern int TS1_Point=10; // ×åðåç ñêîëüêî ïóíêòîâ ïðèáûëè ïåðåíîñòèòü ñòîï-ëîññ â áåçóáûòî÷íîñòü extern int TS2_Point=15; // Âåëè÷èíà òðåéëèí-ñòîïà extern double Lots=0.1; // Îòêðûâàòüñÿ ëîòîì extern double TurnLots=0.2; // Âåëè÷èíà ñòîïà-ïåðåâîðîòà //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { int total, cnt, OpenOrder, DefOrder, pos; double max, min, SL; datetime time; //---- // Óñòàíàâëèâàåì âðåìÿ âûñòàâëåíèÿ îðäåðîâ äëÿ ðàçëè÷íûõ âàëþòíûõ ïàð if(Symbol()=="USDCAD") time=StrToTime("12:00"); else time=StrToTime("09:00"); // Ñ÷èòàåì êîëè÷åñòâî îòêðûòûõ è îòëîæåííûõ îðäåðîâ ïî òåêóùåìó èíñòðóìåíòó total=OrdersTotal(); OpenOrder=0; DefOrder=0; for(cnt=0;cnt<total;cnt++) { if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()==Symbol()) { if(OrderType()==OP_BUY || OrderType()==OP_SELL) OpenOrder++; // êîëè÷åñòâî îòêðûòûõ îðäåðîâ else DefOrder++; // êîëè÷åñòâî çàêðûòûõ îðäåðîâ } } // Ïðîâåðÿåì íå ïîðà ëè óñòàíàâëèâàòü îòëîæåííûå îðäåðà if(TimeHour(CurTime())==TimeHour(time) && TimeMinute(CurTime())<5 && OpenOrder==0 && DefOrder==0) { total=24*60/Period()+1; max=High[0]; min=Low[0]; for(pos=0; pos<total; pos++) { if (TimeDayOfYear(Time[pos])==TimeDayOfYear(CurTime())) { if(High[pos]>max) max=High[pos]; // Äíåâíîé ýêñòðåìóì if(Low[pos]<min) min=Low[pos]; // Äíåâíîé ýêñòðåìóì } } OrderSend(Symbol(),OP_BUYSTOP,Lots,max+Order_Point*Point,3,max-(SL_Point-Order_Point)*Point,0,"BUY Scalping",16384,0,CLR_NONE); OrderSend(Symbol(),OP_SELLSTOP,Lots,min-Order_Point*Point,3,min+(SL_Point-Order_Point)*Point,0,"SELL Scalping",16384,0,CLR_NONE); } //  ñëó÷àå îòêðûòèÿ îðäåðà óäàëÿåì ïðîòèâîïîëîæíûé îðäåð // à òàê æå òðåéëèì ïðîôèò íà áåçóáûòî÷íîñòü if(OpenOrder==1 && DefOrder==1) { total=OrdersTotal(); for(cnt=0;cnt<total;cnt++) { if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()==Symbol() && OrderMagicNumber()==16384) { // Óñòàíîâêà ñòîï ëîñà â áåçóáûòî÷íîñòü if(OrderType()==OP_BUY && (Bid-OrderOpenPrice())>(TS1_Point*Point) && OrderStopLoss()<OrderOpenPrice()) OrderModify(OrderTicket(),0,OrderOpenPrice()+1*Point,0,0,CLR_NONE); if(OrderType()==OP_SELL && (OrderOpenPrice()-Ask)>(TS1_Point*Point) && OrderStopLoss()>OrderOpenPrice()) OrderModify(OrderTicket(),0,OrderOpenPrice()-1*Point,0,0,CLR_NONE); // Òðåéëèíã îòêðûòûõ ïîçèöèé if(OrderType()==OP_BUY && (Bid-OrderStopLoss())>(TS2_Point*Point) && OrderStopLoss()>OrderOpenPrice()) OrderModify(OrderTicket(),0,Bid-TS2_Point*Point,0,0,CLR_NONE); if(OrderType()==OP_SELL && (OrderStopLoss()-Ask)>(TS2_Point*Point) && OrderStopLoss()<OrderOpenPrice()) OrderModify(OrderTicket(),0,Ask+TS2_Point*Point,0,0,CLR_NONE); // Óäàëåíèå ïðîòèâîïîëîæíûõ îðäåðîâ if(OrderType()==OP_BUYSTOP && OrderLots()==Lots) { OrderDelete(OrderTicket()); DefOrder--; } if(OrderType()==OP_SELLSTOP && OrderLots()==Lots) { OrderDelete(OrderTicket()); DefOrder--; } } } } //Âûñòàâëÿåì îòêðûòèå ñòîïîì-ïåðåâîðîòîì if(OpenOrder==1 && DefOrder==0) { total=OrdersTotal(); for(cnt=0;cnt<total;cnt++) { if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()==Symbol() && OrderMagicNumber()==16384) { if(OrderType()==OP_BUY && OrderLots()==Lots) { SL=OrderStopLoss(); OrderSend(Symbol(),OP_SELLSTOP,TurnLots,SL,3,SL+SL_Point*Point,0,"TurnSELL Scalping",16384,0,CLR_NONE); } if(OrderType()==OP_SELL && OrderLots()==Lots) { SL=OrderStopLoss(); OrderSend(Symbol(),OP_BUYSTOP,TurnLots,SL,3,SL-SL_Point*Point,0,"TurnBUY Scalping",16384,0,CLR_NONE); } } } } //  ñëó÷àå çàêðûòèÿ îñíîâíîé ïîçèöèè óäàëÿåì ñòîï ïåðåâîðîòîì if(OpenOrder==0 && DefOrder==1) { total=OrdersTotal(); for(cnt=0;cnt<total;cnt++) { if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()==Symbol() && OrderMagicNumber()==16384 && OrderLots()==TurnLots) OrderDelete(OrderTicket()); } } //---- return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Series array that contains open time of 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 can change open orders parameters, due to possible stepping strategy
Other Features: