Это ошибка в описании функции (непонятно, почему неправильно описали, хотя в функции iBands всё описано правильно). На самом деле этот параметр должен быть целым, точно таким же, как и у индикатора Bollinger Bands, который накладывается на график вручную.
У функции iBandsOnArray 7 параметров.
Спасибо, что указали - мы поправим справку и всплывающую подсказку в MetaEditor
У функции iBandsOnArray 7 параметров.
Спасибо, что указали - мы поправим справку и всплывающую подсказку в MetaEditor
Хм... позвольте... Вот текст индикатора, не встроенного Bands, а пользовательского, но написанного Вами, т.е. идущего в стандартной поставке. Обратите внимание на "extern double BandsDeviations=2.0;"
и далее четко видно, что при расчетах результаты ф-ции при BandsDeviations=1.5 и BandsDeviations=1 различаются. Т.е. возможно дробное отклонение. Встроенный же индикатор Bands действительно работает только с целыми отклонениями.
Вопрос: Почему разная работа ф-ций и индикаторов? Почему бы не привести все к одному стандарту? (желательно к дробным отклонениям. ;о))
и далее четко видно, что при расчетах результаты ф-ции при BandsDeviations=1.5 и BandsDeviations=1 различаются. Т.е. возможно дробное отклонение. Встроенный же индикатор Bands действительно работает только с целыми отклонениями.
Вопрос: Почему разная работа ф-ций и индикаторов? Почему бы не привести все к одному стандарту? (желательно к дробным отклонениям. ;о))
//+------------------------------------------------------------------+ //| Bands.mq4 | //| Copyright © 2005, MetaQuotes Software Corp. | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, MetaQuotes Software Corp." #property link "http://www.metaquotes.net/" #property indicator_chart_window #property indicator_buffers 3 #property indicator_color1 LightSeaGreen #property indicator_color2 LightSeaGreen #property indicator_color3 LightSeaGreen //---- indicator parameters extern int BandsPeriod=20; extern int BandsShift=0; extern double BandsDeviations=2.0; //---- buffers double MovingBuffer[]; double UpperBuffer[]; double LowerBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,MovingBuffer); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,UpperBuffer); SetIndexStyle(2,DRAW_LINE); SetIndexBuffer(2,LowerBuffer); //---- SetIndexDrawBegin(0,BandsPeriod+BandsShift); SetIndexDrawBegin(1,BandsPeriod+BandsShift); SetIndexDrawBegin(2,BandsPeriod+BandsShift); //---- return(0); } //+------------------------------------------------------------------+ //| Bollinger Bands | //+------------------------------------------------------------------+ int start() { int i,k,counted_bars=IndicatorCounted(); double deviation; double sum,oldval,newres; //---- if(Bars<=BandsPeriod) return(0); //---- initial zero if(counted_bars<1) for(i=1;i<=BandsPeriod;i++) { MovingBuffer[Bars-i]=EMPTY_VALUE; UpperBuffer[Bars-i]=EMPTY_VALUE; LowerBuffer[Bars-i]=EMPTY_VALUE; } //---- int limit=Bars-counted_bars; if(counted_bars>0) limit++; for(i=0; i<limit; i++) MovingBuffer[i]=iMA(NULL,0,BandsPeriod,BandsShift,MODE_SMA,PRICE_CLOSE,i); //---- i=Bars-BandsPeriod+1; if(counted_bars>BandsPeriod-1) i=Bars-counted_bars-1; while(i>=0) { sum=0.0; k=i+BandsPeriod-1; oldval=MovingBuffer[i]; while(k>=i) { newres=Close[k]-oldval; sum+=newres*newres; k--; } deviation=BandsDeviations*MathSqrt(sum/BandsPeriod); UpperBuffer[i]=oldval+deviation; LowerBuffer[i]=oldval-deviation; i--; } //---- return(0); }
Не путайте пользовательский индикатор со встроенным.
В пользовательском индикаторе мы несколько расширили функциональность для тех, кому нужны дробные значения отклонений.
В пользовательском индикаторе мы несколько расширили функциональность для тех, кому нужны дробные значения отклонений.
Ваша позиция понятна. Хотя конечно жаль... Т.к. встроенная ф-ция работает где-то раза в 3 быстрее чем ее реализация в пользовательском коде.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
И еще мелкое замечание: всплывающая подсказка при наборе параметров данной ф-ции и help не совпадают. Правильно то, что в help'е. Во всплывающей подсказке 6 параметров, а в help'е - 7. Отсутствует "int total".