2 ______ _ _____





/*
2 îðäåðà â ñóòêè.mq4
© 2003-2006 Mandor ®
E-mail: mandorr@gmail.com
Ðåçóëüòàò ðàáîòû ñîâåòíèêà íå çàâèñèò îò èñïîëüçóåìîãî ïåðèîäà
 íà÷àëå ÷àñà StartHour óñòàíàâëèâàþòñÿ íîâûå îòëîæåííûå îðäåðà
Range: ðàññòîÿíèå îò òåêóùåé öåíû äî öåíû îòëîæåííîãî îðäåðà
OrderExpirationDays: âðåìÿ æèçíè îòëîæåííîãî îðäåðà â äíÿõ
UseMM: èñïîëüçîâàòü Money Management. Ðåêîìåíäóåòñÿ âêëþ÷èòü (UseMM=true)
PercentMM: ïðîöåíò îò ñâîáîäíûõ ñðåäñòâ äëÿ âû÷èñëåíèÿ íîâîé ïîçèöèè
MinLots: ìèíèìàëüíî äîïóñòèìûé ðàçìåð ïîçèöèè ó äèëåðà
MinStop: ìèíèìàëüíî äîïóñòèìîå ðàññòîÿíèå îò òåêóùåé öåíû äî îòëîæåííîãî îðäåðà, ñòîï ëîññà èëè òåéê ïðîôèòà ó äèëåðà
ShiftGMT: âðåìÿ äèëåðà ìèíóñ âðåìÿ ïî Ãðèíâè÷ó (äëÿ Alpari = 1, äëÿ FXTeam = 2, äëÿ FIBO = 1, äëÿ LiteForex = 2)
*/


// Parametres
extern int StartHour=13;
extern int Range=40;
extern int TakeProfit=90;
extern int StopLoss=200;
extern double Lots=0.1;
extern double OrderExpirationDays=7;
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 hour;
int set_buy_stop=0;
int set_sell_stop=0;
double volume;
double range;
double price;
double loss;
double profit;


// When new quotations are received this function is executed
void start()
   {
   if (Bars<100 || IsTradeAllowed()==false) return;
   if (Range<=0 || ShiftGMT<-23 || ShiftGMT>23) return;
   if (DeleteOldOrders()>0) return;
   hour=Hour()-ShiftGMT;
   if (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;
      }
   }


// Deleting of old pending orders
int DeleteOldOrders()
   {
   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 && OrderType()!=OP_SELLSTOP) continue;
      if (CurTime()-OrderOpenTime()<86400*OrderExpirationDays) continue;
         {
         if (OrderDelete(OrderTicket())) result=1;
         else {err=GetLastError(); Print("Delete of pending order failed with error #",err);}
         break;
         }
      }
   return(result);
   }


// 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);
   }


// 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 (TimeDay(OrderOpenTime())!=Day()) 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 (TimeDay(OrderOpenTime())!=Day()) 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:
Checks for the total of open orders

It automatically opens orders when conditions are reached

Other Features:

BackTest : EURUSD on H1

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

BackTest : USDJPY on H1

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

BackTest : USDCHF on H1

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

BackTest : EURUSD on H1

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

BackTest : USDCAD on H1

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

BackTest : EURUSD on H1

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

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-02-27 Profit Factor:0.87 Total Net Profit:-72.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

Request Backtest for 2 ______ _ _____


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

Pair: Period: