Кто-нибудь встречал каналы которые рисуются в зависимости от волатильности торгуемой пары? То есть чем больше волатильность тем больше канал. Я написал, но к сожалению ничего не получилось, получилась правда, но только верхняя линия а нижняя рисуется непонятно как...... Может у кого есть такого типа индикатор, чтобы велосипед не изобретать?
- Адаптация периодов МА от количества отрицательных сделок
- [Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2.
- Вопросы от начинающих MQL5 MT5 MetaTrader 5
Bollinger Bands, например. Есть у всех в комплекте поставки МТ, в двух вариантах.
Нет, немного не то. Квадратное отклонение я не хочу чтобы высчитывало, я хочу чтобы, если за последние n баров диапазон лежал в пределах 30 пунктов, например,ширина канала была одна. А при диапазоне в 40 другая. Что-либо подобное может кто встречал?
Нет не такой.... Я найду свой на другом компе и выложу что сделал, может кто поправит код....
#property indicator_chart_window #property indicator_buffers 3 #property indicator_color1 Red #property indicator_color2 Magenta #property indicator_color3 Blue //---- indicator buffers double ExtMapBuffer[]; double ExtMapBuffer_up[]; double ExtMapBuffer_do[]; //---- indicator parameters extern int MA_Period=8; extern int MA_Shift=0; //---- int ExtCountedBars=0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- drawing settings SetIndexBuffer(0,ExtMapBuffer); SetIndexStyle(0,DRAW_LINE); SetIndexLabel(0,"ema center "+MA_Period); SetIndexBuffer(1,ExtMapBuffer_up); SetIndexStyle(1,DRAW_LINE); SetIndexLabel(1,"up line"); SetIndexBuffer(2,ExtMapBuffer_do); SetIndexStyle(2,DRAW_LINE); SetIndexLabel(2,"bottom line"); }Вот такая шапка у меня в коде индикатора. Проблема в том что не рисуется буффер под номером 2. Если менять местами, то есть цифры 2 на 1 или 2 на 0, те линии которым присваиваются значения далее в коде прорисовываются правильно. А вот с индексом 2 линия рисоваться не хочет. Где может быть ошибка. Подскажите пожалуйста!!!
KING:
Вот такая шапка у меня в коде индикатора. Проблема в том что не рисуется буффер под номером 2. Если менять местами, то есть цифры 2 на 1 или 2 на 0, те линии которым присваиваются значения далее в коде прорисовываются правильно. А вот с индексом 2 линия рисоваться не хочет. Где может быть ошибка. Подскажите пожалуйста!!!
Вот такая шапка у меня в коде индикатора. Проблема в том что не рисуется буффер под номером 2. Если менять местами, то есть цифры 2 на 1 или 2 на 0, те линии которым присваиваются значения далее в коде прорисовываются правильно. А вот с индексом 2 линия рисоваться не хочет. Где может быть ошибка. Подскажите пожалуйста!!!
Невижу в коде ошибки.
Не вижу криминала. Ищите ниже.
#property indicator_chart_window #property indicator_buffers 3 #property indicator_color1 Red #property indicator_color2 Magenta #property indicator_color3 Blue //---- indicator buffers double ExtMapBuffer[]; double ExtMapBuffer_up[]; double ExtMapBuffer_do[]; //---- indicator parameters extern int MA_Period=8; extern int MA_Shift=0; //---- int ExtCountedBars=0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- drawing settings SetIndexBuffer(0,ExtMapBuffer); SetIndexStyle(0,DRAW_LINE); SetIndexLabel(0,"ema center "+MA_Period); SetIndexBuffer(1,ExtMapBuffer_up); SetIndexStyle(1,DRAW_LINE); SetIndexLabel(1,"up line"); SetIndexBuffer(2,ExtMapBuffer_do); SetIndexStyle(2,DRAW_LINE); SetIndexLabel(2,"bottom line"); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { if(Bars<=MA_Period) return(0); ExtCountedBars=IndicatorCounted(); //---- check for possible errors if (ExtCountedBars<0) return(-1); //---- last counted bar will be recounted if (ExtCountedBars>0) ExtCountedBars--; //---- //+------------------------------------------------------------------+ //| Exponential Moving Average | //+------------------------------------------------------------------+ double pr=2.0/(MA_Period+1); double indidigits = MarketInfo(Symbol(),MODE_DIGITS); double digi, l15, l30, l50; digi=15/MathPow(10,indidigits); //Alert (digi); int pos=Bars-2; if(ExtCountedBars>2) pos=Bars-ExtCountedBars-1; //---- main calculation loop l15=15/MathPow(10,indidigits); double range,ge; //Alert (range); while(pos>=0) { if(pos==Bars-2) ExtMapBuffer[pos+1]=Close[pos+1]; ExtMapBuffer[pos]=Close[pos]*pr+ExtMapBuffer[pos+1]*(1-pr); range =iCustom(NULL,0,"TR",0,pos); if (range<=22) { ExtMapBuffer_up[pos] = ExtMapBuffer[pos]+l15; ExtMapBuffer_do[pos] = ExtMapBuffer[pos]-l15; } if (range>20 && range<=45) { ExtMapBuffer_up[pos] = ExtMapBuffer[pos]+30/MathPow(10,indidigits); ExtMapBuffer_do[pos] = ExtMapBuffer[pos]-30/MathPow(10,indidigits); } if (range>45) { ExtMapBuffer_up[pos] = ExtMapBuffer[pos]+50/MathPow(10,indidigits); ExtMapBuffer_do[pos] = ExtMapBuffer[pos]-50/MathPow(10,indidigits); } pos--; } // ge =iCustom(NULL,0,"TR",0,2); // Alert (ge); } return(0);Все целиком. Я думаю что оибка именно сверху. Так как повторюсь что при изменении например:
SetIndexBuffer(0,ExtMapBuffer); SetIndexStyle(0,DRAW_LINE); SetIndexLabel(0,"ema center "+MA_Period); SetIndexBuffer(1,ExtMapBuffer_up); SetIndexStyle(1,DRAW_LINE); SetIndexLabel(1,"up line"); SetIndexBuffer(2,ExtMapBuffer_do); SetIndexStyle(2,DRAW_LINE); SetIndexLabel(2,"bottom line");на
SetIndexBuffer(0,ExtMapBuffer); SetIndexStyle(0,DRAW_LINE); SetIndexLabel(0,"ema center "+MA_Period); SetIndexBuffer(2,ExtMapBuffer_up); SetIndexStyle(2,DRAW_LINE); SetIndexLabel(2,"up line"); SetIndexBuffer(1,ExtMapBuffer_do); SetIndexStyle(1,DRAW_LINE); SetIndexLabel(1,"bottom line");
начинает рисоваться линия
ExtMapBuffer_do[]
Вот такая вот проблема.......
KING:
Кто-нибудь встречал каналы которые рисуются в зависимости от волатильности торгуемой пары? То есть чем больше волатильность тем больше канал. Я написал, но к сожалению ничего не получилось, получилась правда, но только верхняя линия а нижняя рисуется непонятно как...... Может у кого есть такого типа индикатор, чтобы велосипед не изобретать?
Кто-нибудь встречал каналы которые рисуются в зависимости от волатильности торгуемой пары? То есть чем больше волатильность тем больше канал. Я написал, но к сожалению ничего не получилось, получилась правда, но только верхняя линия а нижняя рисуется непонятно как...... Может у кого есть такого типа индикатор, чтобы велосипед не изобретать?
Файлы:
pricechannel.mq4
3 kb
Во первых у меня все линии отображаются
Во вторых я бы перед делением
ExtMapBuffer[pos]-50/MathPow(10,indidigits);
добавил бы проверку на ноль, чтоб не попасть на ошибку zero divide
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь