HBS system





//+------------------------------------------------------------------+
//|                                                   HBS system.mq4 |
//|                                                        fortrader |
//|                                                 www.fortrader.ru |
//+------------------------------------------------------------------+
#property copyright "fortrader"
#property link      "www.fortrader.ru"

//---- input parameters
extern int       per_MA = 200;
extern int       StopLoss_Buy = 50;
extern int       TrailingStop_Buy = 10;
extern int       StopLoss_Sell = 50;
extern int       TrailingStop_Sell = 10;
extern double    Lots = 0.1;
double    pc_B = 0, pc_S = 0, pc_open = 0;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  
  if (Volume[0] > 1) return(0);

//Ôóíêöèÿ âîçâðàùàåò ÷èñëîâîå çíà÷åíèå, ïðåäñòàâëÿþùóþ íàèìåíüøåå öåëîå ÷èñëî, êîòîðîå áîëüøå èëè ðàâíî x.  
//  Print(" òåêóùàÿ öåíà ",(iClose(NULL,0,1)));
  pc_B = (MathCeil((iClose(NULL,0,1)*100))/100);
//  Print("íàèìåíüøåå öåëîå ÷èñëî, êîòîðîå áîëüøå òåêóùåé öåíû åñòü ",pc_B);
//Ôóíêöèÿ âîçâðàùàåò ÷èñëîâîå çíà÷åíèå, ïðåäñòàâëÿþùåå íàèáîëüøåå öåëîå ÷èñëî, êîòîðîå ìåíüøå èëè ðàâíî x. 
  pc_S = (MathFloor((iClose(NULL,0,1)*100))/100);
//  Print("íàèáîëüøåå öåëîå ÷èñëî, êîòîðîå ìåíüøå òåêóùåé öåíû åñòü ",pc_S);
 

//----
// Îáúÿâëÿåì ïåðåìåííûå tmp_pc
int total=0, cnt=0;
double MA;
int err;

// Âû÷èñëÿåì íà÷àëüíûå ïàðàìåòðû èíäèêàòîðîâ äëÿ ïîèñêà óñëîâèé âõîäà

  MA = iMA(NULL,0,per_MA,0,MODE_EMA,PRICE_MEDIAN,1);

  total=OrdersTotal();
 if(total<1)
  {
  // Ïðîâåðêà ñðåäñòâ
  if(AccountFreeMargin()<(1000*Lots))
     {
       Print("We have no money. Free Margin = ", AccountFreeMargin());   
       return(0);  
     }
  
  // Ïðîâåðêà óñëîâèé äëÿ ñîâåðøåíèÿ ñäåëêè
  if(iOpen(NULL,0,1)>MA && iClose(NULL,0,1)>MA && pc_open<pc_B)// 
     { 
       OrderSend(Symbol(),OP_BUYSTOP,Lots,(pc_B-Point*15),3,pc_B-(15+StopLoss_Buy)*Point,pc_B,"Ïîêóïàåì",16384,10,Green);
       OrderSend(Symbol(),OP_BUYSTOP,Lots,(pc_B-Point*15),3,pc_B-(15+StopLoss_Buy)*Point,pc_B+15*Point,"Ïîêóïàåì",16385,10,Green);
       pc_open = pc_B;
     }

  if(iOpen(NULL,0,1)<MA && iClose(NULL,0,1)<MA && pc_open>pc_B) 
     { 
       OrderSend(Symbol(),OP_SELLSTOP,Lots,(pc_S+Point*15),3,pc_S+(15+StopLoss_Sell)*Point,pc_S,"Ïðîäàåì",16386,10,Red);
       OrderSend(Symbol(),OP_SELLSTOP,Lots,(pc_S+Point*15),3,pc_S+(15+StopLoss_Sell)*Point,pc_S-15*Point,"Ïðîäàåì",16387,10,Red);
       pc_open = pc_S;
     }
  }
  for(cnt=total-1;cnt>=0;cnt--)
     {
       OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
       if(OrderType()==OP_BUYSTOP && OrderOpenPrice()!=(pc_B-Point*15))
         {
           OrderDelete(OrderTicket()); 
         }
       if(OrderType()==OP_SELLSTOP && OrderOpenPrice()!=(pc_S+Point*15))
         {
           OrderDelete(OrderTicket()); 
         }
       if(OrderType()==OP_BUY)
         {
           if(TrailingStop_Buy>0)  
             {                 
               if(Bid-OrderOpenPrice()>Point*TrailingStop_Buy) //
                 {
                   if(OrderStopLoss()<Bid-Point*TrailingStop_Buy)
                     {
                       OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop_Buy,OrderTakeProfit(),0,Green);
                       return(0);
                     }
                 }
             }
         }
       if(OrderType()==OP_SELL)
         {
           if(TrailingStop_Sell>0)  
             {                 
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop_Sell))  // 
                 {
                   if((OrderStopLoss()>(Ask+Point*TrailingStop_Sell)) || (OrderStopLoss()==0))
                     {
                       OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop_Sell,OrderTakeProfit(),0,Red);
                       return(0);
                     }
                 }
             }
         }
  
     }

   
//----   return(0);
  }
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

Series array that contains tick volumes of each bar
Series array that contains close prices for each bar
Series array that contains open prices of each bar


Indicator Curves created:


Indicators Used:

Moving average indicator


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:


BackTest : EURUSD on H1

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

BackTest : EURUSD on H1

From 2009-12-01 to 2010-01-17 Profit Factor:1.50 Total Net Profit:5.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.20 Total Net Profit:-12.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 HBS system


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

Pair: Period: