ytg_2MA_4Level





//+------------------------------------------------------------------+
//|                                               ytg_2MA_4Level.mq4 |
//|                                                     Yuriy Tokman |
//|                                            yuriytokman@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Yuriy Tokman"
#property link      "yuriytokman@gmail.com"

/*
2 SMA ïåðâàÿ ñ ïàðàìåòðàìè 14 âòîðàÿ ñ 180
òàêæå åñòü ïàðàëëåëüíûå ëèíèè:
SMA 180 + 250 ïóíêòîâ ïî Y
SMA 180 + 500 ïóíêòîâ ïî Y
SMA 180 - 250 ïóíêòîâ ïî Y
SMA 180 - 500 ïóíêòîâ ïî Y
Ðàáîòàåò âîò òàê: ïðè ïåðåñå÷åíèå MA14 ëþáóþ ëèíèþ ïðîèñõîäèò ëèáî ïîêóïêà, ëèáî ïðîäàæà*/

extern string _____1_____ = "Òîðãîâûå íàñòðîéêè ";
extern int òåéê_ïðîôèò =   130; 
extern int ñòîï_ëîññ =    1000;
extern int ëîòû = 1;
extern string _____2_____ = "Íàñòðîéêè èíäèêàòîðîâ ";
extern int ðàñ÷¸òíûé_áàð          = 1;
extern int ïåðèîä_áûñòðîé_ÌÀ      = 14;
extern int ìåòîä_áûñòðîé_ÌÀ       = 2;//0-3
extern int öåíîâ_êîíñò_áûñòðîé_ÌÀ = 4;//0-6
extern int ïåðèîä_ìåäëí_ÌÀ        =180;
extern int ìåòîä_ìåäëí_ÌÀ         =2;//0-3
extern int öåíîâ_êîíñò_ìåäëí_ÌÀ   =4;//0-6
extern string _____3_____ = "Íàñòðîéêè óðîâíåé ";
extern int âåðõíèé_1      = 500;
extern int âåðõíèé_2      = 250;
extern int íèæíèé_1       = 500;
extern int íèæíèé_2       = 250;

#include <stdlib.mqh>        // Ñòàíäàðòíàÿ áèáëèîòåêà ÌÒ4

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   if(!IsDemo()) 
   {
    Comment("Âåðñèÿ òîëüêî äëÿ òåñòîâ");
    return(0);
   }
   else Comment("Òåñòîâàÿ âåðñèÿ");

   if(!ExistPositions()) 
     {
     
      if( GetSignal()==1)OpenPosition("",OP_BUY,ëîòû,Bid-ñòîï_ëîññ*Point,Ask+òåéê_ïðîôèò*Point);

      if( GetSignal()==-1)OpenPosition("",OP_SELL,ëîòû,Ask+ñòîï_ëîññ*Point,Bid-òåéê_ïðîôèò*Point);
      
     }   
//----
   return(0);
  }
//+------------------------------------------------------------------+

 int GetSignal()
   {
    double MA_1_0=iMA(Symbol(),0,ïåðèîä_áûñòðîé_ÌÀ,0,ìåòîä_áûñòðîé_ÌÀ,öåíîâ_êîíñò_áûñòðîé_ÌÀ,ðàñ÷¸òíûé_áàð);
    double MA_1_1=iMA(Symbol(),0,ïåðèîä_áûñòðîé_ÌÀ,0,ìåòîä_áûñòðîé_ÌÀ,öåíîâ_êîíñò_áûñòðîé_ÌÀ,ðàñ÷¸òíûé_áàð+1);
    double MA_2_0=iMA(Symbol(),0,ïåðèîä_ìåäëí_ÌÀ,0,ìåòîä_ìåäëí_ÌÀ,öåíîâ_êîíñò_ìåäëí_ÌÀ,ðàñ÷¸òíûé_áàð);
    double MA_2_1=iMA(Symbol(),0,ïåðèîä_ìåäëí_ÌÀ,0,ìåòîä_ìåäëí_ÌÀ,öåíîâ_êîíñò_ìåäëí_ÌÀ,ðàñ÷¸òíûé_áàð+1);
   
    
    int vSignal = 0;
    if(MA_1_1<=MA_2_1&&MA_1_0>MA_2_0)vSignal = 1;//up
    else
    if(MA_1_1<=MA_2_1+âåðõíèé_1*Point&&MA_1_0>MA_2_0+âåðõíèé_1*Point)vSignal = 1;//up
    else
    if(MA_1_1<=MA_2_1+âåðõíèé_2*Point&&MA_1_0>MA_2_0+âåðõíèé_2*Point)vSignal = 1;//up    
    else
    if(MA_1_1<=MA_2_1-íèæíèé_1*Point&&MA_1_0>MA_2_0-íèæíèé_1*Point)vSignal = 1;//up
    else
    if(MA_1_1<=MA_2_1-íèæíèé_2*Point&&MA_1_0>MA_2_0-íèæíèé_2*Point)vSignal = 1;//up    
    
    
     
    else
    if(MA_1_1>=MA_2_1&&MA_1_0<MA_2_0) vSignal =-1;//down
    else
    if(MA_1_1>=MA_2_1+âåðõíèé_1*Point&&MA_1_0<MA_2_0+âåðõíèé_1*Point) vSignal =-1;//down
    else
    if(MA_1_1>=MA_2_1+âåðõíèé_2*Point&&MA_1_0<MA_2_0+âåðõíèé_2*Point) vSignal =-1;//down
    else
    if(MA_1_1>=MA_2_1-íèæíèé_1*Point&&MA_1_0<MA_2_0-íèæíèé_1*Point) vSignal =-1;//down
    else
    if(MA_1_1>=MA_2_1-íèæíèé_2*Point&&MA_1_0<MA_2_0-íèæíèé_2*Point) vSignal =-1;//down    
    
        
    return (vSignal);
   }
   
//+----------------------------------------------------------------------------+
//|  Àâòîð    : Êèì Èãîðü Â. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Âåðñèÿ   : 06.03.2008                                                     |
//|  Îïèñàíèå : Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ ïîçèöèé                          |
//+----------------------------------------------------------------------------+
//|  Ïàðàìåòðû:                                                                |
//|    sy - íàèìåíîâàíèå èíñòðóìåíòà   (""   - ëþáîé ñèìâîë,                   |
//|                                     NULL - òåêóùèé ñèìâîë)                 |
//|    op - îïåðàöèÿ                   (-1   - ëþáàÿ ïîçèöèÿ)                  |
//|    mn - MagicNumber                (-1   - ëþáîé ìàãèê)                    |
//|    ot - âðåìÿ îòêðûòèÿ             ( 0   - ëþáîå âðåìÿ îòêðûòèÿ)           |
//+----------------------------------------------------------------------------+
bool ExistPositions(string sy="", int op=-1, int mn=-1, datetime ot=0) {
  int i, k=OrdersTotal();
 
  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (ot<=OrderOpenTime()) return(True);
            }
          }
        }
      }
    }
  }
  return(False);
}

//+----------------------------------------------------------------------------+
//|  Àâòîð    : Êèì Èãîðü Â. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Âåðñèÿ  : 13.06.2007                                                      |
//|  Îïèñàíèå : Îòêðûòèå ïîçèöèè. Âåðñèÿ ôóíêöèè äëÿ òåñòîâ íà èñòîðèè.        |
//+----------------------------------------------------------------------------+
//|  Ïàðàìåòðû:                                                                |
//|    sy - íàèìåíîâàíèå èíñòðóìåíòà   ("" - òåêóùèé ñèìâîë)                   |
//|    op - îïåðàöèÿ                                                           |
//|    ll - ëîò                                                                |
//|    sl - óðîâåíü ñòîï                                                       |
//|    tp - óðîâåíü òåéê                                                       |
//|    mn - MagicNumber                                                        |
//+----------------------------------------------------------------------------+
void OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0) {
  color  clOpen;
  double pp;
  int    err, ticket;
 
  if (sy=="") sy=Symbol();
  if (op==OP_BUY) {
    pp=MarketInfo(sy, MODE_ASK); clOpen=Green;
  } else {
    pp=MarketInfo(sy, MODE_BID); clOpen=Red;
  }
  ticket=OrderSend(sy, op, ll, pp,5, sl, tp, "", mn, 0, clOpen);
  if (ticket<0) {
    err=GetLastError();
    Print("Error(",err,") open ",GetNameOP(op),": ",ErrorDescription(err));
    Print("Ask=",Ask," Bid=",Bid," sy=",sy," ll=",ll,
          " pp=",pp," sl=",sl," tp=",tp," mn=",mn);
  }
}

//+----------------------------------------------------------------------------+
//|  Àâòîð    : Êèì Èãîðü Â. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Âåðñèÿ   : 01.09.2005                                                     |
//|  Îïèñàíèå : Âîçâðàùàåò íàèìåíîâàíèå òîðãîâîé îïåðàöèè                      |
//+----------------------------------------------------------------------------+
//|  Ïàðàìåòðû:                                                                |
//|    op - èäåíòèôèêàòîð òîðãîâîé îïåðàöèè                                    |
//+----------------------------------------------------------------------------+
string GetNameOP(int op) {
  switch (op) {
    case OP_BUY      : return("Buy");
    case OP_SELL     : return("Sell");
    case OP_BUYLIMIT : return("Buy Limit");
    case OP_SELLLIMIT: return("Sell Limit");
    case OP_BUYSTOP  : return("Buy Stop");
    case OP_SELLSTOP : return("Sell Stop");
    default          : return("Unknown Operation");
  }
} 



Sample





Analysis



Market Information Used:



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

Other Features:

BackTest : EURUSD on H1

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

BackTest : EURUSD on H1

From 2009-12-01 to 2010-01-17 Profit Factor:0.74 Total Net Profit:-924.00

BackTest : EURUSD on H1

From 2010-03-01 to 2010-03-27 Profit Factor:0.70 Total Net Profit:-1232.80

BackTest : EURUSD on H1

From 2010-04-01 to 2010-04-30 Profit Factor:0.69 Total Net Profit:-942.00

BackTest : EURUSD on H1

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

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-02-27 Profit Factor:1.02 Total Net Profit:68.80

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-04-16 Profit Factor:0.16 Total Net Profit:-9959.70

BackTest : USDCAD on H1

From 2009-01-01 to 2010-01-01 Profit Factor:0.54 Total Net Profit:-10024.10

BackTest : USDCAD on H1

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

BackTest : USDJPY on H1

From 2009-11-01 to 2009-11-30 Profit Factor:0.63 Total Net Profit:-420.69

Request Backtest for ytg_2MA_4Level


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

Pair: Period: