Скачать MetaTrader 5

Индикаторы: Stochastic with Noise Reduction - "Бесшумный" Стохастик.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Скачай MetaTrader 5 и начни торговать уже сегодня!
MetaQuotes Software Corp.
Модератор
181341
MetaQuotes Software Corp. 2009.10.19 12:25 

Stochastic with Noise Reduction - "Бесшумный" Стохастик.:

Радикально сокращает кол-во ложных сигналов путем регулирования чувствительности.

Author: Петр

MQL4 Comments
16319
MQL4 Comments 2009.10.19 13:24  

Очень интересная тема. Спасибо, щас попробую всунуть "шумопонижение" в советник.

MQL4 Comments
16319
MQL4 Comments 2009.10.19 15:23  

Ага, вон оно что. Ну значит бум тут качать.

Лёха
1264
Лёха 2009.10.19 19:56  

Спасибо, выглядит интересно. Надоть поколупать. :)

Петр
6085
Петр 2009.10.19 20:27  

Небрежность в коде у себя нашел в ф-ии Stoch - лишнее вычисление. На скорость особо не влияет, но все же:

double Stoch(int Kperiod, int Slowing, int PriceFild, double sens, int i) {  
   // экстремумы цены
   double max,min,c;
   for(int j=i; j<i+Slowing; j++) {
      if(PriceFild==1) { // по Close
         max+=Close[ArrayMaximum(Close,Kperiod,j)];
         min+=Close[ArrayMinimum(Close,Kperiod,j)];
        }
      else { // по High/Low
         max+=High[ArrayMaximum(High,Kperiod,j)];
         min+=Low[ArrayMinimum(Low,Kperiod,j)];
        }
      c+=Close[j];
     }
   double delta=max-min;
   if(delta<sens) {
      sens/=2;
      max+=sens; min-=sens;
      delta=max-min; // *** перемещена в тело условного оператора
     }
   if(delta==0) double s0=1;
   else s0=(c-min)/delta;
   return(100*s0);
  }

Если желаете, можете заменить в индикаторе и в заголовочном файле. Но, подчеркиваю, что разницу вы не заметите - просто так правильней с т.з. кодирования.)))

Dmitry Fedoseev
42921
Dmitry Fedoseev 2009.10.20 00:28  

+10

MQL4 Comments
16319
MQL4 Comments 2009.10.20 11:16  

+10 . Хороший получился NR, спасибо.

Петр
6085
Петр 2009.10.20 23:57  

Не ожидал такого интереса - прав был Тютчев ("Нам не дано предугадать, как наше слово отзовется..."))). ок. Но я о другом - есть еще один вариант шумодава, который не так драматично меняет форму стохастика и в некоторых случаях является более приемлимым, - испытывал на построении уровней поддержки/сопротивления (горизонтальных каналов) с помощью стохастика (Channel@Stoch). По сути, колебания меньше порога в этом варианте масштабируются пропорционально разнице между порогом и размахом. В уже опубликованном варианте масштабирование происходит более скачкообразно.

Итак, вот еще один вариант ф-ии Стохастика с шумоподавлением (все поля те же):

double Stoch1(int Kperiod, int Slowing, int PriceFild, double sens, int i) {  
   // экстремумы цены
   double max,min,c;
   for(int j=i; j<i+Slowing; j++) {
      if(PriceFild==1) { // по Close
         max+=Close[ArrayMaximum(Close,Kperiod,j)];
         min+=Close[ArrayMinimum(Close,Kperiod,j)];
        }
      else { // по High/Low
         max+=High[ArrayMaximum(High,Kperiod,j)];
         min+=Low[ArrayMinimum(Low,Kperiod,j)];
        }
      c+=Close[j];
     }
   // шумоподавление
   double delta=max-min; // размах
   double diff=sens-delta; // разница между порогом чувств. и размахом
   if(diff>0) { // если разница >0 (размах меньше порога), то
      delta=sens; // размах = порогу,
      min-=diff/2; // новое значение минимума
     }
   // вычисление стохастика 
   if(delta==0) double s0=1;
   else s0=(c-min)/delta;
   return(100*s0);
  }

Еще один момент. Можно в качестве порога использовать значение ATR с периодом сглаживания ~ 10*Kperiod и умноженным на 5...10. Здесь можно получить следующие свойства:

- независимость от абсолютных величин - нет порога, задаваемого в п.п.;

- адаптивность к рынку - при увеличении торгового диапазона будет увеличиваться уровень шумоподавления, тем самым будут убираться колебания, которые несущественны для более "размашистого" рынка.

Можно, конечно, оставить и минимальное значение порога, но на практике само значение ATR не будет опускаться ниже разумной величины. Впрочем, это просто - MathMax(sens, 8*ATR).

Сам индикатор приводить не буду - нет возможности в каментах прикрепить файл, а доработка слишком очевидна, чтобы делать новую запись Code Base. Если возникнут сложности - можно в ветку вынести.

Alex
761
Alex 2009.10.21 12:21  

Спасибо.

Mihail
3
Mihail 2009.10.21 18:21  
  • Подскажите, как запустить данный индикатор.
Петр
6085
Петр 2009.10.21 19:34  
mihonich:
  • Подскажите, как запустить данный индикатор.

Шутите? Как обычно.

Впрочем, извольте: поместите файл _StochNR.mq4 в папку experts\indicators терминала; откройте файл в MetaEditor'е; откомпилируйте (F5) и все - теперь он будет доступен из пользовательских индикаторов в терминале.

123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий