//+------------------------------------------------------------------+ //| Если интересны подробности, пишите на faza9109@mail.ru | //+------------------------------------------------------------------+ #property indicator_chart_window //+------------------------------------------------------------------+ extern int Per=8000, //Количество баров для расчета Sft=1000; //Индекс последнего бара для расчета //+------------------------------------------------------------------+ int Count, //Счетчик количества раз, когда встречается конкретная котировка j i; //Счетчик double Hg,Lw, //Максимум и минимум расчетного периода j; //Котировка string name; //Имя объекта color clr; //Цвет полосы //+------------------------------------------------------------------+ int start() { if (IndicatorCounted()=Sft; i--) //Цикл по всем барам расчетного периода { if(j>=Low [i] && j<=High[i]) //Определяем, входит ли наша котировка j в бар i Count++; //Считаем, сколько раз данная котировка встречается в расчетном периоде } name="price="+j; clr=Clrr(Count); //Вызываем функцию определения цвета ObjectCreate(name,16,0,Time[Per+Sft],j+Point,Time[0],j); //Рисуем полосу ObjectSet (name,6,clr); //И определяем ей цвет } return(0); } //+------------------------------------------------------------------+ int init() { Print(Bars); if(Bars<(Per+Sft)) Alert("Измените входные параметры, недостаточно баров на графике"); return(0); } //+------------------------------------------------------------------+ int deinit() { ObjectsDeleteAll(); //При удалении индикатора из окна, удаляем все объекты return(0); } //+------------------------------------------------------------------+ color Clrr(int c) //Функция определения цвета { color A; int v= MathCeil(c/2); switch(v) { case 0: A=C'0,0,100'; break; case 1: A=C'0,0,102'; break; case 21: A=C'0,0,142'; break; case 41: A=C'0,0,182'; break; case 2: A=C'0,0,104'; break; case 22: A=C'0,0,144'; break; case 42: A=C'0,0,184'; break; case 3: A=C'0,0,106'; break; case 23: A=C'0,0,146'; break; case 43: A=C'0,0,186'; break; case 4: A=C'0,0,108'; break; case 24: A=C'0,0,148'; break; case 44: A=C'0,0,188'; break; case 5: A=C'0,0,110'; break; case 25: A=C'0,0,150'; break; case 45: A=C'0,0,190'; break; case 6: A=C'0,0,112'; break; case 26: A=C'0,0,152'; break; case 46: A=C'0,0,192'; break; case 7: A=C'0,0,114'; break; case 27: A=C'0,0,154'; break; case 47: A=C'0,0,194'; break; case 8: A=C'0,0,116'; break; case 28: A=C'0,0,156'; break; case 48: A=C'0,0,196'; break; case 9: A=C'0,0,118'; break; case 29: A=C'0,0,158'; break; case 49: A=C'0,0,198'; break; case 10: A=C'0,0,120'; break; case 30: A=C'0,0,160'; break; case 50: A=C'0,0,200'; break; case 11: A=C'0,0,122'; break; case 31: A=C'0,0,162'; break; case 51: A=C'0,0,202'; break; case 12: A=C'0,0,124'; break; case 32: A=C'0,0,164'; break; case 52: A=C'0,0,204'; break; case 13: A=C'0,0,126'; break; case 33: A=C'0,0,166'; break; case 53: A=C'0,0,206'; break; case 14: A=C'0,0,128'; break; case 34: A=C'0,0,168'; break; case 54: A=C'0,0,208'; break; case 15: A=C'0,0,130'; break; case 35: A=C'0,0,170'; break; case 55: A=C'0,0,210'; break; case 16: A=C'0,0,132'; break; case 36: A=C'0,0,172'; break; case 56: A=C'0,0,212'; break; case 17: A=C'0,0,134'; break; case 37: A=C'0,0,174'; break; case 57: A=C'0,0,214'; break; case 18: A=C'0,0,136'; break; case 38: A=C'0,0,176'; break; case 58: A=C'0,0,216'; break; case 19: A=C'0,0,138'; break; case 39: A=C'0,0,178'; break; case 59: A=C'0,0,218'; break; case 20: A=C'0,0,140'; break; case 40: A=C'0,0,180'; break; case 60: A=C'0,0,220'; break; default: A=C'0,0,222'; } return(A); }