Потому он такой и красивый - потому что практически не применимый. Рассчитывается средняя и средняя от нее, стрелки возникают при их пересечении. Мудрить тут нечего. Если сделать по-честному, то ничего особенного.
#property copyright "" #property link "" #property strict //---- indicator settings #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Blue #property indicator_color2 Red //---- indicator parameters extern int period = 4; //period extern int shift = 0; //shift - сдвиг по бару //---- indicator buffers double BufferUp[],BufferDn[],Ma[],MaOn[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init(){ IndicatorBuffers(4); SetIndexBuffer(0,BufferUp); SetIndexStyle(0,DRAW_ARROW,2); SetIndexArrow(0,233); SetIndexBuffer(1,BufferDn); SetIndexStyle(1,DRAW_ARROW,2); SetIndexArrow(1,234); SetIndexBuffer(2,Ma); SetIndexBuffer(3,MaOn); return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int deinit() { ObjectDelete("low"); ObjectDelete("high"); return(0); } //+----------------------------------------------------------------------+ //| Moving Average of Oscillator | //+----------------------------------------------------------------------+ int start() { int ic=IndicatorCounted(); int limit=Bars-ic-1; if(ic==0){ limit-=(2+shift); } for(int i=limit; i>=0; i--)Ma[i]=iMA(NULL,0,period,0,MODE_EMA,PRICE_CLOSE,i); for(int i=limit; i>=0; i--)MaOn[i]=iMAOnArray(Ma,limit,period,0,MODE_EMA,i); for(int i=limit; i>=0; i--){ double y0=MaOn[i+shift]; double y1=MaOn[i+1+shift]; double y2=MaOn[i+2+shift]; if(y0-y1<0 && y1-y2>0){ BufferDn[i]=iHigh(Symbol(),0,i); } if(y0-y1>0 && y1-y2<0){ BufferUp[i]=iLow(Symbol(),0,i); } } //---- done return(0); } //+---------------------------------------------------------------------+
Спасибо, очень помогли! Попробуем применить, понадеемся на Русский Авось!

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Всем привет! Ребята, есть индикатор, рисует стрелочки. Когда накидываешь его на график - на истории отрисовывает стрелки нормально. Когда на графике стоит, стрелки шпарит почти на каждой свече, и даже на одной свече разнонаправленные может нарисовать.
Мне кажется, он постоянно буферы переписывает почему-то. Но не факт.
Пробовал делать каждые N-секунд его переинициализацию путем вызова init() каждые, допустим, 5 секунд. Но че-то он не хочет.
Буду признателен за любую помощь.