2Graphs





//+------------------------------------------------------------------+
//|                                                      2Graphs.mq4 |
//|                     Copyright © 2009, Áóãàåâ Äàíèèë Âëàäèìèðîâè÷ |
//|                                         e-mail: buga1922@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Áóãàåâ Äàíèèë Âëàäèìèðîâè÷"
#property link "mailto:buga1922@mail.ru"

#property indicator_separate_window
#property indicator_minimum -0.1
#property indicator_maximum 10.1

extern string symbol1="EURUSD";
extern string symbol2="USDCHF";
extern string s_period1="0";
extern string s_period2="0";
extern bool din_shirina=true;

int period1, period2;
double max_high1,max_high2,
       min_low1=10000,min_low2=10000;
int j;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+

int PROVERKA(string s_period) 
 {
  if ( ( s_period == "0" ) || (s_period == "" ) )
   {
    return(Period());
   }
  else
   {
    if ( ( s_period == "M1" ) || (s_period == "m1" ) )
     {
      return(1);
     }
    else
     {
      if ( ( s_period == "M5" ) || (s_period == "m5" ) )
       {
        return(5);
       }
      else
       {
        if ( ( s_period == "M15" ) || (s_period == "m15" ) )
         {
          return(15);
         }
        else
         {
          if ( ( s_period == "M30" ) || (s_period == "m30" ) )
           {
            return(30);
           }
          else
           {
            if ( ( s_period == "H1" ) || (s_period == "h1" ) )
             {
              return(60);
             }
            else
             {
              if ( ( s_period == "H4" ) || (s_period == "h4" ) )
               {
                return(240);
               }
              else
               {
                if ( ( s_period == "D1" ) || (s_period == "d1" ) )
                 {
                  return(1440);
                 }
                else
                 {
                  if ( ( s_period == "W1" ) || (s_period == "w1" ) )
                   {
                    return(10080);
                   }
                  else
                   {
                    if ( ( s_period == "MN" ) || (s_period == "mn" ) || (s_period == "Mn" ) || (s_period == "mN" ) )
                     {
                      return(43200);
                     }
                    else
                     {
                      return(-1);
                     }
                   }
                 }
               }
             }
           }
         }
       }
     }
   }
 }

double MASHTAB1(string symbol, int period, int lag)
  {
   if ( max_high1 < iHigh(symbol,period,lag) ) max_high1 = iHigh(symbol,period,lag);
   if ( min_low1 > iLow(symbol,period,lag) )   min_low1  = iLow(symbol,period,lag);   
   return(10/(max_high1-min_low1));
  }

double MASHTAB2(string symbol, int period, int lag)
  {
   if ( max_high2 < iHigh(symbol,period,lag) ) max_high2 = iHigh(symbol,period,lag);
   if ( min_low2 > iLow(symbol,period,lag) )   min_low2  = iLow(symbol,period,lag);   
   return(10/(max_high2-min_low2));
  }

void UROVNI()
  {
   int i;
   for ( i=0; i<=10; i++)
    {
     ObjectCreate ( "uroven"+i, OBJ_HLINE,     1, 1, i   );
     ObjectSet    ( "uroven"+i, OBJPROP_COLOR, Silver    );
     ObjectSet    ( "uroven"+i, OBJPROP_STYLE, STYLE_DOT );
    }
   ObjectCreate ("razdel", OBJ_VLINE, 1, Time[WindowFirstVisibleBar( )-WindowBarsPerChart() /2] ,0);
   ObjectCreate ("valuta1", OBJ_LABEL, 1, 0, 0);
   ObjectSetText("valuta1",symbol1+"_"+s_period1,8,"Arial", Gray);
   ObjectSet("valuta1",OBJPROP_CORNER,    0);// Óãîë ïðèâÿçêè            
   ObjectSet("valuta1",OBJPROP_XDISTANCE,15);// Êîîðäèíàòà Õ
   ObjectSet("valuta1",OBJPROP_YDISTANCE,15);// Êîîðäèíàòà Y
   ObjectCreate ("valuta2", OBJ_LABEL, 1, 0, 0);
   ObjectSetText("valuta2",symbol2+"_"+s_period2,8,"Arial", Gray);
   ObjectSet("valuta2",OBJPROP_CORNER,    1);// Óãîë ïðèâÿçêè            
   ObjectSet("valuta2",OBJPROP_XDISTANCE,15);// Êîîðäèíàòà Õ
   ObjectSet("valuta2",OBJPROP_YDISTANCE,15);// Êîîðäèíàòà Y
  }

int SHIRINA_TELA()
  {
   if ( WindowBarsPerChart() > 300 )
    {
     return(1);
    }
   else
    {
     if ( WindowBarsPerChart() > 150 )
      {
       return(3);
      }
     else
      {
       if ( WindowBarsPerChart() > 70 )
        {
         return(5);
        }
       else
        {
         if ( WindowBarsPerChart() > 35 )
          {
           return(9);
          }
         else
          {
            return(13);
          }
        }
      }
    }
  }

void SVECHA(string symbol, int period, int lag_k, int lag_p, double k, double min_low)
  {
   ObjectCreate ( "shade"+symbol+lag_p, OBJ_TREND, 1, Time[lag_p], ( iHigh (symbol,period,lag_k) - min_low )*k,
                                                      Time[lag_p], ( iLow  (symbol,period,lag_k) - min_low )*k);
   ObjectCreate ( "telo"+symbol+lag_p,  OBJ_TREND, 1, Time[lag_p], ( iOpen (symbol,period,lag_k) - min_low )*k,
                                                      Time[lag_p], ( iClose(symbol,period,lag_k) - min_low )*k);
   ObjectSet    ( "telo"+symbol+lag_p,  OBJPROP_RAY,false);
   ObjectSet    ( "shade"+symbol+lag_p, OBJPROP_RAY,false);
   if ( din_shirina == true )
    {
     ObjectSet    ( "telo"+symbol+lag_p,  OBJPROP_WIDTH,  SHIRINA_TELA() );
    }
   else 
    {
     ObjectSet    ( "telo"+symbol+lag_p,  OBJPROP_WIDTH,  3);
    }
   if ( iOpen(symbol,period,lag_k) < iClose(symbol,period,lag_k) )
    {
     ObjectSet  ( "telo"+symbol+lag_p,  OBJPROP_COLOR,Red);
     ObjectSet  ( "shade"+symbol+lag_p, OBJPROP_COLOR,Red);
    }
   else
    {
     ObjectSet  ( "telo"+symbol+lag_p,  OBJPROP_COLOR,Black);
     ObjectSet  ( "shade"+symbol+lag_p, OBJPROP_COLOR,Black);
    }
  }

int init()
  {
   period1=PROVERKA(s_period1);
   period2=PROVERKA(s_period2);
   //if ( ( period1==-1 ) || ( period2==-1 ) ) Comment("error");
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+

void DELETE()
  {
   int i;
   ObjectDelete("razdel");
   for ( i=( WindowFirstVisibleBar()-1 ); i>=( WindowFirstVisibleBar()-WindowBarsPerChart()/2+1 ); i--)
    {
     ObjectDelete("telo"+symbol1+i);
     ObjectDelete("shade"+symbol1+i);
    }
   for ( i=( WindowFirstVisibleBar()-WindowBarsPerChart()+2 ); i<=( WindowFirstVisibleBar()-WindowBarsPerChart()/2-1 ); i++)
    {
     ObjectDelete("telo"+symbol2+i);
     ObjectDelete("shade"+symbol2+i);
    }
  }

int deinit()
  {

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int i,travel1,travel2,vsego,first;
   double k1,k2;
   if (j!=Time[0])
   {
   j=Time[0];
   DELETE();
   UROVNI();
   vsego=WindowBarsPerChart( );
   first=WindowFirstVisibleBar( );
   max_high1=0;max_high2=0;
   min_low1=10000;min_low2=10000;
   for ( i=( WindowFirstVisibleBar()-WindowBarsPerChart()+3 ); i<=( WindowFirstVisibleBar()-WindowBarsPerChart()/2 ); i++)
    {
     k1=MASHTAB1(symbol1,period1,i);
     k2=MASHTAB2(symbol2,period2,i); 
    }
   for ( i=( WindowFirstVisibleBar()-WindowBarsPerChart()+3 ); i<=( WindowFirstVisibleBar()-WindowBarsPerChart()/2 ); i++)
    {
     SVECHA( symbol1, period1, i, first-WindowBarsPerChart( )/2+2, k1, min_low1);
     SVECHA( symbol2, period2, i, first-WindowBarsPerChart( )+2  , k2, min_low2);
     first++;
    }
   }
  }
//+------------------------------------------------------------------+



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 open time 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:

Other Features: