Индикатор Heiken AshiR. Использовать не визуально. Спасибо, что откликнулись. Загружать файл не разрешает форум, поэтому показываю его код. // //| Heiken AshiR.mq4 | //| //---- отрисовка индикатора в отдельном окне #property indicator_separate_window //---- количество индикаторных буферов #property indicator_buffers 2 //---- цвета индикатора #property indicator_color1 Lime #property indicator_color2 Red //---- верхнее и нижнее ограничение шкалы окна индикатора #property indicator_maximum 1.1 #property indicator_minimum 0.9 //---- толщина индикаторных линий #property indicator_width1 1 #property indicator_width2 1 //---- ВХОДНЫЕ ПАРАМЕТРЫ ИНДИКАТОРА extern int Simbol=110; //---- индикаторные буферы double HighBuffer[]; double LowBuffer []; //+------------------------------------------------------------------+ //| Heiken AshiR initialization function | //+------------------------------------------------------------------+ int init() { //---- Стиль исполнения графика виде символов SetIndexStyle(0,DRAW_ARROW); SetIndexStyle(1,DRAW_ARROW); //---- Определение стиля точечных объектов SetIndexArrow(0,Simbol); SetIndexArrow(1,Simbol); //---- 2 индикаторных буфера использованы для счёта SetIndexBuffer(0,HighBuffer); SetIndexBuffer(1,LowBuffer ); //---- установка значений индикатора, которые не будут видимы на графике SetIndexEmptyValue(0,0); SetIndexEmptyValue(1,0); //---- имена для окон данных и лэйбы для субъокон IndicatorShortName("Heiken Ashi"); SetIndexLabel (0,"Heiken Ashi"); SetIndexLabel (1,"Heiken Ashi"); //---- установка номера бара, начиная с которого будет отрисовываться индикатор SetIndexDrawBegin(0,1); SetIndexDrawBegin(1,1); //---- return(0); } //+------------------------------------------------------------------+ //| Heiken AshiR iteration function | //+------------------------------------------------------------------+ int start() { //---- Введение переменных с плавающей точкой double Trend; //----+ Введение целых переменных и получение уже подсчитанных баров int MaxBar,limit,counted_bars=IndicatorCounted(); //---- проверка на возможные ошибки if (counted_bars<0)return(-1); //---- последний подсчитанный бар должен быть пересчитан if (counted_bars>0) counted_bars--; //---- определение номера самого старого бара, начиная с которого будет произедён пересчёт новых баров MaxBar=Bars-2; limit=(Bars-1-counted_bars); //---- инициализация нуля if (limit>MaxBar) { limit=MaxBar; HighBuffer[bars-1]=0; LowBuffer [bars-1]=0; } //---- for (int bar=limit; bar>=0;bar--) { Trend = iCustom(NULL,0,"Heiken Ashi#",1,bar)-iCustom(NULL,0,"Heiken Ashi#",0,bar); if (Trend>0){HighBuffer[bar]=1; LowBuffer [bar]=0;} if (Trend<0){LowBuffer [bar]=1; HighBuffer[bar]=0;} } return(0); } //+---------------------------------------------------------------------------------+