//+------------------------------------------------------------------+ //| AVR-4.mq4 | //| Copyright 2015, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property version "1.00" #property indicator_separate_window // отображение индикатора в отдельном окне #property indicator_buffers 2 // количество буферов индикатора #property indicator_color1 clrBlue // цвет отрисовки первого значения индикатора #property indicator_color2 clrRed // цвет отрисовки второго значения индикатора #property indicator_level1 15 // задаем уровни в окне отображения #property indicator_level2 50 #property indicator_level3 85 //--- input parameters // вводимые значения вручную input int barsToProcess=200; // количество свечей для счета double BayBuffer[], SellBuffer[] ; // наименование массивов получаемых значений с плавающей точкой //+------------------------------------------------------------------+ //| Custom indicator initialization function | // инициализация //+------------------------------------------------------------------+ int init() { IndicatorDigits(2); // количество знаков после запятой в получаемых значениях индикатора IndicatorBuffers(2); // количество буферов индикатора SetIndexBuffer(1, BayBuffer); // присваивание индекса "1" массиву со значением BAY SetIndexEmptyValue(1, -1); // присваивание массиву пустого значения SetIndexStyle(1, DRAW_HISTOGRAM); // присваивание массиву стиля рисования, в данном случае гистограмма SetIndexLabel(1,"bay" ); // присваивание массиву текста при наведении мышкой SetIndexBuffer(0, SellBuffer); // присваивание индекса "0" массиву со значением SELL SetIndexEmptyValue(0, -1); // присваивание массиву пустого значения SetIndexStyle(0, DRAW_HISTOGRAM); // присваивание массиву стиля рисования SetIndexLabel(0,"sell" ); // присваивание массиву текста при наведении мышкой return(0); // конец инициализации } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //считалка //+------------------------------------------------------------------+ int start(){ int limit; int counted_bars=IndicatorCounted(); double K, Z,W,N,T, path ,buyers,sellers ; // обявление получаемых переменных с плавающей точкой if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; for(int i=0;i Open[i]) { // расчет для растущей свечки W = High[i]- K* (High[i]-Close[i]); // точка равновесия с учетом "полезной работы" на верхней тени свечи N = Open[i] - K* (Open[i] -Low[i]) ; // точка равновесия с учетом "полезной работы" на нижней тени свечи T = Close[i] - K* (Close[i] - Open[i]) ; // точка равновесия с учетом "полезной работы" на теле растущей свечи buyers = (High[i] -W) + (Close[i] - T) + (Open[i] - N); // покупатели в пунктах sellers = Z - buyers; // продавцы в пунктах } else { // расчет для падающей свечки W = High[i]- K* (High[i] - Open[i]); // точка равновесия с учетом "полезной работы" на верхней тени свечи N = Close[i] - K* (Close[i] - Low[i]) ; // точка равновесия с учетом "полезной работы" на нижней тени свечи T = Open[i] - K* (Open[i] - Close[i]) ; // точка равновесия с учетом "полезной работы" на теле падающей свечи sellers = (W -Open[i]) + (T - Close[i]) + (N - Low[i]) ; // продавцы в пунктах buyers = Z - sellers ; // покупатели в пунктах } double BAY =100*buyers/(buyers+sellers) ; // покупатели в процентах BayBuffer[i] = BAY ; // сохранение полученного значения в массиве double SELL = 100*sellers/(buyers+ sellers); // продавцы в процентах SellBuffer[i] = SELL ; // сохранение полученного значения в массиве if(BayBuffer[i]>SellBuffer[i]){ BayBuffer[i]=BAY;SellBuffer[i]= 0; } // если покупателей больше, чем продавцов ,то отрисовываются только покупатели else { if(BayBuffer[i]