Hedge Hog





// Hedge Hog.mq4
// Ñîâåòíèê

/*
 íà÷àëå ÷àñà StartHour îòêðûâàþòñÿ 1 îðäåð BUY è 1 îðäåð SELL
ExpirationDays: âðåìÿ æèçíè îðäåðà â äíÿõ
TimeZoneOfData: âðåìÿ äèëåðà ìèíóñ âðåìÿ ïî Ãðèíâè÷ó (äëÿ Alpari = 1, äëÿ FXTeam = 2, äëÿ FIBO = 1, äëÿ LiteForex = 1)
*/

#property copyright   "mandorr@gmail.com"

extern int StartHour=0;
extern int TimeZone=1;
extern int OrderExpirationDays=2;
extern int TakeProfit=14;
extern int StopLoss=0;
extern double Lots=0.1;

int set_buy=0;
int set_sell=0;

void start()
   {
   if (Bars<100 || IsTradeAllowed()==false) return;
   if (TimeZone<-23 || TimeZone>23) return;
   TestOrderExpirationDays();
   int hour=Hour()-TimeZone;
   if (hour==StartHour)
      {
      if (set_buy ==0 && TotalBuy ()==0) { if (OpenBuy ()>0) {set_buy =1; return;} }
      if (set_sell==0 && TotalSell()==0) { if (OpenSell()>0) {set_sell=1; return;} }
      }
   else
      {
      set_buy=0;
      set_sell=0;
      }
   }

void TestOrderExpirationDays()
   {
   int set_double_buy =0;
   int set_double_sell=0;
   int ticket, slippage;
   double loss, profit;
   for (int i=OrdersTotal()-1; i>=0; i--)
      {
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if (OrderSymbol()!=Symbol()) continue;
      if (OrderType()!=OP_BUY && OrderType()!=OP_SELL) continue;
      if (CurTime()-OrderOpenTime()<86400*OrderExpirationDays) continue;
         {
         if (OrderType()==OP_BUY )
            { if (OrderClose(OrderTicket(),OrderLots(),Bid,slippage)) set_double_buy =1; }
         if (OrderType()==OP_SELL)
            { if (OrderClose(OrderTicket(),OrderLots(),Ask,slippage)) set_double_sell=1; }
         }
      }
   if (set_double_buy>0)
      {
      slippage=2;
      loss=0; if (StopLoss>0) loss=Ask-StopLoss*Point;
      profit=0; if (TakeProfit>0) profit=Ask+TakeProfit*Point;
      ticket=OrderSend(Symbol(),OP_BUY,10*Lots,Ask,slippage,loss,profit,"",0,0);
      if (ticket>0) set_buy=0;
      else Print("Open a order failed with error #",GetLastError());
      }
   if (set_double_sell>0)
      {
      slippage=2;
      loss=0; if (StopLoss>0) loss=Bid+StopLoss*Point;
      profit=0; if (TakeProfit>0) profit=Bid-TakeProfit*Point;
      ticket=OrderSend(Symbol(),OP_SELL,10*Lots,Bid,slippage,loss,profit,"",0,0);
      if (ticket>0) set_sell=0;
      else Print("Open a order failed with error #",GetLastError());
      }
   }

int OpenBuy()
   {
   int slippage=2;
   double loss=0; if (StopLoss>0) loss=Ask-StopLoss*Point;
   double profit=0; if (TakeProfit>0) profit=Ask+TakeProfit*Point;
   int ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,slippage,loss,profit,"",0,0);
   if (ticket==0) Print("Open a order failed with error #",GetLastError());
   return (ticket);
   }

int OpenSell()
   {
   int slippage=2;
   double loss=0; if (StopLoss>0) loss=Bid+StopLoss*Point;
   double profit=0; if (TakeProfit>0) profit=Bid-TakeProfit*Point;
   int ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,slippage,loss,profit,"",0,0);
   if (ticket==0) Print("Open a order failed with error #",GetLastError());
   return (ticket);
   }

int TotalBuy()
   {
   int count=0;
   for (int i=0; i<OrdersTotal(); i++)
      {
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if (OrderSymbol()==Symbol() && OrderType()==OP_BUY) count++;
      }
   return (count);
   }

int TotalSell()
   {
   int count=0;
   for (int i=0; i<OrdersTotal(); i++)
      {
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if (OrderSymbol()==Symbol() && OrderType()==OP_SELL) count++;
      }
   return (count);
   }





Sample





Analysis



Market Information Used:



Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:
Checks for the total of open orders

It Closes Orders by itself
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.54 Total Net Profit:-125.93

BackTest : EURUSD on H1

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

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:112.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.16 Total Net Profit:-433.85

Request Backtest for Hedge Hog


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

Pair: Period: