Vector





//+------------------------------------------------------------------+
//|                                                    Âåêòîðíûé.mq4 |
//|                               Copyright ©BFE 2006 Software Corp. |
//|                                                BFE2006@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright ©BFE 2006 Software Corp."
#property link      "BFE2006@yandex.ru"

extern int     MAGIC=0;
extern double LotsPercent=1;       //ïðîöåíò äëÿ ðàññ÷åòà ëîòà
extern double PrcProfit=0.5;      //ïðîöåíò äëÿ ðàññ÷åòà ïðîôèòà
extern double PrcLose=30;          //ïðöåíò ôèêñàöèè óáûòêîâ
extern double PeriodMA=PERIOD_M15;  //ïåðèîä ÌÀ
double        Lot;
double        Free,Balans,MaxL,MinL;
double        SB_openEU,SB_stopEU,SB_openGU,SB_stopGU,SB_openUC,SB_stopUC,SB_openUJ,SB_stopUJ;
double        L,H,sr,Pips_Profit,PR,ST;
double        ML,PNT,x,NP,Price,l;
double        m1,m2,m3,m4,m5,m6,m7,m8,m9;
string        SMB,EU,GU,UC,UJ,OBCH_TREND;
bool          fm;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
 //------------ Ïðîâåðÿåì âêë. ñîâåòíèêà 
  if(!IsExpertEnabled())//åñëè ëîæü 
   {Alert("Îøèáêà! Íå íàæàòà êíîïêà *Ñîâåòíèêè*");}
   else 
   {Comment("Êàê òîëüêî öåíà èçìåíèòñÿ, Ñîâåòíèê íà÷í¸ò ðàáîòó.");}  
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//---------- Çàïîìèíàåì îñíîâíûå ïàðàìåòðû
SMB=Symbol();                           //Ñèìâîë âàëþòíîé ïàðû  
Balans=AccountBalance();                //Áàëàíñ
Free=AccountEquity();                   //Ñâîáîäíûå ñðåäñòâà
MaxL=MarketInfo(SMB,MODE_MAXLOT)/10;    //Ìàêñèìàëüíûé äîïóñòèìûé ðàçìåð ëîòà c ó÷åòîì óâåëå÷åíèÿ
MinL=MarketInfo(SMB,MODE_MINLOT);       //Ìèíèìàëüíûé âîçìîæíûé ëîò
//==========   
//---------- Ñ÷èòàåì îòêðûòûå è îòëîæåííûå îðäåðà
for(int i=OrdersTotal(); i>=0; i--)
  {
  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
    {
    if(OrderSymbol()=="EURUSD")
      {
      if(OrderType()==OP_BUY     || OrderType()==OP_SELL)    {SB_openEU++;}
      }
    if(OrderSymbol()=="GBPUSD")
      {
      if(OrderType()==OP_BUY     || OrderType()==OP_SELL)    {SB_openGU++;}
      }
    if(OrderSymbol()=="USDCHF")
      {
      if(OrderType()==OP_BUY     || OrderType()==OP_SELL)    {SB_openUC++;}
      }
    if(OrderSymbol()=="USDJPY")
      {
      if(OrderType()==OP_BUY     || OrderType()==OP_SELL)    {SB_openUJ++;}
      }
    }
  }
 
//========== 
//---------- Ðàññ÷èòûâàåì äîïîëíèòåëüíûå ïàðàìåòðû
m4=iMA("EURUSD",PeriodMA,3,8,MODE_SMMA,PRICE_MEDIAN,0);
m5=iMA("GBPUSD",PeriodMA,3,8,MODE_SMMA,PRICE_MEDIAN,0);
m6=iMA("USDCHF",PeriodMA,3,8,MODE_SMMA,PRICE_MEDIAN,0);
m1=iMA("USDJPY",PeriodMA,3,8,MODE_SMMA,PRICE_MEDIAN,0);

m7=iMA("EURUSD",PeriodMA,7,8,MODE_SMMA,PRICE_MEDIAN,0);
m8=iMA("GBPUSD",PeriodMA,7,8,MODE_SMMA,PRICE_MEDIAN,0);
m9=iMA("USDCHF",PeriodMA,7,8,MODE_SMMA,PRICE_MEDIAN,0);
m2=iMA("USDJPY",PeriodMA,7,8,MODE_SMMA,PRICE_MEDIAN,0);

if(m4-m7>0){EU="BUY";}if(m4-m7<0){EU="SELL";}
if(m5-m8>0){GU="BUY";}if(m5-m8<0){GU="SELL";}
if(m6-m9>0){UC="BUY";}if(m6-m9<0){UC="SELL";}
if(m1-m2>0){UJ="BUY";}if(m6-m9<0){UJ="SELL";}
if((m4+m5+m6+m1)-(m7+m8+m9+m2)>0){OBCH_TREND="BUY";}
if((m4+m5+m6+m1)-(m7+m8+m9+m2)<0){OBCH_TREND="SELL";}
for(int s=1;s<=50;s++)
  {
  L=L+iLow(SMB,PERIOD_H4,1);  //ñóììà ìèíèìàëüíûõ öåí áàðîâ
  H=H+iHigh(SMB,PERIOD_H4,1); //ñóììà ìàêñèìàëüíûõ öåí áàðîâ
  }
//--- Ðàññ÷åò ñðåäíåãî ðàçáðîñà öåí ñ ó÷åòîì âàëþòíûõ ïàð   
if(SMB=="EURUSD" || SMB=="GBPUSD" || SMB=="USDCHF" || SMB=="AUDUSD"
|| SMB=="USDCAD" || SMB=="EURCHF" || SMB=="NZDUSD")                 {sr=((H-L)/s)*10000;}
if(SMB=="USDJPY" || SMB=="EURJPY")                                  {sr=((H-L)/s)*100;}
sr=(NormalizeDouble((sr),0));
Pips_Profit=sr/5;  Pips_Profit=(NormalizeDouble((Pips_Profit),0));
if(Pips_Profit>13)  {Pips_Profit=13;}                 //ðàçìåð ïèïñîâêè

//==========
//---------- Ïðèíèìàåì ðåøåíèå â çàâèñèìîñòè îò êîëëè÷åñòâà îðäåðîâ
if(SB_openEU==0){Open_Oder1();}  
if(SB_openGU==0){Open_Oder2();}
if(SB_openUC==0){Open_Oder3();}
if(SB_openUJ==0){Open_Oder4();}

if(SB_openEU==1){Pips();}
if(SB_openGU==1){Pips();}
if(SB_openUC==1){Pips();}
if(SB_openUJ==1){Pips();}

Comment("Êîë-âî îðäåðîâ: ",SB_openEU+SB_openGU+SB_openUC+SB_openUJ,
"\n","Ïèïñîâêà: ",Pips_Profit,"\n",
"EURUSD: ",EU,"\n","GBPUSD: ",GU,"\n","USDCHF: ",UC,"\n","USDJPY: ",UJ,"\n",
"Îáùèé òðåíä äëÿ USD: ",OBCH_TREND,"\n","Ãëîáàëüíûé ïðîôèò: ",PR,"\n",
"Ãëîáàëüíûé ñòîï: ",ST);

SB_openEU=0;SB_stopEU=0;SB_openGU=0;SB_stopGU=0;SB_openUC=0;SB_stopUC=0;SB_openUJ=0;SB_stopUJ=0;
sr=0; H=0;L=0;
return(0);
}

//---------- Îòêðûâàåì ïåðâûé îðäåð
void Open_Oder1()
{
//--- Ðàñ÷èòûâàåì ëîò
Lot = (AccountFreeMargin() / 10000*LotsPercent/4) / 10;
Lot=(NormalizeDouble((Lot),2));
   if(Lot<MinL){Lot=MinL;} 
   if(Lot>MaxL){Lot=MaxL;}

  if((m4+m5+m6+m1)-(m7+m8+m9+m2)>0)                                                             //BUY
  {
  if(m4>m7 && SB_openEU==0){fm=OrderSend("EURUSD",OP_BUY,Lot,Ask,3,0,0,NULL,MAGIC,0,MediumBlue);}
  }
  if((m4+m5+m6+m1)-(m7+m8+m9+m2)<0)                                                             //SELL
  {
  if(m4<m7 && SB_openEU==0){fm=OrderSend("EURUSD",OP_SELL,Lot,Bid,3,0,0,NULL,MAGIC,0,Gold);}
  }
}
//========== 
void Open_Oder2()
{
//--- Ðàñ÷èòûâàåì ëîò
Lot = (AccountFreeMargin() / 10000*LotsPercent/4) / 10;
Lot=(NormalizeDouble((Lot),2));
   if(Lot<MinL){Lot=MinL;} 
   if(Lot>MaxL){Lot=MaxL;}
   
    if((m4+m5+m6+m1)-(m7+m8+m9+m2)>0)
    {   
    if(m5>m8 && SB_openGU==0){fm=OrderSend("GBPUSD",OP_BUY,Lot,Ask,3,0,0,NULL,MAGIC,0,MediumBlue);}
    }
    if((m4+m5+m6+m1)-(m7+m8+m9+m2)<0)                                                             //SELL
    {
    if(m5<m8 && SB_openGU==0){fm=OrderSend("GBPUSD",OP_SELL,Lot,Bid,3,0,0,NULL,MAGIC,0,Gold);}
    }
}
//========== 
void Open_Oder3()
{
//--- Ðàñ÷èòûâàåì ëîò
Lot = (AccountFreeMargin() / 10000*LotsPercent/4) / 10;
Lot=(NormalizeDouble((Lot),2));
   if(Lot<MinL){Lot=MinL;} 
   if(Lot>MaxL){Lot=MaxL;}
   
    if((m4+m5+m6+m1)-(m7+m8+m9+m2)>0)
    {
    if(m6>m9 && SB_openUC==0){fm=OrderSend("USDCHF",OP_BUY,Lot,Ask,3,0,0,NULL,MAGIC,0,MediumBlue);} 
    }  
    if((m4+m5+m6+m1)-(m7+m8+m9+m2)<0)                                                             //SELL
    {
    if(m6<m9 && SB_openUC==0){fm=OrderSend("USDCHF",OP_SELL,Lot,Bid,3,0,0,NULL,MAGIC,0,Gold);}
    }
}
//==========
void Open_Oder4()
{
//--- Ðàñ÷èòûâàåì ëîò
Lot = (AccountFreeMargin() / 10000*LotsPercent/4) / 10;
Lot=(NormalizeDouble((Lot),2));
   if(Lot<MinL){Lot=MinL;} 
   if(Lot>MaxL){Lot=MaxL;}
   
    if((m4+m5+m6+m1)-(m7+m8+m9+m2)>0)
    {
    if(m1>m2 && SB_openUJ==0){fm=OrderSend("USDJPY",OP_BUY,Lot,Ask,3,0,0,NULL,MAGIC,0,MediumBlue);} 
    }  
    if((m4+m5+m6+m1)-(m7+m8+m9+m2)<0)                                                             //SELL
    {
    if(m1<m2 && SB_openUJ==0){fm=OrderSend("USDJPY",OP_SELL,Lot,Bid,3,0,0,NULL,MAGIC,0,Gold);}
    }
}
//---------- Åñëè îäèí ðûíî÷íûé îðäåð - ïèïñóåì
void Pips()
{
for(int e=OrdersTotal();e>=0;e--)
  {
  if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true)
    {
    if(OrderSymbol()=="EURUSD")
      {
      if(OrderType()==OP_BUY && (OrderOpenPrice()+Pips_Profit*Point)<Bid)
      {OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);}
      if(OrderType()==OP_SELL && (OrderOpenPrice()-Pips_Profit*Point)>Ask)
      {OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);}
      }
    if(OrderSymbol()=="GBPUSD")
      {
      if(OrderType()==OP_BUY && (OrderOpenPrice()+Pips_Profit*Point)<Bid)
      {OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);}
      if(OrderType()==OP_SELL && (OrderOpenPrice()-Pips_Profit*Point)>Ask)
      {OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);}
      }
    if(OrderSymbol()=="USDCHF")
      {
      if(OrderType()==OP_BUY && (OrderOpenPrice()+Pips_Profit*Point)<Bid)
      {OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);}
      if(OrderType()==OP_SELL && (OrderOpenPrice()-Pips_Profit*Point)>Ask)
      {OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);}
      }
    if(OrderSymbol()=="USDJPY")
      {
      if(OrderType()==OP_BUY && (OrderOpenPrice()+Pips_Profit*Point)<Bid)
      {OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);}
      if(OrderType()==OP_SELL && (OrderOpenPrice()-Pips_Profit*Point)>Ask)
      {OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);}
      }
    }
  }
  {//--- êîíòðîëü ïðèáûëè
  PR=AccountBalance()+(Balans/100*PrcProfit);
  PR=(NormalizeDouble((PR),2));
  if ((Free-Balans)>=(Balans/100*PrcProfit))
    {
    for (int b=OrdersTotal();b>=0; b--)
      {
      if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)==true)
        {
        if(OrderType()==OP_BUY) {OrderClose(OrderTicket(),OrderLots(),Bid,3);}
        if(OrderType()==OP_SELL){OrderClose(OrderTicket(),OrderLots(),Ask,3);}
        }
      }
    }//--- êîíòðîëü óáûòêîâ 
  ST=AccountBalance()-(Balans/100*PrcLose);
  ST=(NormalizeDouble((ST),2));
  if((Free-Balans)<=(-(Balans/100*PrcLose)))
    {
    for (int bd=OrdersTotal();bd>=0; bd--)
      {
      if (OrderSelect(bd,SELECT_BY_POS,MODE_TRADES)==true)
        {
        if(OrderType()==OP_BUY) {OrderClose(OrderTicket(),OrderLots(),Bid,3);}
        if(OrderType()==OP_SELL){OrderClose(OrderTicket(),OrderLots(),Ask,3);}
        }
      }
    }     
 } 
//==========
}

//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

Series array that contains the lowest prices of each bar
Series array that contains the highest 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 Closes Orders by itself

Other Features:

It issuies visual alerts to the screen

BackTest : EURUSD on H1

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

BackTest : EURUSD on H1

From 2009-12-01 to 2010-01-17 Profit Factor:4.24 Total Net Profit:289.09

BackTest : EURUSD on H1

From 2010-03-01 to 2010-03-27 Profit Factor:1.47 Total Net Profit:56.19

BackTest : EURUSD on H1

From 2010-04-01 to 2010-04-30 Profit Factor:0.40 Total Net Profit:-80.77

BackTest : EURUSD on H1

From 2010-05-01 to 2010-05-31 Profit Factor:0.01 Total Net Profit:-312.77

BackTest : EURUSD on H1

From 2010-06-01 to 2010-06-30 Profit Factor:262.79 Total Net Profit:753.94

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-02-27 Profit Factor:0.72 Total Net Profit:-102.59

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-04-16 Profit Factor:0.20 Total Net Profit:-146.63

BackTest : USDCAD on H1

From 2009-01-01 to 2010-01-01 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 : USDJPY on H1

From 2009-11-01 to 2009-11-30 Profit Factor:0.54 Total Net Profit:-8.98

Request Backtest for Vector


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

Pair: Period: