//ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ // Ãðààëü_2.mq4. // Èñïîëüçóåòñÿ â êà÷åñòâå ïðèìåðà â ñòàòüå "Ìîé ïåðâûé Ãðààëü". // Ñåðãåé Êîâàë¸â, Äíåïðîïåòðîâñê, sk@mail.dnepr.net, ICQ 64015987, http://autograf.dp.ua/. //ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ extern int TakeProfit=5; // TakeProfit îðäåðà extern int StopLoss= 29; // StopLoss îðäåðà extern int Distan = 2; // Äèñòàíöèÿ îò ñðåäíåé ÌÀ extern int Cls = 2; // Çàêðûòü ïðè ** ïíêòîâ ïðèáûëè extern int period_MA=16; // Ïåðèîä ñðåäíåé ÌÀ //extern int Time_1 = 0; // Âðåìÿ íà÷àëà ðàáîòû //extern int Time_2 = 0; // Âðåìÿ îêîí÷àíèÿ ðàáîòû extern int Prots = 0; // Ïðîöåíò îò ñâîáîäíûõ ñðåäñòâ //-------------------------------------------------------------------------------------------- int Nom_bl, // Íîìåð îðäåðà BuyLimit Nom_sl, // Íîìåð îðäåðà SellLimit total, // Êîëè÷åñòâî ëîòîâ bl = 0, // 1 = ôàêò íàëèèÿ îðäåðà BuyLimit sl = 0, // 1 = ôàêò íàëèèÿ îðäåðà SellLimit b = 0, // 1 = ôàêò íàëèèÿ îðäåðà Buy s = 0; // 1 = ôàêò íàëèèÿ îðäåðà Sell //-------------------------------------------------------------------------------------------- double OP, // OpenPrice (àáñîëþòí. ïóíêòîâ) SL, // StopLoss îðäåðà (îòíîñèò.ïóíêò.) TP, // TakeProfit îðäåðà (îòíîñèò.ïóíêò.) dist, // Äèñòàíöèÿ îò ñðåäíåé ÌÀ(îòí.ïóí.) Level, // Ìèíèì. äîïóñò äèñòàíöèÿ îòë.îðä OP_bl, // OpenPrice BuyLimit (àáñ. ïóíêòîâ) OP_sl, // OpenPrice SellLimit(àáñ. ïóíêòîâ) cls, // Çàêðûòü ïðè ** ïðèáûëè (àáñ. ïóí.) MA, // Çíà÷åíèå ÌÀ (êóðñ) spred, // Ñïðåä (àáñ. ïóíêòîâ) Lot; // Êîëè÷åñòâî ëîòîâ //ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ int init() { Level=MarketInfo(Symbol(),MODE_STOPLEVEL); // Âûÿñíèì ÷òî íàì äà¸ò ñåðâåð Level=(Level+1)*Point; // ?:) SL=StopLoss*Point; // StopLoss îðäåðà (îòíîñèò.ïóíêò.) TP=TakeProfit*Point; // TakeProfit îðäåðà (îòíîñèò.ïóíêò.) dist=Distan*Point; // Äèñòàíöèÿ îò ñðåäíåé ÌÀ(îòí.ïóí.) cls=Cls*Point; // Çàêðûòü ïðè ** ïðèáûëè (àáñ. ïóí.) spred=Ask-Bid; // Ñïðåä (àáñ. ïóíêòîâ) return; } //ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ int start() { //============================================================================================ total=OrdersTotal(); // Êîëè÷åñòâî ëîòîâ bl=0; // Îáíóëèìñÿ â íà÷àëå ïðîõîäà sl=0; // Îáíóëèìñÿ â íà÷àëå ïðîõîäà b=0; // Îáíóëèìñÿ â íà÷àëå ïðîõîäà s=0; // Îáíóëèìñÿ â íà÷àëå ïðîõîäà //-------------------------------------------------------------------------------------------- for (int i=total; i>=0; i--) // Ïî âñåì îðäåðàì { if (OrderSelect(i,SELECT_BY_POS)==true && // Âûäåëèì îðäåð OrderSymbol()==Symbol()) { //-------------------------------------------------------------------------------------------- if (OrderType()==OP_BUY) // Îðäåð Buy { b =1; // Åñòü òàêîé îðäåð Close_B(OrderTicket(),OrderLots()); // Çàêðûòü îðäåð (íàäî ëè ðåøèò ô-èÿ) } //-------------------------------------------------------------------------------------------- if (OrderType()==OP_SELL) // Îðäåð Sell { s =1; // Åñòü òàêîé îðäåð Close_S(OrderTicket(),OrderLots()); // Çàêðûòü îðäåð (åñëè íàäî) } //-------------------------------------------------------------------------------------------- if (OrderType()==OP_BUYLIMIT) // Îðäåð BuyLimit { OP_bl=NormalizeDouble(OrderOpenPrice(),Digits);//OpenPrice BuyLimit(àáñ. ïóíêòîâ) Nom_bl=OrderTicket(); bl=1; // Åñòü òàêîé îðäåð } //-------------------------------------------------------------------------------------------- if (OrderType()==OP_SELLLIMIT) // ÎðäåðSellLimit { OP_sl=NormalizeDouble(OrderOpenPrice(),Digits);//OpenPrice SellLimit(àáñ.ïóíêòîâ) Nom_sl=OrderTicket(); sl=1; // Åñòü òàêîé îðäåð } //-------------------------------------------------------------------------------------------- } } //-------------------------------------------------------------------------------------------- MA = iMA(NULL,0, period_MA, 0,MODE_LWMA, PRICE_TYPICAL, 0);// Òåêóùåå çíà÷åíèå ÌÀ Modify_order(); // Àêòèâèçèðóåì ìîäèôèêàöèþ Open_order() ; // Àêòèâèçèðóåì îòêðûòèå //============================================================================================ return; } //ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ void Close_B(int Nomber, double lots) // Çàêðûòèå îðäåðîâ Buy { //============================================================================================ if (NormalizeDouble(Bid-OrderOpenPrice(),Digits)>=cls)// Åñëè äîñòèãíóò çàäàííûé ïðîôèò { OrderClose( Nomber, lots, Bid, 1, Yellow); // Çàêðûâàåìñÿ b = 0; // È áîëüøå íåò áàÿ } //============================================================================================ return; } //ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ void Close_S(int Nomber, double lots) // Çàêðûòèå îðäåðîâ Sell { //============================================================================================ if (NormalizeDouble(OrderOpenPrice()-Ask,Digits)>=cls)// Åñëè äîñòèãíóò çàäàííûé ïðîôèò { OrderClose( Nomber, lots, Ask, 1, Yellow); // Çàêðûâàåìñÿ s = 0; // È áîëüøå íåò ñåëëà } //============================================================================================ return; } //ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ void Modify_order() // Ìîäèôèêàöèÿ îðäåðîâ { //============================================================================================ if (bl==1) // Åñëè åñòü ÁàéËèìèò { OP=MA-dist; // Îí äîëæåí ñòîÿòü çäåñü if (MathAbs(OP_bl-OP)>0.5*Point) // À åñëè îí çäåñü íå ñòîèò { OrderModify(Nom_bl,OP,OP-SL,OP+TP,0,DeepSkyBlue);// Ìîäèôèêàöèÿ îðäåðà } } //-------------------------------------------------------------------------------------------- if (sl==1) // Åñëè åñòü ÑåëëËèìèò { OP=MA+spred+dist; // Îí äîëæåí ñòîÿòü çäåñü if (MathAbs(OP_sl-OP)>0.5*Point) // À åñëè îí çäåñü íå ñòîèò { OrderModify( Nom_sl, OP, OP+SL, OP-TP, 0, Pink);// Ìîäèôèêàöèÿ îðäåðà } } //============================================================================================ return; } //ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ void Open_order() // Îòêðûâàþùàÿ ôóíêöèÿ { // int Tek_Time=TimeHour(CurTime()); // Äëÿ òåñòèðîâàíèÿ ïî âðåìåíè // if (Tek_Time>Time_2 && Tek_Time<Time_1) return; // Äëÿ òåñòèðîâàíèÿ ïî âðåìåíè //============================================================================================ if (b==0 && bl==0) // Íåò íèêàêèõ áà¸â, îòêðûâàåì bl { OP=MA-dist; // Êóðñ îòêðûòèÿ îðäåðà bl if(OP>Ask-Level) OP=Ask-Level; // Óòî÷íåíèå ÎÐ â ñîîòâ. ñ äîïóñêîì OP=NormalizeDouble(OP,Digits); // Íîðìàëèçàöèÿ (ÌÀ äà¸ò 5é çíàê) OrderSend(Symbol(),OP_BUYLIMIT, Lots(),OP,3,OP-SL,OP+TP,"Grail_2",0,0,Blue);// Îòêðûâàåìñÿ bl=1; // Òåïåðü åñòü áàé } //-------------------------------------------------------------------------------------------- if (s==0 && sl==0) // Íåò íèêàêèõ ñåëîâ, îòêðûâàåì sl { OP=MA+spred+dist; // Êóðñ îòêðûòèÿ îðäåðà sl if(OP<Bid+Level) OP=Bid+Level; // Óòî÷íåíèå ÎÐ â ñîîòâ. ñ äîïóñêîì OP=NormalizeDouble(OP,Digits); // Íîðìàëèçàöèÿ (ÌÀ äà¸ò 5é çíàê) OrderSend(Symbol(),OP_SELLLIMIT,Lots(),OP,3,OP+SL,OP-TP,"Grail_2",0,0,Red);// Îòêðûâàåìñÿ sl=1; // Òåïåðü åñòü sl } ///============================================================================================ return; } //ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ double Lots() // Âû÷èñëåíèå ëîòîâ { //============================================================================================ Lot=NormalizeDouble(AccountEquity()*Prots/100/1000,1);// Âû÷èñëÿåì êîëè÷. ëîòîâ double Min_Lot = MarketInfo(Symbol(), MODE_MINLOT); // Ìèíèìàëüíî äîïóñòèìàÿ ñòîèì. ëîòîâ if (Lot == 0 ) Lot = Min_Lot; // Äëÿ òåñòà íà ïîñòîÿí. ìèíèì. ëîòàõ //============================================================================================ return(Lot); } //ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Moving average indicator
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
It Closes Orders by itself
It can change open orders parameters, due to possible stepping strategy
It automatically opens orders when conditions are reached
Other Features: