Индикаторы: USD AGAINST ALL - страница 3

 
vorese:

lifewood:
Скажите, а возможно сделать такой же индикатор, который бы показывал отношение, например, евро к остальным семи валютам. Затем следующий индикатор показывал отношение фунта к семи нашим валютам, следующий индикатор показывал бы отношение иены к семи валютам, следующий индикатор показывал бы отношение франка к семи валютам. И так далее. То есть, что бы можно было менять "базовую" валюту индикатора? Вот это было бы здорово! Это был бы по настоящему полностью законченный индикатор. Может попробуете сделать? Действительно, был бы классный индикатор, если бы можно было бы менять базовую валюту.

  

Как только в выходные случится дождь  , приведу в порядок код и выложу именно такой индикатор о котором Вы говорите.


Great! Великолепно! Это было бы замечательно. Такие индикаторы очень полезны в работе, они дают наглядное представление о рынке валют. Подожду дождливой субботы. Но я бы хотел высказать свой взгляд, может он поможет в разработке и компоновке вашего индикатора. 
Например, если бы я создавал такой индикатор, то я бы сделал немного по другому в плане цвета и формы. То есть, я бы сделал сам  индикатор немного меньше в размерах (примерно раза в два в три), рамку вообще удалил бы, но зато название валютной пары увеличил бы или выделил бы более жирным цветом. 
Вот, я использую такой вот индикатор. Он конечно не идеальный, но по компактности,  по компоновке и по толщине шрифтов и цвету он приближается к идеальному для работы трейдера. Может вы для себя возьмете что-то на заметку при работе над индикатором. 
 

 
lifewood:
vorese:

lifewood:
 


Great! Великолепно! Это было бы замечательно. Такие индикаторы очень полезны в работе, они дают наглядное представление о рынке валют. Подожду дождливой субботы. Но я бы хотел высказать свой взгляд, может он поможет в разработке и компоновке вашего индикатора. 
Например, если бы я создавал такой индикатор, то я бы сделал немного по другому в плане цвета и формы. То есть, я бы сделал сами  индикаторы немного меньше в размерах (примерно раза в два в три), рамку вообще удалил бы, но зато название валютной пары увеличил бы или выделил бы более жирным цветом. 
Вот, я использую такой вот индикатор. Он конечно не идеальный, но по компактности,  по компоновке и по толщине шрифтов и цвету он приближается к идеальному для работы трейдера. Может вы для себя возьмете что-то на заметку при работе над индикатором. 
 

Вы хотите , чтобы я до конца дней своих перелицовывал этот индикатор ? Лучше скажите , стоит ли создавать новую тему в Code Base

или выложить этот индикатор только здесь . Я не могу понять , нужен он кому-то кроме нас с Вами или нет .

 
vorese:
lifewood:
vorese:

lifewood:
 


Great! Великолепно! Это было бы замечательно. Такие индикаторы очень полезны в работе, они дают наглядное представление о рынке валют. Подожду дождливой субботы. Но я бы хотел высказать свой взгляд, может он поможет в разработке и компоновке вашего индикатора. 
Например, если бы я создавал такой индикатор, то я бы сделал немного по другому в плане цвета и формы. То есть, я бы сделал сами  индикаторы немного меньше в размерах (примерно раза в два в три), рамку вообще удалил бы, но зато название валютной пары увеличил бы или выделил бы более жирным цветом. 
Вот, я использую такой вот индикатор. Он конечно не идеальный, но по компактности,  по компоновке и по толщине шрифтов и цвету он приближается к идеальному для работы трейдера. Может вы для себя возьмете что-то на заметку при работе над индикатором. 
 

Вы хотите , чтобы я до конца дней своих перелицовывал этот индикатор ? Лучше скажите , стоит ли создавать новую тему в Code Base

или выложить этот индикатор только здесь . Я не могу понять , нужен он кому-то кроме нас с Вами или нет .


Могу сказать, что нет придела совершенству. Необходимо улучшать, совершенствовать и отшлифовывать до золотого блеска. Вон Миктософт придумал Винду и теперь всю жизнь продаёт её модификации. Трейдеры это очень требовательная публика, очень экономят полезную площадь на экране монитора. Индикатор должен быть максимально небольшого размера и как можно более информативным. Сама идея вашего индикатора мне очень нравится, я устанавливают его на D1 и всегда вижу как себя чувствует доллар по отношению к остальным валютам. Но если, сделать подобный индикатор для других семи валют, то это было бы намного лучше. И конечно было бы неплохо сделать его меньше по размеру, чтобы остальные индикаторы выстроить в один блок справа вдоль экрана, примерно так, как на моём скриншоте. Вот тогда можно было бы создать новую тему для демонстрации практически нового "индикатора корзины валют".  Его можно назвать условно "ИНДИКАТОР КОРЗИНЫ ВАЛЮТ".   Как звучит?! - Замечательно.
 

Я разместил ваш индикатор у себя на графике. В общем нормально. 
Очень яркий цвет. Он очень сильно привлекает внимание, по сравнению с остальными индикаторами и графиком. Необходимо цвет сделать хотя бы просто "Red". И ещё, было бы не плохо вообще убрать рамку, оставить только верхнюю планку (ограничение гистограммы). А символ валюты "USD" и период "D1" сделать несвязанной с рамкой настройкой (отдельно). То есть, если рамку затемняешь, то символ валюты остаётся светлым. 
Вот, как то так. А в общем очень полезный индикатор, необходимо только закончить его, правильно подобрать цвета и размеры. Чуть чуть ещё меньше сделать , что бы вмещался в полную развёртку "смещение графика", чтобы вмещалось по ширине два таких индикатора в плоскость от начала до полного "смещения графика (отмечено на скрине)


 
//+------------------------------------------------------------------+
//|                                           All against all.v4 mg4 |                   
//|                                                  vorese          |
//|                                              vorese@yandex.ru    |
//+------------------------------------------------------------------+
#property indicator_chart_window
extern string symbol="EUR";// любая валюта
extern string note="Period_(0,M1,M5,M15,M30,H1,H4,D1,W1,MN)";
extern string period_="0";//M1,M5,M15,M30,H1,H4,D1,W1,MN . Если 0- период текущего графика.
extern int X_DISTANCE=0; // располож. по горизонтали
extern int Y_DISTANCE=0; // располож. по вертикали
extern color border_color=Silver; // цвет рамки 
extern color text_color=Silver; // цвет верхней строки 
extern color CurrCol_up=Aqua; // цвет обозн.валюты и % растущего бара 
extern color CurrCol_down=Gold; // цвет обозн.валюты и % падающего бара
extern bool colorRB_RG=true;  //цвет гистограммы. true- красный синий.false- красный зеленый.
extern bool invertColGist=false;//инверт. цвета гистограммы
extern bool brightness_gradation=false;//градации яркости
//========используемые вал.пары =======================================
// можно удалять и добавлять любые валютные пары , в любой последовательности .
// В  currency_pair[] и в  count_curr должно быть указано 
// кол-во имеющихся в массиве валютных пар. 
string currency_pair[26]= {"EURUSD","GBPUSD","USDJPY","USDCHF","EURGBP","EURJPY","EURCHF",
 "EURAUD","GBPJPY","GBPCHF","AUDJPY","NZDJPY","NZDCHF","AUDNZD","CHFJPY","EURCAD",
 "AUDCAD","CADJPY","EURNZD","GBPAUD","GBPCAD","AUDCHF","CADCHF","AUDUSD","USDCAD","NZDUSD"};
int count_curr=26; // количество вал.пар 
//=====================================================================
string mas_pair[7]; 
int mas_flags [7]; 
string mas_currency[7]; 
int total; 
//---------------------------------------------------------------------   
int line_x[5]={3,13,23,67,80};// координаты горизонт.линий
int TF;
color color_currency,col_00;
//=====================================================================
int init()
  {
//--------------валютные пары------------------------------------------ 
    for(int i=0;i<count_curr;i++)
     { 
            if(StringSubstr(currency_pair[i],0,3)==symbol) 
                { mas_pair[total]=currency_pair[i];
                    mas_flags[total]=(-1);
                      mas_currency[total]=StringSubstr(currency_pair[i],3,0);
                        total+=1;    }
           if(StringSubstr(currency_pair[i],3,0)==symbol) 
                { mas_pair[total]=currency_pair[i];
                    mas_flags[total]=1;
                      mas_currency[total]=StringSubstr(currency_pair[i],0,3); 
                        total+=1;    }    
                                         }
 //--------------- период --------------------------------------------
      if(period_=="M1")TF=1;
   else {
      if(period_=="M5")TF=5;
   else {
     if(period_=="M15")TF=15;
   else {
     if(period_=="M30")TF=30;
   else {
     if(period_=="H1")TF=60;
   else {
     if(period_=="H4")TF=240;
   else {
     if(period_=="D1")TF=1440;
   else {
     if(period_=="W1")TF=10080;
   else {
     if(period_=="MN")TF=43200;
   else {
     if(period_=="0")TF=0;
   else {  Alert("Ошибка установки периода:  "+period_);
                     }}}}}}}}}}
 //-------------------------------------------------------------------  
   // создать горизонт. линии
  for(int x=0;x<5;x++)  {
  if(x!=3)col_00=border_color;
  else
       col_00=text_color;
   ObjectCreate(symbol+"line-x"+x, OBJ_LABEL, 0, 0, 0);
   ObjectSet(symbol+"line-x"+x, OBJPROP_CORNER, 3);
   ObjectSet(symbol+"line-x"+x, OBJPROP_XDISTANCE,X_DISTANCE+8);
   ObjectSet(symbol+"line-x"+x, OBJPROP_YDISTANCE, Y_DISTANCE+line_x[x]);
   ObjectSetText(symbol+"line-x"+x,"_________________",7,"Verdana",col_00); 
                     }
 //---------------------------------------------------------------------
   // создать вертикал. линии
   int c,y,r;
      for(c=0;c<2;c++) {
        if(c==1)r=103;
      for( y=0;y<4;y++)  {
   ObjectCreate(y+symbol+"line-y"+c, OBJ_LABEL, 0, 0, 0);
   ObjectSet(y+symbol+"line-y"+c, OBJPROP_CORNER, 3);
   ObjectSet(y+symbol+"line-y"+c, OBJPROP_XDISTANCE,X_DISTANCE+1+r);
   ObjectSet(y+symbol+"line-y"+c, OBJPROP_YDISTANCE, Y_DISTANCE+3+y*19);
   ObjectSetText(y+symbol+"line-y"+c,"|",16,"Verdana",border_color); }
                     } 
  //--------------------------------------------------------------------- 
  // текст                     
   ObjectCreate(symbol+"text", OBJ_LABEL, 0, 0, 0);
   ObjectSet(symbol+"text", OBJPROP_CORNER, 3);
   ObjectSet(symbol+"text", OBJPROP_XDISTANCE,X_DISTANCE+20);
   ObjectSet(symbol+"text", OBJPROP_YDISTANCE, Y_DISTANCE+68); 
   ObjectSetText(symbol+"text",symbol+"  Period_"+period_,7,"Verdana",text_color);                                                          
   return(0);
  }                               
//=======================================================================
int deinit()
  { 
    int n,m;
      for( n=0;n<7;n++)  // удалить все об'екты 
     {  
       ObjectDelete(symbol+"perc"+n);
       ObjectDelete(symbol+"curr"+n);
       if(n<5) ObjectDelete(symbol+"line-x"+n);  
  //------       
      for( m=0;m<=20;m++)
     {
       ObjectDelete(m+symbol+"gist"+n);
       if(m<2 && n<4) ObjectDelete(n+symbol+"line-y"+m);
                               } } 
       ObjectDelete(symbol+"text");                        
   return(0);
  }
//======================================================================
int start()
  {
  int i,w,z;
  double percent,bid,open,high,low; 
  int flag,count;  
  for( z=0;z<total;z++)  
    { 
      for( w=0;w<=20;w++) {
       ObjectDelete(w+symbol+"gist"+z); //удалить гистограмму перед обновлением
                              }  
   percent=0; 
   flag=0;
   count=0;           
//---------------------------------------------------------------------
     // обновить данные
    RefreshRates();
    bid=MarketInfo(mas_pair[z], MODE_BID );
    open=iOpen(mas_pair[z],TF,0);
    high=iHigh(mas_pair[z],TF,0);
    low=iLow(mas_pair[z],TF,0);   
//---------------------------------------------------------------------  
    // расчет процентов
   if(bid>open && high!=open && bid>0)   
       { percent=(bid-open)/(high-open)*100; // проц.растущего бара
         flag=1;
         count=NormalizeDouble(percent/5,0); }
       else {
         if(bid<open && low!=open && bid>0)
       { percent=(open-bid)/(open-low)*100; // проц.падающего бара
         flag=(-1);  
         count=NormalizeDouble(percent/5,0); } }
//-------------------------------------------------------------------- 
         // при переключении ТФ//
    if(percent>100)percent=100; 
    if(count>20)count=20; 
 //-------------------------------------------------------------------     
         // инверт.цвета гистограммы
   if(invertColGist) flag=flag*mas_flags[z]*(-1);  
      else
         flag=flag*mas_flags[z];   
//-------------------------------------------------------------------- 
     //-- цвет валюты и процентов
  if(flag==1)color_currency=CurrCol_up;
    else {
    if(flag==(-1))color_currency=CurrCol_down;
    else {
          color_currency=text_color;  }}
//--------------------------------------------------------------------
 if(bid>0)  {           //если вал. пара есть в терминале
  // проценты     
   ObjectCreate(symbol+"perc"+z, OBJ_LABEL, 0, 0, 0);
   ObjectSet(symbol+"perc"+z, OBJPROP_CORNER, 3);
   ObjectSet(symbol+"perc"+z, OBJPROP_XDISTANCE,X_DISTANCE+94-z*14);
   ObjectSet(symbol+"perc"+z, OBJPROP_YDISTANCE, Y_DISTANCE+15);
   ObjectSetText(symbol+"perc"+z,DoubleToStr(percent,0),5,"Verdana",color_currency); 
                   }
//-------------------------------------------------------------------- 
  // валюта   
   ObjectCreate(symbol+"curr"+z, OBJ_LABEL, 0, 0, 0);
   ObjectSet(symbol+"curr"+z, OBJPROP_CORNER, 3);
   ObjectSet(symbol+"curr"+z, OBJPROP_XDISTANCE,X_DISTANCE+94-z*14);
   ObjectSet(symbol+"curr"+z, OBJPROP_YDISTANCE, Y_DISTANCE+5);
   ObjectSetText(symbol+"curr"+z,mas_currency[z],4,"Verdana",color_currency);        
//--------------------------------------------------------------------- 
  // гистограмма 
     for( i=0;i<=count;i++) {  
   ObjectCreate(i+symbol+"gist"+z, OBJ_LABEL, 0, 0, 0);
   ObjectSet(i+symbol+"gist"+z, OBJPROP_CORNER, 3);
   ObjectSet(i+symbol+"gist"+z, OBJPROP_XDISTANCE,X_DISTANCE+91-z*14);
   ObjectSet(i+symbol+"gist"+z, OBJPROP_YDISTANCE, Y_DISTANCE+3+i*2);
   ObjectSetText(i+symbol+"gist"+z,"-",30,"Verdana",f_Color(i,flag));  
                       } }  
//---------------------------------------------------------------------                     
   return(0);
  }
//=====================================================================
//============ цвет синий красный зеленый==============================      
color f_Color (int num,int flag) 
{   color col_R,col_B,col,col_G;
if(!brightness_gradation ) {
 if(flag==1 && colorRB_RG)col=Blue;
     else {
      if(flag==1 && !colorRB_RG)col=Green;
       else {
        if(flag==(-1)) col=Red; 
         else {
           col=text_color;  }}}  }
     else {      
  switch(num) 
  { case 0: col_B=C'0,0,255';col_R=C'255,0,0';col_G=C'0,90,0';break; 
    case 1: col_B=C'0,10,255';col_R=C'255,10,0';col_G=C'0,100,0';break; 
    case 2: col_B=C'0,20,255';col_R=C'255,20,0';col_G=C'0,110,0';break; 
    case 3: col_B=C'0,30,255';col_R=C'255,30,0';col_G=C'0,120,0';break; 
    case 4: col_B=C'0,40,255';col_R=C'255,40,0';col_G=C'0,130,0';break; 
    case 5: col_B=C'0,50,255';col_R=C'255,50,0';col_G=C'0,140,0';break; 
    case 6: col_B=C'0,60,255';col_R=C'255,60,0';col_G=C'0,150,0';break; 
    case 7: col_B=C'0,70,255';col_R=C'255,70,0';col_G=C'0,155,0';break; 
    case 8: col_B=C'0,80,255';col_R=C'255,80,0';col_G=C'0,160,0';break; 
    case 9: col_B=C'0,90,255';col_R=C'255,90,0';col_G=C'0,165,0';break; 
    case 10: col_B=C'0,100,255';col_R=C'255,100,0';col_G=C'0,170,0';break; 
    case 11: col_B=C'0,110,255';col_R=C'255,110,0';col_G=C'0,175,0';break; 
    case 12: col_B=C'0,120,255';col_R=C'255,120,0';col_G=C'0,180,0';break; 
    case 13: col_B=C'0,130,255';col_R=C'255,130,0';col_G=C'0,185,0';break; 
    case 14: col_B=C'0,140,255';col_R=C'255,140,0';col_G=C'0,190,0';break; 
    case 15: col_B=C'0,150,255';col_R=C'255,150,0';col_G=C'0,195,0';break; 
    case 16: col_B=C'0,160,255';col_R=C'255,160,0';col_G=C'0,200,0';break; 
    case 17: col_B=C'0,170,255';col_R=C'255,170,0';col_G=C'0,205,0';break; 
    case 18: col_B=C'0,180,255';col_R=C'255,180,0';col_G=C'0,210,0';break; 
    case 19: col_B=C'0,190,255';col_R=C'255,190,0';col_G=C'0,215,0';break; 
    case 20: col_B=C'0,200,255';col_R=C'255,200,0';col_G=C'0,220,0';break; 
   
    } 
    if(flag==1 && colorRB_RG)col=col_B;
     else {
      if(flag==1 && !colorRB_RG)col=col_G;
       else {
        if(flag==(-1)) col=col_R; 
         else {
           col=text_color;  }}}  }
  return(col); }  
 //------------------------------------------------------------------------ 
 
vorese:
//+------------------------------------------------------------------+
//|                                           All against all.v4 mg4 |                   
//|                                                  vorese          |
//|                                              vorese@yandex.ru    |
//+------------------------------------------------------------------+
#property indicator_chart_window
extern string symbol="EUR";// любая валюта
extern string note="Period_(0,M1,M5,M15,M30,H1,H4,D1,W1,MN)";
extern string period_="0";//M1,M5,M15,M30,H1,H4,D1,W1,MN . Если 0- период текущего графика.
extern int X_DISTANCE=0; // располож. по горизонтали
extern int Y_DISTANCE=0; // располож. по вертикали
extern color border_color=Silver; // цвет рамки 
extern color text_color=Silver; // цвет верхней строки 
extern color CurrCol_up=Aqua; // цвет обозн.валюты и % растущего бара 
extern color CurrCol_down=Gold; // цвет обозн.валюты и % падающего бара
extern bool colorRB_RG=true;  //цвет гистограммы. true- красный синий.false- красный зеленый.
extern bool invertColGist=false;//инверт. цвета гистограммы
extern bool brightness_gradation=false;//градации яркости
//========используемые вал.пары =======================================
// можно удалять и добавлять любые валютные пары , в любой последовательности .
// В  currency_pair[] и в  count_curr должно быть указано 
// кол-во имеющихся в массиве валютных пар. 
string currency_pair[26]= {"EURUSD","GBPUSD","USDJPY","USDCHF","EURGBP","EURJPY","EURCHF",
 "EURAUD","GBPJPY","GBPCHF","AUDJPY","NZDJPY","NZDCHF","AUDNZD","CHFJPY","EURCAD",
 "AUDCAD","CADJPY","EURNZD","GBPAUD","GBPCAD","AUDCHF","CADCHF","AUDUSD","USDCAD","NZDUSD"};
int count_curr=26; // количество вал.пар 
//=====================================================================
string mas_pair[7]; 
int mas_flags [7]; 
string mas_currency[7]; 
int total; 
//---------------------------------------------------------------------   
int line_x[5]={3,13,23,67,80};// координаты горизонт.линий
int TF;
color color_currency,col_00;
//=====================================================================
int init()
  {
//--------------валютные пары------------------------------------------ 
    for(int i=0;i<count_curr;i++)
     { 
            if(StringSubstr(currency_pair[i],0,3)==symbol) 
                { mas_pair[total]=currency_pair[i];
                    mas_flags[total]=(-1);
                      mas_currency[total]=StringSubstr(currency_pair[i],3,0);
                        total+=1;    }
           if(StringSubstr(currency_pair[i],3,0)==symbol) 
                { mas_pair[total]=currency_pair[i];
                    mas_flags[total]=1;
                      mas_currency[total]=StringSubstr(currency_pair[i],0,3); 
                        total+=1;    }    
                                         }
 //--------------- период --------------------------------------------
      if(period_=="M1")TF=1;
   else {
      if(period_=="M5")TF=5;
   else {
     if(period_=="M15")TF=15;
   else {
     if(period_=="M30")TF=30;
   else {
     if(period_=="H1")TF=60;
   else {
     if(period_=="H4")TF=240;
   else {
     if(period_=="D1")TF=1440;
   else {
     if(period_=="W1")TF=10080;
   else {
     if(period_=="MN")TF=43200;
   else {
     if(period_=="0")TF=0;
   else {  Alert("Ошибка установки периода:  "+period_);
                     }}}}}}}}}}
 //-------------------------------------------------------------------  
   // создать горизонт. линии
  for(int x=0;x<5;x++)  {
  if(x!=3)col_00=border_color;
  else
       col_00=text_color;
   ObjectCreate(symbol+"line-x"+x, OBJ_LABEL, 0, 0, 0);
   ObjectSet(symbol+"line-x"+x, OBJPROP_CORNER, 3);
   ObjectSet(symbol+"line-x"+x, OBJPROP_XDISTANCE,X_DISTANCE+8);
   ObjectSet(symbol+"line-x"+x, OBJPROP_YDISTANCE, Y_DISTANCE+line_x[x]);
   ObjectSetText(symbol+"line-x"+x,"_________________",7,"Verdana",col_00); 
                     }
 //---------------------------------------------------------------------
   // создать вертикал. линии
   int c,y,r;
      for(c=0;c<2;c++) {
        if(c==1)r=103;
      for( y=0;y<4;y++)  {
   ObjectCreate(y+symbol+"line-y"+c, OBJ_LABEL, 0, 0, 0);
   ObjectSet(y+symbol+"line-y"+c, OBJPROP_CORNER, 3);
   ObjectSet(y+symbol+"line-y"+c, OBJPROP_XDISTANCE,X_DISTANCE+1+r);
   ObjectSet(y+symbol+"line-y"+c, OBJPROP_YDISTANCE, Y_DISTANCE+3+y*19);
   ObjectSetText(y+symbol+"line-y"+c,"|",16,"Verdana",border_color); }
                     } 
  //--------------------------------------------------------------------- 
  // текст                     
   ObjectCreate(symbol+"text", OBJ_LABEL, 0, 0, 0);
   ObjectSet(symbol+"text", OBJPROP_CORNER, 3);
   ObjectSet(symbol+"text", OBJPROP_XDISTANCE,X_DISTANCE+20);
   ObjectSet(symbol+"text", OBJPROP_YDISTANCE, Y_DISTANCE+68); 
   ObjectSetText(symbol+"text",symbol+"  Period_"+period_,7,"Verdana",text_color);                                                          
   return(0);
  }                               
//=======================================================================
int deinit()
  { 
    int n,m;
      for( n=0;n<7;n++)  // удалить все об'екты 
     {  
       ObjectDelete(symbol+"perc"+n);
       ObjectDelete(symbol+"curr"+n);
       if(n<5) ObjectDelete(symbol+"line-x"+n);  
  //------       
      for( m=0;m<=20;m++)
     {
       ObjectDelete(m+symbol+"gist"+n);
       if(m<2 && n<4) ObjectDelete(n+symbol+"line-y"+m);
                               } } 
       ObjectDelete(symbol+"text");                        
   return(0);
  }
//======================================================================
int start()
  {
  int i,w,z;
  double percent,bid,open,high,low; 
  int flag,count;  
  for( z=0;z<total;z++)  
    { 
      for( w=0;w<=20;w++) {
       ObjectDelete(w+symbol+"gist"+z); //удалить гистограмму перед обновлением
                              }  
   percent=0; 
   flag=0;
   count=0;           
//---------------------------------------------------------------------
     // обновить данные
    RefreshRates();
    bid=MarketInfo(mas_pair[z], MODE_BID );
    open=iOpen(mas_pair[z],TF,0);
    high=iHigh(mas_pair[z],TF,0);
    low=iLow(mas_pair[z],TF,0);   
//---------------------------------------------------------------------  
    // расчет процентов
   if(bid>open && high!=open && bid>0)   
       { percent=(bid-open)/(high-open)*100; // проц.растущего бара
         flag=1;
         count=NormalizeDouble(percent/5,0); }
       else {
         if(bid<open && low!=open && bid>0)
       { percent=(open-bid)/(open-low)*100; // проц.падающего бара
         flag=(-1);  
         count=NormalizeDouble(percent/5,0); } }
//-------------------------------------------------------------------- 
         // при переключении ТФ//
    if(percent>100)percent=100; 
    if(count>20)count=20; 
 //-------------------------------------------------------------------     
         // инверт.цвета гистограммы
   if(invertColGist) flag=flag*mas_flags[z]*(-1);  
      else
         flag=flag*mas_flags[z];   
//-------------------------------------------------------------------- 
     //-- цвет валюты и процентов
  if(flag==1)color_currency=CurrCol_up;
    else {
    if(flag==(-1))color_currency=CurrCol_down;
    else {
          color_currency=text_color;  }}
//--------------------------------------------------------------------
 if(bid>0)  {           //если вал. пара есть в терминале
  // проценты     
   ObjectCreate(symbol+"perc"+z, OBJ_LABEL, 0, 0, 0);
   ObjectSet(symbol+"perc"+z, OBJPROP_CORNER, 3);
   ObjectSet(symbol+"perc"+z, OBJPROP_XDISTANCE,X_DISTANCE+94-z*14);
   ObjectSet(symbol+"perc"+z, OBJPROP_YDISTANCE, Y_DISTANCE+15);
   ObjectSetText(symbol+"perc"+z,DoubleToStr(percent,0),5,"Verdana",color_currency); 
                   }
//-------------------------------------------------------------------- 
  // валюта   
   ObjectCreate(symbol+"curr"+z, OBJ_LABEL, 0, 0, 0);
   ObjectSet(symbol+"curr"+z, OBJPROP_CORNER, 3);
   ObjectSet(symbol+"curr"+z, OBJPROP_XDISTANCE,X_DISTANCE+94-z*14);
   ObjectSet(symbol+"curr"+z, OBJPROP_YDISTANCE, Y_DISTANCE+5);
   ObjectSetText(symbol+"curr"+z,mas_currency[z],4,"Verdana",color_currency);        
//--------------------------------------------------------------------- 
  // гистограмма 
     for( i=0;i<=count;i++) {  
   ObjectCreate(i+symbol+"gist"+z, OBJ_LABEL, 0, 0, 0);
   ObjectSet(i+symbol+"gist"+z, OBJPROP_CORNER, 3);
   ObjectSet(i+symbol+"gist"+z, OBJPROP_XDISTANCE,X_DISTANCE+91-z*14);
   ObjectSet(i+symbol+"gist"+z, OBJPROP_YDISTANCE, Y_DISTANCE+3+i*2);
   ObjectSetText(i+symbol+"gist"+z,"-",30,"Verdana",f_Color(i,flag));  
                       } }  
//---------------------------------------------------------------------                     
   return(0);
  }
//=====================================================================
//============ цвет синий красный зеленый==============================      
color f_Color (int num,int flag) 
{   color col_R,col_B,col,col_G;
if(!brightness_gradation ) {
 if(flag==1 && colorRB_RG)col=Blue;
     else {
      if(flag==1 && !colorRB_RG)col=Green;
       else {
        if(flag==(-1)) col=Red; 
         else {
           col=text_color;  }}}  }
     else {      
  switch(num) 
  { case 0: col_B=C'0,0,255';col_R=C'255,0,0';col_G=C'0,90,0';break; 
    case 1: col_B=C'0,10,255';col_R=C'255,10,0';col_G=C'0,100,0';break; 
    case 2: col_B=C'0,20,255';col_R=C'255,20,0';col_G=C'0,110,0';break; 
    case 3: col_B=C'0,30,255';col_R=C'255,30,0';col_G=C'0,120,0';break; 
    case 4: col_B=C'0,40,255';col_R=C'255,40,0';col_G=C'0,130,0';break; 
    case 5: col_B=C'0,50,255';col_R=C'255,50,0';col_G=C'0,140,0';break; 
    case 6: col_B=C'0,60,255';col_R=C'255,60,0';col_G=C'0,150,0';break; 
    case 7: col_B=C'0,70,255';col_R=C'255,70,0';col_G=C'0,155,0';break; 
    case 8: col_B=C'0,80,255';col_R=C'255,80,0';col_G=C'0,160,0';break; 
    case 9: col_B=C'0,90,255';col_R=C'255,90,0';col_G=C'0,165,0';break; 
    case 10: col_B=C'0,100,255';col_R=C'255,100,0';col_G=C'0,170,0';break; 
    case 11: col_B=C'0,110,255';col_R=C'255,110,0';col_G=C'0,175,0';break; 
    case 12: col_B=C'0,120,255';col_R=C'255,120,0';col_G=C'0,180,0';break; 
    case 13: col_B=C'0,130,255';col_R=C'255,130,0';col_G=C'0,185,0';break; 
    case 14: col_B=C'0,140,255';col_R=C'255,140,0';col_G=C'0,190,0';break; 
    case 15: col_B=C'0,150,255';col_R=C'255,150,0';col_G=C'0,195,0';break; 
    case 16: col_B=C'0,160,255';col_R=C'255,160,0';col_G=C'0,200,0';break; 
    case 17: col_B=C'0,170,255';col_R=C'255,170,0';col_G=C'0,205,0';break; 
    case 18: col_B=C'0,180,255';col_R=C'255,180,0';col_G=C'0,210,0';break; 
    case 19: col_B=C'0,190,255';col_R=C'255,190,0';col_G=C'0,215,0';break; 
    case 20: col_B=C'0,200,255';col_R=C'255,200,0';col_G=C'0,220,0';break; 
   
    } 
    if(flag==1 && colorRB_RG)col=col_B;
     else {
      if(flag==1 && !colorRB_RG)col=col_G;
       else {
        if(flag==(-1)) col=col_R; 
         else {
           col=text_color;  }}}  }
  return(col); }  
 //------------------------------------------------------------------------ 


Вот что у меня получилось.

 

В общем отлично! Единственное визуальное раздражение вызывает наименование валюты и период в верхней строчке находящиеся не посередине рамки, я сам не смог выставить четко по середине.
И ещё я не смог нанести на один график несколько индикаторов одинаковой валюты, но с разным периодом, то есть, сделать так чтобы на одном графике выставить несколько индикаторов EUR с разными таймфреймами MN, W1, D1, H4, H1, M30, M15, M5. Это очень негууд! Хотелось бы это как-то исправить. И ещё, можно было бы исправить шрифт валют в нижней строчке на чуть-чуть больший по размеру (если это возможно).

 

//+------------------------------------------------------------------+
//|                                           All against all.v4 mg4 |                   
//|                                                  vorese          |
//|                                              vorese@yandex.ru    |
//+------------------------------------------------------------------+
#property indicator_chart_window
extern string symbol="EUR";// любая валюта
extern string note="Period_(0,M1,M5,M15,M30,H1,H4,D1,W1,MN)";
extern string period_="0";//M1,M5,M15,M30,H1,H4,D1,W1,MN . Если 0- период текущего графика.
extern int X_DISTANCE=0; // располож. по горизонтали
extern int Y_DISTANCE=0; // располож. по вертикали
extern color border_color=Silver; // цвет рамки 
extern color text_color=Silver; // цвет верхней строки 
extern color CurrCol_up=Aqua; // цвет обозн.валюты и % растущего бара 
extern color CurrCol_down=Gold; // цвет обозн.валюты и % падающего бара
extern bool colorRB_RG=true;  //цвет гистограммы. true- красный синий.false- красный зеленый.
extern bool invertColGist=false;//инверт. цвета гистограммы
extern bool brightness_gradation=false;//градации яркости
//========используемые вал.пары =======================================
// можно удалять и добавлять любые валютные пары , в любой последовательности .
// В  currency_pair[] и в  count_curr должно быть указано 
// кол-во имеющихся в массиве валютных пар. 
string currency_pair[26]= {"EURUSD","GBPUSD","USDJPY","USDCHF","EURGBP","EURJPY","EURCHF",
 "EURAUD","GBPJPY","GBPCHF","AUDJPY","NZDJPY","NZDCHF","AUDNZD","CHFJPY","EURCAD",
 "AUDCAD","CADJPY","EURNZD","GBPAUD","GBPCAD","AUDCHF","CADCHF","AUDUSD","USDCAD","NZDUSD"};
int count_curr=26; // количество вал.пар 
//=====================================================================
string mas_pair[7]; 
int mas_flags [7]; 
string mas_currency[7]; 
int total; 
//---------------------------------------------------------------------   
int line_x[5]={3,13,23,67,80};// координаты горизонт.линий
int TF;
color color_currency,col_00;
//=====================================================================
int init()
  {
//--------------валютные пары------------------------------------------ 
    for(int i=0;i<count_curr;i++)
     { 
            if(StringSubstr(currency_pair[i],0,3)==symbol) 
                { mas_pair[total]=currency_pair[i];
                    mas_flags[total]=(-1);
                      mas_currency[total]=StringSubstr(currency_pair[i],3,0);
                        total+=1;    }
           if(StringSubstr(currency_pair[i],3,0)==symbol) 
                { mas_pair[total]=currency_pair[i];
                    mas_flags[total]=1;
                      mas_currency[total]=StringSubstr(currency_pair[i],0,3); 
                        total+=1;    }    
                                         }
 //--------------- период --------------------------------------------
      if(period_=="M1")TF=1;
   else {
      if(period_=="M5")TF=5;
   else {
     if(period_=="M15")TF=15;
   else {
     if(period_=="M30")TF=30;
   else {
     if(period_=="H1")TF=60;
   else {
     if(period_=="H4")TF=240;
   else {
     if(period_=="D1")TF=1440;
   else {
     if(period_=="W1")TF=10080;
   else {
     if(period_=="MN")TF=43200;
   else {
     if(period_=="0")TF=0;
   else {  Alert("Ошибка установки периода:  "+period_);
                     }}}}}}}}}}
 //-------------------------------------------------------------------  
   // создать горизонт. линии
  for(int x=0;x<5;x++)  {
  if(x!=3)col_00=border_color;
  else
       col_00=text_color;
   ObjectCreate(symbol+"line-x"+x+period_, OBJ_LABEL, 0, 0, 0);
   ObjectSet(symbol+"line-x"+x+period_, OBJPROP_CORNER, 3);
   ObjectSet(symbol+"line-x"+x+period_, OBJPROP_XDISTANCE,X_DISTANCE+7);
   ObjectSet(symbol+"line-x"+x+period_, OBJPROP_YDISTANCE, Y_DISTANCE+line_x[x]);
   ObjectSetText(symbol+"line-x"+x+period_,"_________________",7,"Verdana",col_00); 
                     }
 //---------------------------------------------------------------------
   // создать вертикал. линии
   int c,y,r;
      for(c=0;c<2;c++) {
        if(c==1)r=103;
      for( y=0;y<4;y++)  {
   ObjectCreate(y+symbol+"line-y"+c+period_, OBJ_LABEL, 0, 0, 0);
   ObjectSet(y+symbol+"line-y"+c+period_, OBJPROP_CORNER, 3);
   ObjectSet(y+symbol+"line-y"+c+period_, OBJPROP_XDISTANCE,X_DISTANCE+1+r);
   ObjectSet(y+symbol+"line-y"+c+period_, OBJPROP_YDISTANCE, Y_DISTANCE+3+y*19);
   ObjectSetText(y+symbol+"line-y"+c+period_,"|",16,"Verdana",border_color); }
                     } 
  //--------------------------------------------------------------------- 
  // текст                     
   ObjectCreate(symbol+"text"+period_, OBJ_LABEL, 0, 0, 0);
   ObjectSet(symbol+"text"+period_, OBJPROP_CORNER, 3);
   ObjectSet(symbol+"text"+period_, OBJPROP_XDISTANCE,X_DISTANCE+38);
   ObjectSet(symbol+"text"+period_, OBJPROP_YDISTANCE, Y_DISTANCE+68); 
   ObjectSetText(symbol+"text"+period_,symbol+"_"+period_,7,"Verdana",text_color);                                                          
   return(0);
  }                               
//=======================================================================
int deinit()
  { 
    int n,m;
      for( n=0;n<7;n++)  // удалить все об'екты 
     {  
       ObjectDelete(symbol+"perc"+n+period_);
       ObjectDelete(symbol+"curr"+n+period_);
       if(n<5) ObjectDelete(symbol+"line-x"+n+period_);  
  //------       
      for( m=0;m<=20;m++)
     {
       ObjectDelete(m+symbol+"gist"+n+period_);
       if(m<2 && n<4) ObjectDelete(n+symbol+"line-y"+m+period_);
                               } } 
       ObjectDelete(symbol+"text"+period_);                        
   return(0);
  }
//======================================================================
int start()
  {
  int i,w,z;
  double percent,bid,open,high,low; 
  int flag,count;  
  for( z=0;z<total;z++)  
    { 
      for( w=0;w<=20;w++) {
       ObjectDelete(w+symbol+"gist"+z+period_); //удалить гистограмму перед обновлением
                              }  
   percent=0; 
   flag=0;
   count=0;           
//---------------------------------------------------------------------
     // обновить данные
    RefreshRates();
    bid=MarketInfo(mas_pair[z], MODE_BID );
    open=iOpen(mas_pair[z],TF,0);
    high=iHigh(mas_pair[z],TF,0);
    low=iLow(mas_pair[z],TF,0);   
//---------------------------------------------------------------------  
    // расчет процентов
   if(bid>open && high!=open && bid>0)   
       { percent=(bid-open)/(high-open)*100; // проц.растущего бара
         flag=1;
         count=NormalizeDouble(percent/5,0); }
       else {
         if(bid<open && low!=open && bid>0)
       { percent=(open-bid)/(open-low)*100; // проц.падающего бара
         flag=(-1);  
         count=NormalizeDouble(percent/5,0); } }
//-------------------------------------------------------------------- 
         // при переключении ТФ//
    if(percent>100)percent=100; 
    if(count>20)count=20; 
 //-------------------------------------------------------------------     
         // инверт.цвета гистограммы
   if(invertColGist) flag=flag*mas_flags[z]*(-1);  
      else
         flag=flag*mas_flags[z];   
//-------------------------------------------------------------------- 
     //-- цвет валюты и процентов
  if(flag==1)color_currency=CurrCol_up;
    else {
    if(flag==(-1))color_currency=CurrCol_down;
    else {
          color_currency=text_color;  }}
//--------------------------------------------------------------------
 if(bid>0)  {           //если вал. пара есть в терминале
  // проценты     
   ObjectCreate(symbol+"perc"+z+period_, OBJ_LABEL, 0, 0, 0);
   ObjectSet(symbol+"perc"+z+period_, OBJPROP_CORNER, 3);
   ObjectSet(symbol+"perc"+z+period_, OBJPROP_XDISTANCE,X_DISTANCE+94-z*14);
   ObjectSet(symbol+"perc"+z+period_, OBJPROP_YDISTANCE, Y_DISTANCE+15);
   ObjectSetText(symbol+"perc"+z+period_,DoubleToStr(percent,0),5,"Verdana",color_currency); 
                   }
//-------------------------------------------------------------------- 
  // валюта   
   ObjectCreate(symbol+"curr"+z+period_, OBJ_LABEL, 0, 0, 0);
   ObjectSet(symbol+"curr"+z+period_, OBJPROP_CORNER, 3);
   ObjectSet(symbol+"curr"+z+period_, OBJPROP_XDISTANCE,X_DISTANCE+94-z*14);
   ObjectSet(symbol+"curr"+z+period_, OBJPROP_YDISTANCE, Y_DISTANCE+5);
   ObjectSetText(symbol+"curr"+z+period_,mas_currency[z],4,"Verdana",color_currency);        
//--------------------------------------------------------------------- 
  // гистограмма 
     for( i=0;i<=count;i++) {  
   ObjectCreate(i+symbol+"gist"+z+period_, OBJ_LABEL, 0, 0, 0);
   ObjectSet(i+symbol+"gist"+z+period_, OBJPROP_CORNER, 3);
   ObjectSet(i+symbol+"gist"+z+period_, OBJPROP_XDISTANCE,X_DISTANCE+91-z*14);
   ObjectSet(i+symbol+"gist"+z+period_, OBJPROP_YDISTANCE, Y_DISTANCE+3+i*2);
   ObjectSetText(i+symbol+"gist"+z+period_,"-",30,"Verdana",f_Color(i,flag));  
                       } }  
//---------------------------------------------------------------------                     
   return(0);
  }
//=====================================================================
//============ цвет синий красный зеленый==============================      
color f_Color (int num,int flag) 
{   color col_R,col_B,col,col_G;
if(!brightness_gradation ) {
 if(flag==1 && colorRB_RG)col=Blue;
     else {
      if(flag==1 && !colorRB_RG)col=Green;
       else {
        if(flag==(-1)) col=Red; 
         else {
           col=text_color;  }}}  }
     else {      
  switch(num) 
  { case 0: col_B=C'0,0,255';col_R=C'255,0,0';col_G=C'0,90,0';break; 
    case 1: col_B=C'0,10,255';col_R=C'255,10,0';col_G=C'0,100,0';break; 
    case 2: col_B=C'0,20,255';col_R=C'255,20,0';col_G=C'0,110,0';break; 
    case 3: col_B=C'0,30,255';col_R=C'255,30,0';col_G=C'0,120,0';break; 
    case 4: col_B=C'0,40,255';col_R=C'255,40,0';col_G=C'0,130,0';break; 
    case 5: col_B=C'0,50,255';col_R=C'255,50,0';col_G=C'0,140,0';break; 
    case 6: col_B=C'0,60,255';col_R=C'255,60,0';col_G=C'0,150,0';break; 
    case 7: col_B=C'0,70,255';col_R=C'255,70,0';col_G=C'0,155,0';break; 
    case 8: col_B=C'0,80,255';col_R=C'255,80,0';col_G=C'0,160,0';break; 
    case 9: col_B=C'0,90,255';col_R=C'255,90,0';col_G=C'0,165,0';break; 
    case 10: col_B=C'0,100,255';col_R=C'255,100,0';col_G=C'0,170,0';break; 
    case 11: col_B=C'0,110,255';col_R=C'255,110,0';col_G=C'0,175,0';break; 
    case 12: col_B=C'0,120,255';col_R=C'255,120,0';col_G=C'0,180,0';break; 
    case 13: col_B=C'0,130,255';col_R=C'255,130,0';col_G=C'0,185,0';break; 
    case 14: col_B=C'0,140,255';col_R=C'255,140,0';col_G=C'0,190,0';break; 
    case 15: col_B=C'0,150,255';col_R=C'255,150,0';col_G=C'0,195,0';break; 
    case 16: col_B=C'0,160,255';col_R=C'255,160,0';col_G=C'0,200,0';break; 
    case 17: col_B=C'0,170,255';col_R=C'255,170,0';col_G=C'0,205,0';break; 
    case 18: col_B=C'0,180,255';col_R=C'255,180,0';col_G=C'0,210,0';break; 
    case 19: col_B=C'0,190,255';col_R=C'255,190,0';col_G=C'0,215,0';break; 
    case 20: col_B=C'0,200,255';col_R=C'255,200,0';col_G=C'0,220,0';break; 
   
    } 
    if(flag==1 && colorRB_RG)col=col_B;
     else {
      if(flag==1 && !colorRB_RG)col=col_G;
       else {
        if(flag==(-1)) col=col_R; 
         else {
           col=text_color;  }}}  }
  return(col); }  
 //------------------------------------------------------------------------ 
 
vorese :

