GO_v1





//+------------------------------------------------------------------+
//|                                                           GO.mq4 |
//|                             Copyright © 2006, Victor Chebotariov |
//|                                      http://www.chebotariov.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, Victor Chebotariov"
#property link      "http://www.chebotariov.com/"

#define MAGICMA 30072006

int    PERIOD = 174;
int    MODE = 0;
extern double RISK = 30.0;
extern int    MAXORDERS = 5;

//+------------------------------------------------------------------+
//| Ðàñ÷åò îïòèìàëüíîãî îáúåìà ëîòà                                  |
//+------------------------------------------------------------------+
double LotsOptimized()
  {
//----
   double Lots=NormalizeDouble(AccountBalance()*RISK/100000.0,1);
   if(AccountFreeMargin()<(1000*Lots)){Lots=NormalizeDouble(AccountFreeMargin()*RISK/100000.0,1);}
   if(Lots>MarketInfo(Symbol(),MODE_MAXLOT)){Lots=MarketInfo(Symbol(),MODE_MAXLOT);}
   if(Lots<MarketInfo(Symbol(),MODE_MINLOT)){Lots=MarketInfo(Symbol(),MODE_MINLOT);}
//----
   return(Lots);
  }

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----

//+------------------------------------------------------------------+
//if(!IsDemo()){return(0);} //  óäàëèòü äëÿ ðàáîòû íà ðåàëüíîì ñ÷åòå   |
//+------------------------------------------------------------------+

   int cnt,ticket,MODEMA;
   int total=OrdersTotal();

   if(MODE==0){MODEMA=MODE_SMA;}
   if(MODE==1){MODEMA=MODE_EMA;}
   if(MODE==2){MODEMA=MODE_SMMA;}
   if(MODE==3){MODEMA=MODE_LWMA;}
   
   HideTestIndicators(true);
   double high =iMA(NULL,0,PERIOD,0,MODEMA,PRICE_HIGH,0);
   double low  =iMA(NULL,0,PERIOD,0,MODEMA,PRICE_LOW,0);
   double open =iMA(NULL,0,PERIOD,0,MODEMA,PRICE_OPEN,0);
   double close=iMA(NULL,0,PERIOD,0,MODEMA,PRICE_CLOSE,0);
   double GO=((close-open)+(high-open)+(low-open)+(close-low)+(close-high))*Volume[0];
   HideTestIndicators(false);

   if(GO<0)
     {
      for(cnt=total-1;cnt>=0;cnt--)
        {
         OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
         if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
         {OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);return(0);}
        }
     }

   if(GO>0)
     {
      for(cnt=total-1;cnt>=0;cnt--)
        {
         OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
         if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
         {OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);return(0);}
        }
     }

   if((GO>0 || GO<0) && (!GlobalVariableCheck("Symbol()"+"MAGICMA"+"TimeBuySell") || GlobalVariableGet("Symbol()"+"MAGICMA"+"TimeBuySell")!=Time[0] && total<MAXORDERS))
     {
      if(AccountFreeMargin()<(1000*LotsOptimized()))
      {Print("Ó Âàñ íåäîñòàòî÷íî äåíåã. Ñâîáîäíîé ìàðæè = ", AccountFreeMargin());return(0);}
      if(GO>0)
        {
         ticket=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"MoneyPlus",MAGICMA,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
            GlobalVariableSet("Symbol()"+"MAGICMA"+"TimeBuySell",Time[0]);
           }
         else Print("Error opening BUY order : ",GetLastError());return(0); 
        }
      if(GO<0)
        {
         ticket=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"MoneyPlus",MAGICMA,0,Red);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
            GlobalVariableSet("Symbol()"+"MAGICMA"+"TimeBuySell",Time[0]);
           }
         else Print("Error opening SELL order : ",GetLastError());return(0);
        }
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

Series array that contains tick volumes of each bar
Series array that contains open time 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 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.00 Total Net Profit:-10707.00

BackTest : EURUSD on H1

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

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:-9564.20

BackTest : USDCAD on H1

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

BackTest : USDCHF on H1

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

BackTest : USDJPY on H1

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

Request Backtest for GO_v1


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

Pair: Period: