Author: Copyright � 2009, ������ ������ ������������
2Graphs
Price Data Components
Series array that contains the highest prices of each barSeries array that contains the lowest prices of each barSeries array that contains close prices for each barSeries array that contains open prices of each bar
0 Views
0 Downloads
0 Favorites
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++;
    }
   }
  }
//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---