//+------------------------------------------------------------------+
//|                                           All against all.v4 mg4 |                   
//|                                                  vorese          |
//|                                              vorese@yandex.ru    |
//+------------------------------------------------------------------+
#property indicator_chart_window
extern string symbol="EUR";// любая валюта
extern string note="Period_(0,M1,M5,M15,M30,H1,H4,D1,W1,MN)";
extern string period_="0";//M1,M5,M15,M30,H1,H4,D1,W1,MN . Если 0- период текущего графика.
extern int X_DISTANCE=0; // располож. по горизонтали
extern int Y_DISTANCE=0; // располож. по вертикали
extern color border_color=Silver; // цвет рамки 
extern color text_color=Silver; // цвет верхней строки 
extern color CurrCol_up=Aqua; // цвет обозн.валюты и % растущего бара 
extern color CurrCol_down=Gold; // цвет обозн.валюты и % падающего бара
extern bool colorRB_RG=true;  //цвет гистограммы. true- красный синий.false- красный зеленый.
extern bool invertColGist=false;//инверт. цвета гистограммы
extern bool brightness_gradation=false;//градации яркости
//========используемые вал.пары =======================================
// можно удалять и добавлять любые валютные пары , в любой последовательности .
// В  currency_pair[] и в  count_curr должно быть указано 
// кол-во имеющихся в массиве валютных пар. 
string currency_pair[26]= {"EURUSD","GBPUSD","USDJPY","USDCHF","EURGBP","EURJPY","EURCHF",
 "EURAUD","GBPJPY","GBPCHF","AUDJPY","NZDJPY","NZDCHF","AUDNZD","CHFJPY","EURCAD",
 "AUDCAD","CADJPY","EURNZD","GBPAUD","GBPCAD","AUDCHF","CADCHF","AUDUSD","USDCAD","NZDUSD"};
int count_curr=26; // количество вал.пар 
//=====================================================================
string mas_pair[7]; 
int mas_flags [7]; 
string mas_currency[7]; 
int total; 
//---------------------------------------------------------------------   
int line_x[5]={3,13,23,67,80};// координаты горизонт.линий
int TF;
color color_currency,col_00;
//=====================================================================
int init()
  {
//--------------валютные пары------------------------------------------ 
    for(int i=0;i<count_curr;i++)
     { 
            if(StringSubstr(currency_pair[i],0,3)==symbol) 
                { mas_pair[total]=currency_pair[i];
                    mas_flags[total]=(-1);
                      mas_currency[total]=StringSubstr(currency_pair[i],3,0);
                        total+=1;    }
           if(StringSubstr(currency_pair[i],3,0)==symbol) 
                { mas_pair[total]=currency_pair[i];
                    mas_flags[total]=1;
                      mas_currency[total]=StringSubstr(currency_pair[i],0,3); 
                        total+=1;    }    
                                         }
 //--------------- период --------------------------------------------
      if(period_=="M1")TF=1;
   else {
      if(period_=="M5")TF=5;
   else {
     if(period_=="M15")TF=15;
   else {
     if(period_=="M30")TF=30;
   else {
     if(period_=="H1")TF=60;
   else {
     if(period_=="H4")TF=240;
   else {
     if(period_=="D1")TF=1440;
   else {
     if(period_=="W1")TF=10080;
   else {
     if(period_=="MN")TF=43200;
   else {
     if(period_=="0")TF=0;
   else {  Alert("Ошибка установки периода:  "+period_);
                     }}}}}}}}}}
 //-------------------------------------------------------------------  
   // создать горизонт. линии
  for(int x=0;x<5;x++)  {
  if(x!=3)col_00=border_color;
  else
       col_00=text_color;
   ObjectCreate(symbol+"line-x"+x+period_, OBJ_LABEL, 0, 0, 0);
   ObjectSet(symbol+"line-x"+x+period_, OBJPROP_CORNER, 3);
   ObjectSet(symbol+"line-x"+x+period_, OBJPROP_XDISTANCE,X_DISTANCE+7);
   ObjectSet(symbol+"line-x"+x+period_, OBJPROP_YDISTANCE, Y_DISTANCE+line_x[x]);
   ObjectSetText(symbol+"line-x"+x+period_,"_________________",7,"Verdana",col_00); 
                     }
 //---------------------------------------------------------------------
   // создать вертикал. линии
   int c,y,r;
      for(c=0;c<2;c++) {
        if(c==1)r=103;
      for( y=0;y<4;y++)  {
   ObjectCreate(y+symbol+"line-y"+c+period_, OBJ_LABEL, 0, 0, 0);
   ObjectSet(y+symbol+"line-y"+c+period_, OBJPROP_CORNER, 3);
   ObjectSet(y+symbol+"line-y"+c+period_, OBJPROP_XDISTANCE,X_DISTANCE+1+r);
   ObjectSet(y+symbol+"line-y"+c+period_, OBJPROP_YDISTANCE, Y_DISTANCE+3+y*19);
   ObjectSetText(y+symbol+"line-y"+c+period_,"|",16,"Verdana",border_color); }
                     } 
  //--------------------------------------------------------------------- 
  // текст                     
   ObjectCreate(symbol+"text"+period_, OBJ_LABEL, 0, 0, 0);
   ObjectSet(symbol+"text"+period_, OBJPROP_CORNER, 3);
   ObjectSet(symbol+"text"+period_, OBJPROP_XDISTANCE,X_DISTANCE+38);
   ObjectSet(symbol+"text"+period_, OBJPROP_YDISTANCE, Y_DISTANCE+68); 
   ObjectSetText(symbol+"text"+period_,symbol+"_"+period_,7,"Verdana",text_color);                                                          
   return(0);
  }                               
//=======================================================================
int deinit()
  { 
    int n,m;
      for( n=0;n<7;n++)  // удалить все об'екты 
     {  
       ObjectDelete(symbol+"perc"+n+period_);
       ObjectDelete(symbol+"curr"+n+period_);
       if(n<5) ObjectDelete(symbol+"line-x"+n+period_);  
  //------       
      for( m=0;m<=20;m++)
     {
       ObjectDelete(m+symbol+"gist"+n+period_);
       if(m<2 && n<4) ObjectDelete(n+symbol+"line-y"+m+period_);
                               } } 
       ObjectDelete(symbol+"text"+period_);                        
   return(0);
  }
//======================================================================
int start()
  {
  int i,w,z;
  double percent,bid,open,high,low; 
  int flag,count;  
  for( z=0;z<total;z++)  
    { 
      for( w=0;w<=20;w++) {
       ObjectDelete(w+symbol+"gist"+z+period_); //удалить гистограмму перед обновлением
                              }  
   percent=0; 
   flag=0;
   count=0;           
//---------------------------------------------------------------------
     // обновить данные
    RefreshRates();
    bid=MarketInfo(mas_pair[z], MODE_BID );
    open=iOpen(mas_pair[z],TF,0);
    high=iHigh(mas_pair[z],TF,0);
    low=iLow(mas_pair[z],TF,0);   
//---------------------------------------------------------------------  
    // расчет процентов
   if(bid>open && high!=open && bid>0)   
       { percent=(bid-open)/(high-open)*100; // проц.растущего бара
         flag=1;
         count=NormalizeDouble(percent/5,0); }
       else {
         if(bid<open && low!=open && bid>0)
       { percent=(open-bid)/(open-low)*100; // проц.падающего бара
         flag=(-1);  
         count=NormalizeDouble(percent/5,0); } }
//-------------------------------------------------------------------- 
         // при переключении ТФ//
    if(percent>100)percent=100; 
    if(count>20)count=20; 
 //-------------------------------------------------------------------     
         // инверт.цвета гистограммы
   if(invertColGist) flag=flag*mas_flags[z]*(-1);  
      else
         flag=flag*mas_flags[z];   
//-------------------------------------------------------------------- 
     //-- цвет валюты и процентов
  if(flag==1)color_currency=CurrCol_up;
    else {
    if(flag==(-1))color_currency=CurrCol_down;
    else {
          color_currency=text_color;  }}
//--------------------------------------------------------------------
 if(bid>0)  {           //если вал. пара есть в терминале
  // проценты     
   ObjectCreate(symbol+"perc"+z+period_, OBJ_LABEL, 0, 0, 0);
   ObjectSet(symbol+"perc"+z+period_, OBJPROP_CORNER, 3);
   ObjectSet(symbol+"perc"+z+period_, OBJPROP_XDISTANCE,X_DISTANCE+94-z*14);
   ObjectSet(symbol+"perc"+z+period_, OBJPROP_YDISTANCE, Y_DISTANCE+15);
   ObjectSetText(symbol+"perc"+z+period_,DoubleToStr(percent,0),5,"Verdana",color_currency); 
                   }
//-------------------------------------------------------------------- 
  // валюта   
   ObjectCreate(symbol+"curr"+z+period_, OBJ_LABEL, 0, 0, 0);
   ObjectSet(symbol+"curr"+z+period_, OBJPROP_CORNER, 3);
   ObjectSet(symbol+"curr"+z+period_, OBJPROP_XDISTANCE,X_DISTANCE+94-z*14);
   ObjectSet(symbol+"curr"+z+period_, OBJPROP_YDISTANCE, Y_DISTANCE+5);
   ObjectSetText(symbol+"curr"+z+period_,mas_currency[z],4,"Verdana",color_currency);        
//--------------------------------------------------------------------- 
  // гистограмма 
     for( i=0;i<=count;i++) {  
   ObjectCreate(i+symbol+"gist"+z+period_, OBJ_LABEL, 0, 0, 0);
   ObjectSet(i+symbol+"gist"+z+period_, OBJPROP_CORNER, 3);
   ObjectSet(i+symbol+"gist"+z+period_, OBJPROP_XDISTANCE,X_DISTANCE+91-z*14);
   ObjectSet(i+symbol+"gist"+z+period_, OBJPROP_YDISTANCE, Y_DISTANCE+3+i*2);
   ObjectSetText(i+symbol+"gist"+z+period_,"-",30,"Verdana",f_Color(i,flag));  
                       } }  
//---------------------------------------------------------------------                     
   return(0);
  }
//=====================================================================
//============ цвет синий красный зеленый==============================      
color f_Color (int num,int flag) 
{   color col_R,col_B,col,col_G;
if(!brightness_gradation ) {
 if(flag==1 && colorRB_RG)col=Blue;
     else {
      if(flag==1 && !colorRB_RG)col=Green;
       else {
        if(flag==(-1)) col=Red; 
         else {
           col=text_color;  }}}  }
     else {      
  switch(num) 
  { case 0: col_B=C'0,0,255';col_R=C'255,0,0';col_G=C'0,90,0';break; 
    case 1: col_B=C'0,10,255';col_R=C'255,10,0';col_G=C'0,100,0';break; 
    case 2: col_B=C'0,20,255';col_R=C'255,20,0';col_G=C'0,110,0';break; 
    case 3: col_B=C'0,30,255';col_R=C'255,30,0';col_G=C'0,120,0';break; 
    case 4: col_B=C'0,40,255';col_R=C'255,40,0';col_G=C'0,130,0';break; 
    case 5: col_B=C'0,50,255';col_R=C'255,50,0';col_G=C'0,140,0';break; 
    case 6: col_B=C'0,60,255';col_R=C'255,60,0';col_G=C'0,150,0';break; 
    case 7: col_B=C'0,70,255';col_R=C'255,70,0';col_G=C'0,155,0';break; 
    case 8: col_B=C'0,80,255';col_R=C'255,80,0';col_G=C'0,160,0';break; 
    case 9: col_B=C'0,90,255';col_R=C'255,90,0';col_G=C'0,165,0';break; 
    case 10: col_B=C'0,100,255';col_R=C'255,100,0';col_G=C'0,170,0';break; 
    case 11: col_B=C'0,110,255';col_R=C'255,110,0';col_G=C'0,175,0';break; 
    case 12: col_B=C'0,120,255';col_R=C'255,120,0';col_G=C'0,180,0';break; 
    case 13: col_B=C'0,130,255';col_R=C'255,130,0';col_G=C'0,185,0';break; 
    case 14: col_B=C'0,140,255';col_R=C'255,140,0';col_G=C'0,190,0';break; 
    case 15: col_B=C'0,150,255';col_R=C'255,150,0';col_G=C'0,195,0';break; 
    case 16: col_B=C'0,160,255';col_R=C'255,160,0';col_G=C'0,200,0';break; 
    case 17: col_B=C'0,170,255';col_R=C'255,170,0';col_G=C'0,205,0';break; 
    case 18: col_B=C'0,180,255';col_R=C'255,180,0';col_G=C'0,210,0';break; 
    case 19: col_B=C'0,190,255';col_R=C'255,190,0';col_G=C'0,215,0';break; 
    case 20: col_B=C'0,200,255';col_R=C'255,200,0';col_G=C'0,220,0';break; 
   
    } 
    if(flag==1 && colorRB_RG)col=col_B;
     else {
      if(flag==1 && !colorRB_RG)col=col_G;
       else {
        if(flag==(-1)) col=col_R; 
         else {
           col=text_color;  }}}  }
  return(col); }  
 //------------------------------------------------------------------------ 


Вот что у меня получилось:

В общем всё отлично! СПАСИБИЩе! Очень замечательный индикатор получился.
Единственное, что я бы изменил, - это - я бы не привязывал по цвету заголовок (валютную пару и период) к горизонтальной линии под ним. А в остальном всё гууд!

Мне тут пришла в голову ещё одна очень перспективная идея индикатора на основе вашего. Принцип её заключается в том, что на основе вашего индикатора написать индикатор, который будет показывать рост/падение валютной пары, например, EURUSD, но каждый столбик гистограммы должен означать рост или падение цены на каждом отдельно взятом таймфрейме этой валюты ( М1, М5, М15 ......MN).
То есть,
первый столбик гистограммы должен показывать для растущего бара (bid-open)/(high-open)* 100 и для падающего бара (open-bid)/(open-low)* 100 таймфрейма М1,
второй столбик гистограммы будет показывать для растущего бара (bid-open)/(high-open)* 100 и для падающего бара (open-bid)/(open-low)* 100 таймфрейма М5,
третий столбик гистограммы будет показывать для растущего бара (bid-open)/(high-open)* 100 и для падающего бара (open-bid)/(open-low)* 100 таймфрейма М15,
четвёрный столбик гистограммы будет показывать для растущего бара (bid-open)/(high-open)* 100 и для падающего бара (open-bid)/(open-low)* 100 таймфрейма М30
и так далее вплоть до таймфрейма MN.
Валюта индикатора может изменяться по желанию.

То есть, на выходе мы получает гистограмму состоящую из девяти столбиков, которая нам показывает процентную величину роста цены EURUSD нулевого бара на всех таймфреймах одновременно. Ну как вам идея?! На мой взгляд - замечательно. Это новый индикатор на старой основе. Новый индикатор - новая тема.

Вот заметил странное свойство индикатора: на разных таймфреймах одной и той же валюты индикатор рисует одну и ту же гистограмму. Когда он нарисовал три одинаковые гистограммы на трёх различных таймфреймах я подумал, что сейчас из компьютера прозвучит что-то типа "Bingo!"

Бывало и такое:

Это видимо - "Jackpot".
Интересное свойство индикатора, не правда ли? Что бы это могло быть?

 

В одном из предыдущих сообщений, где я показывал как изменить положение индикатора на графике,

на картинке видно именно такой индикатор .

 
lifewood :
vorese :

Это видимо - "Jackpot".
Интересное свойство индикатора, не правда ли? Что бы это могло быть?

На ТФ Н4, Н1, М30 и М15 первые пятнадцать минут после открытия свечи на Н4 все свечи одинаковые .

Причина обращения: