Grail_2_001





//ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
// Ãðààëü_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:

BackTest : EURUSD on H1

From 2009-08-01 to 2009-10-01 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2009-11-01 to 2009-11-30 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2009-12-01 to 2010-01-17 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-04-01 to 2010-04-30 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-05-01 to 2010-05-31 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-06-01 to 2010-06-30 Profit Factor:0.00 Total Net Profit:0.00

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-02-27 Profit Factor:0.00 Total Net Profit:0.00

BackTest : USDCAD on H1

From 2009-12-01 to 2010-01-01 Profit Factor:0.00 Total Net Profit:0.00

BackTest : USDCHF on H1

From 2009-12-01 to 2010-01-01 Profit Factor:0.00 Total Net Profit:0.00

BackTest : USDJPY on H1

From 2009-11-01 to 2009-11-30 Profit Factor:0.00 Total Net Profit:0.00

Request Backtest for Grail_2_001


From : (yyyy/mm/dd) To: (yyyy/mm/dd)

Pair: Period: