FOREX CASH COW - MM - MN





//+------------------------------------------------------------------+
//|                                               FOREX CASH COW.mq4 |
//|                   Copyright © 2007, GwadaTradeBoy Software Corp. |
//|                                           GwadaTradeBoy@yahoo.fr |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, GwadaTradeBoy Software Corp."
#property link      "GwadaTradeBoy@yahoo.fr"

//---- Conditions
extern int     Delta       = 140;
extern int     Rule2Dist   = 70;
extern int     Rule3Dist   = 30;
extern int     SL          = 60;
extern int     TP          = 100;

//---- Variables
int            PrevBarHiLo, LastDayTrade,ecnt, total;
int            JT_SL,                                 // Jumlah Trades Sell Limit
               JT_BL,                                 // Jumlah Trades Buy Limit
               JT_SS,                                 // Jumlah Trades Sell Stop
               JT_BS,                                 // Jumlah Trades Buy Stop
               JT_OS,                                 // Jumlah Trades Open Sell
               JT_OB;                                 // Jumlah Trades Open Buy
double         PriceRule2, PriceRule3;

//---- Money Management
extern bool    MoneyManagement   = true;
extern double  Lots              = 0.1;
extern double  MaximumRisk       = 0.02;
extern double  DecreaseFactor    = 3;
extern bool    AcountIsMini      = false;
double   lot;
int      orders, losses, spread;

//----- Identification
extern int     MagicEA           = 080307;
extern string  NameEA            = "Forex Cash Cow";

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
   {
//---- Expert Advisor
      spread = MarketInfo(Symbol(),MODE_SPREAD);
//----
      return(0);
   }

//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
   {
//----
      
//----
      return(0);
   }

//+------------------------------------------------------------------+
//| Calculs preliminaires de l'expert                                |
//+------------------------------------------------------------------+
//********** Calcul de la taille optimale du lot **********//
double LotsOptimized()
   {
      if (AcountIsMini)
         Lots = 0.01;
      lot=Lots;
      orders=HistoryTotal();     // Historique des ordres
      losses=0;                  // Nombre de trade perdants consécutif
/* Selection de la taille du lot */
      lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000,1);
/* Calcul du nombre de perte consecutive */
      if(DecreaseFactor>0)
         {
            for(int i=orders-1;i>=0;i--)
               {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==False) 
                     { 
                        Print("Erreur dans l historique!"); 
                        break; 
                     }
                  if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) 
                     continue;
//----
                  if(OrderProfit()>0) 
                     break;
                  if(OrderProfit()<0) 
                     losses++;
               }
            if(losses>1) 
               lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
         }
/* Retour de la taille du lot */
      if (AcountIsMini)
         if(lot<0.01) 
            lot=0.01;
      if(lot<0.1) 
         lot=0.1;
//----
      return(lot);
   }

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
   {
//----
      PrevBarHiLo = (High[1]-Low[1])/Point;
//---- Req.#1 - Price Explosion
      if (PrevBarHiLo >= Delta)
         {
//---- SELL Direction            
            if (Open[1]>Close[1])
               {
                  PriceRule3 = (Low[1]-(Rule3Dist*Point));
                  Print (PriceRule3);
//---- Req.#2 - 70 pips move in the direction of the price explosion
                  if ((High[0]-Bid)/Point>=Rule2Dist)
                     {
//---- Req.#3 - 30 pips between Low[1] et PriceRule2
                        //if (PriceRule2 <= PriceRule3)
                        //if ((Low[1]-Bid)/Point>=Rule3Dist)
                           //{
                              if (OrdersTotal()<=0 && TimeDayOfYear(CurTime())!=LastDayTrade)
                                 {
                                    LastDayTrade=TimeDayOfYear(CurTime());
                                    //OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,0,Bid+(SL*Point),Bid-(TP*Point),"Sell",0,0,Red);
                                    OrderSend(Symbol(),OP_SELLLIMIT,LotsOptimized(),PriceRule3,0,Bid+(SL*Point),Bid-(TP*Point),NameEA+"Sell",MagicEA,0,Red);
                                 }
                           //}
                     }
               }
//---- BUY Direction      
            if (Open[1]<Close[1])
               {
                  PriceRule3 = (High[1]+(Rule3Dist*Point));
                  Print (PriceRule3);
//---- Req.#2 - 70 pips move in the direction of the price explosion
                  if ((Ask-Low[0])/Point>=Rule2Dist)
                     {
//---- Req.#3 - 30 pips between High[1] et PriceRule2
                        //if ((Ask-High[1])/Point>=Rule3Dist) 
                           //{
                              if (OrdersTotal()<=0 && TimeDayOfYear(CurTime())!=LastDayTrade)
                                 {
                                    LastDayTrade=TimeDayOfYear(CurTime());
                                    //OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,0,Ask-(SL*Point),Ask+(TP*Point),"Buy",0,0,Blue);
                                    OrderSend(Symbol(),OP_BUYLIMIT,LotsOptimized(),PriceRule3,0,Ask-(SL*Point),Ask+(TP*Point),NameEA+"Buy",MagicEA,0,Blue);
                                 }
                           //}
                     }
               }
         }
      CheckAllTrade();
      if (JT_OS>0 || JT_OB>0)
         {
            SetSLtoBEP();
            if (TimeHour(CurTime())==23 && TimeMinute(CurTime())==30)
               {
                  TutupOpenPosisi();
               }
         }
//----
      return(0);
   }
//+------------------------------------------------------------------+

void CheckAllTrade()
   {
      JT_SL=0;
      JT_BL=0;
      JT_SS=0;
      JT_BS=0;
      JT_OS=0;
      JT_OB=0;
      total=OrdersTotal();
      for (ecnt=0;ecnt<total;ecnt++)
         {
            OrderSelect(ecnt,SELECT_BY_POS, MODE_TRADES);
            if (
            OrderType()==OP_SELLLIMIT 
            && OrderSymbol()==Symbol()
            && OrderMagicNumber() == MagicEA
            )
               JT_SL++;
            else 
               if (
               OrderType()==OP_BUYLIMIT 
               && OrderSymbol()==Symbol()
               && OrderMagicNumber() == MagicEA
               )
                  JT_BL++;         
               else 
                  if (
                  OrderType()==OP_SELLSTOP 
                  && OrderSymbol()==Symbol()
                  && OrderMagicNumber() == MagicEA
                  )
                     JT_SS++;
                  else 
                     if (
                     OrderType()==OP_BUYSTOP 
                     && OrderSymbol()==Symbol()
                     && OrderMagicNumber() == MagicEA
                     )
                        JT_BS++;         
                     else 
                        if (
                        OrderType()==OP_SELL 
                        && OrderSymbol()==Symbol()
                        && OrderMagicNumber() == MagicEA
                        )
                           JT_OS++;
                        else 
                           if (
                           OrderType()==OP_BUY 
                           && OrderSymbol()==Symbol()
                           && OrderMagicNumber() == MagicEA
                           )
                              JT_OB++;         
         }
   }

void SetSLtoBEP()
   {
      total=OrdersTotal();
      for (ecnt=0;ecnt<total;ecnt++)
         {
            OrderSelect(ecnt,SELECT_BY_POS, MODE_TRADES);
            if (
            OrderMagicNumber() == MagicEA
            && OrderProfit()/10>=30
            )
               {
                  OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Brown);
               }
         }
   }
   
void TutupOpenPosisi()
   {
      total=OrdersTotal();
      for (ecnt=0;ecnt<total;ecnt++)
         {
            OrderSelect(ecnt,SELECT_BY_POS, MODE_TRADES);
            if (OrderMagicNumber() == MagicEA)
               {
                  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,Indigo);
               }
         }
   }






Sample





Analysis



Market Information Used:

Series array that contains the highest prices of each bar
Series array that contains the lowest prices 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:



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
It Closes Orders by itself

Other Features:


BackTest : USDJPY on H1

From 2009-11-01 to 2009-11-30 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 : EURUSD on H1

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

BackTest : USDCAD on H1

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

BackTest : EURUSD on H1

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

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-02-27 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

Request Backtest for FOREX CASH COW - MM - MN


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

Pair: Period: