MTF-HAS-ORIGINAL520





//+------------------------------------------------------------------+
//|                                             MTF-HAS-SCALPING.mq4 |
//|                                                 steinitz@cox.net |
//|                                                 steinitz@cox.net |
//+------------------------------------------------------------------+
#property copyright "steinitz@cox.net"
#property link      "steinitz@cox.net"
#define MagicID   822031

//extern variables
extern string EnterSet ="--------------------------";
extern bool Mtf1Change  =false;
extern bool Mtf2Accord  =true;
extern bool Mtf3Accord  =false;
extern bool Mtf4Accord  =false;
extern double Lots=1;
extern int TakeProfit=30;
extern int StopLoss=30;
extern string ExitSet ="--------------------------";
extern bool exitMtf1Change  =false;
extern bool exitMtf2Accord  =true;
extern bool exitMtf3Accord  =false;
extern bool exitMtf4Accord  =false;

extern int MaMetod  = 2;
extern int MaPeriod = 6;
extern int MaMetod2  = 3;
extern int MaPeriod2 = 2;
//Global variables
int signal=0;//0=no singal;1=long singal;-1=short singal
int cc1,cc2,cc3,cc4;
int c1,c2,c3,c4;
int pre_c1,pre_c2,pre_c3,pre_c4;
//       index   0          1         2        3          4          5         6        7          8          9         10            11
//int allTF[12]={PERIOD_M1,PERIOD_M5,PERIOD_M15,PERIOD_M30,PERIOD_H1,PERIOD_H4,PERIOD_D1,PERIOD_W1,PERIOD_MN1,PERIOD_MN1,PERIOD_MN1,PERIOD_MN1};
//int tf1,tf2,tf3,tf4;



int init()
  {
   
  //for(int i=0;i<=8;i++) //get tf1,tf2,tf3,tf4
  // {if(allTF[i]==Period())  
  //    {tf1=allTF[i];tf2=allTF[i+1];tf3=allTF[i+2];tf4=allTF[i+3];break;} 
 //  }
    
   return(0);
  }

int deinit()
  {

   return(0);
  }

int start()
{
   if((Year()==2007 && Month()>6)||(Year()>2007)   ) return;//**************************
   if(Volume[0]>1) return; else CalColor();
   //if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
   //else                                    CheckForClose();
   CheckForClose();
   CheckForOpen();

   return(0);
}
//+------------------------------------------------------------------+
double GetLots()//count the lots to open a new position
{
   return(Lots);
}

int CalculateCurrentOrders(string symbol)//count and return the open positions of the EA on the symbol
{
   int buys=0,sells=0;
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicID)
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
   if(buys>0) return(buys);else return(-sells);
}

int OriginalMethod()
{
   
   int sign=0;
   if (Mtf1Change==true) {sign=cc1;} 
   if (Mtf2Accord==true) {if((cc1!=0 || cc2!=0 ) && (c1==c2)) sign=c1 ;}
   if (Mtf3Accord==true) {if((cc1!=0 || cc2!=0 || cc3!=0) && (c1==c2)&& (c2==c3)) sign=c1 ;}
   if (Mtf4Accord==true) {if((cc1!=0 || cc2!=0 || cc3!=0 || cc4!=0) && (c1==c2)&& (c2==c3) && (c3==c4)) sign=c1 ; }
   
   
   return(sign);   
}

int isChangeColor(int TFnum)
{
   int  pre_c,current_c;
   switch (TFnum)
   {  case 1: pre_c=pre_c1; current_c=c1;break;
      case 2: pre_c=pre_c2; current_c=c2;break;
      case 3: pre_c=pre_c3; current_c=c3;break;
      case 4: pre_c=pre_c4; current_c=c4;break;
      }
   if (pre_c==0) return(0);
   if (current_c==1 && pre_c ==-1) return(1);
   else if (current_c==-1 && pre_c==1) return(-1);
   else return(0);
   
}

int getColor(int TFnum,int index)//return 1 is blue ;-1 is red
{
   int xx;
   switch (TFnum)
   {  case 1: xx=0; break;
      case 2: xx=2; break;
      case 3: xx=4; break;
      case 4: xx=6; break;
      }
   if ( iCustom(NULL,Period(),"N4 TF HAS Bar2",xx,index) == EMPTY_VALUE ) return(-1); else return(1);
}
 
int CalTPSL()
{ 
  /* if(TPMethodUseATR==true) 
      TakeProfit=MathRound( iATR(Symbol(),tf,TPAtrPeriod,1)* TPAtrPercentage/Point);
   else 
   {
      switch (tf)
      {
         //case PERIOD_MN1: TakeProfit=TakeProfitMN; break;  //2007.5.10
         case PERIOD_W1: TakeProfit=TakeProfitW1 ; break;
         case PERIOD_D1: TakeProfit=TakeProfitD1 ; break;
         case PERIOD_H4: TakeProfit=TakeProfitH4 ; break;
         case PERIOD_H1: TakeProfit=TakeProfitH1 ; break;
         case PERIOD_M30: TakeProfit=TakeProfitM30 ; break;
         case PERIOD_M15: TakeProfit=TakeProfitM15 ; break;
         case PERIOD_M5: TakeProfit=TakeProfitM5 ; break;
         //case PERIOD_M1: TakeProfit=TakeProfitM1  ; break; //2007.5.10
      }
   }
   */
   return(0);
}

void CheckForOpen()
{  
  int res; 
  double TPprice,STprice;
  
  //if(Volume[0]>1) return; 
  signal=OriginalMethod();
  
  CalTPSL();

  if (signal==1) 
   {if(TakeProfit!=0) TPprice=Ask+TakeProfit*Point; else TPprice=0;
    if(StopLoss!=0) STprice=Ask-StopLoss*Point;else STprice=0;
    } 
  else if (signal==-1) 
   {if(TakeProfit!=0) TPprice=Bid-TakeProfit*Point; else TPprice=0;
    if(StopLoss!=0) STprice=Bid+StopLoss*Point; else STprice=0;
    }

  if (signal==1) 
      {res=OrderSend(Symbol(),OP_BUY,GetLots(),Ask,3,STprice,TPprice,"1",MagicID,0,Blue);} 
  else if (signal==-1) 
      {res=OrderSend(Symbol(),OP_SELL,GetLots(),Bid,3,STprice,TPprice,"-1",MagicID,0,Red);}
      
  if(res<0) {Print("OrderSend failed with error #",GetLastError());}
  return;
}


void CheckForClose()
{  
   //if(Volume[0]>1) return;
   for(int i=0;i<OrdersTotal();i++)
   {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
      if(OrderMagicNumber()!=MagicID || OrderSymbol()!=Symbol()) continue;/////////////////////////
     /* if(BreakEvenOn==true)
      {
         if(OrderType()==OP_BUY  && (Bid-OrderOpenPrice()>Point*BreakEvenTrigger) &&(OrderStopLoss()<OrderOpenPrice()) ) 
            {OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Blue);}
         if(OrderType()==OP_SELL && (OrderOpenPrice()-Ask >Point*BreakEvenTrigger)&&(OrderStopLoss()>OrderOpenPrice()) )  
            {OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Red);}   
       }
      
      if(TrailingStopOn==true)
      {
         if(OrderType()==OP_BUY  && (Bid-OrderOpenPrice()>Point*TrailingStopTrigger) &&(OrderStopLoss()<Bid-Point*TrailingStop) ) 
            {OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Blue);}
         if(OrderType()==OP_SELL && (OrderOpenPrice()-Ask >Point*TrailingStopTrigger)&&(OrderStopLoss()>Ask+Point*TrailingStop) )  
            {OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);}   
       } */  
      if(OrderType()==OP_BUY && ExitMethod()== -1 )  OrderClose(OrderTicket(),OrderLots(),Bid,3,Black);
      if(OrderType()==OP_SELL&& ExitMethod()== 1)  OrderClose(OrderTicket(),OrderLots(),Ask,3,Black);
  }
   return;
}

int ExitMethod()
{

   int sign=0;
   if (exitMtf1Change==true) {sign=cc1;} 
   if (exitMtf2Accord==true) {if((cc1!=0 || cc2!=0 ) && (c1==c2)) sign=c1 ;}
   if (exitMtf3Accord==true) {if((cc1!=0 || cc2!=0 || cc3!=0) && (c1==c2)&& (c2==c3)) sign=c1 ;}
   if (exitMtf4Accord==true) {if((cc1!=0 || cc2!=0 || cc3!=0 || cc4!=0) && (c1==c2)&& (c2==c3) && (c3==c4)) sign=c1 ; }

   return(sign);   
}

void CalColor()
{
   c1=getColor(1,1); c2=getColor(2,1);//get current color
   c3=getColor(3,1); c4=getColor(4,1);
   
   cc1=isChangeColor(1);   cc2=isChangeColor(2);//get whether color changed
   cc3=isChangeColor(3);   cc4=isChangeColor(4);
   
   pre_c1=c1;      pre_c2=c2;
   pre_c3=c3;      pre_c4=c4;
}



Sample





Analysis



Market Information Used:

Series array that contains tick volumes of each bar


Indicator Curves created:


Indicators Used:


Indicator of the average true range


Custom Indicators Used:
N4 TF HAS Bar2

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

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: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: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 MTF-HAS-ORIGINAL520


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

Pair: Period: