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

 
Svinozavr писал(а): ...Если возникнут сложности - можно в ветку вынести.

Будьте так любезны, вынесите. Стохастик тема вечная, а Ваши разработки весьма любопытны.

 
granit77:
Svinozavr писал(а): ...Если возникнут сложности - можно в ветку вынести.

Будьте так любезны, вынесите. Стохастик тема вечная, а Ваши разработки весьма любопытны.


А что, возникли? В смысле, сложности.

ок. Или здесь спросите, или сделайте ветку - там хоть файлы прикреплять можно.

 
Azzx:

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

Что-то он у меня выглядит абсолютно так же как и стандартный. Как его запустить?

 
alex1978:

Что-то он у меня выглядит абсолютно так же как и стандартный. Как его запустить?

Поле Sens в окне параметров задает порог чувствительности в пунктах. Естественно, для разных инструментов, тайм-фреймов и типа котировок (4 или 5 знаков послу зпт) это будут свои значения.

На минутках пары евробакс с 4-х знаком это значение около 20 пп. На 5-ти знаках - 200.

Короче, поэкспериментируйте с разными значениями для поля Sens. Лям туда поставите - разницу увидите точно. Гарантирую! )))

 

Добавлена новая версия Стохастика с адаптивным порогом чувствительности. Код и описание здесь.

 
Svinozavr:
alex1978:

Что-то он у меня выглядит абсолютно так же как и стандартный. Как его запустить?

Поле Sens в окне параметров задает порог чувствительности в пунктах. Естественно, для разных инструментов, тайм-фреймов и типа котировок (4 или 5 знаков послу зпт) это будут свои значения.

На минутках пары евробакс с 4-х знаком это значение около 20 пп. На 5-ти знаках - 200.

Короче, поэкспериментируйте с разными значениями для поля Sens. Лям туда поставите - разницу увидите точно. Гарантирую! )))

Отличная работа. Как и ряд других аналогичных твоих работ по совершенствованию индикаторов. А нельзя ли исходя из алгоритма шумоподавления вычислять значение Sens так, чтобы оно было "взвешенным" и одно и то же значение параметра подходило для разных тф и типов котировок, то есть одно и то же значение Sens оказывало одинаковый эффект шумоподавления?

 

vit46 писал(а):Отличная работа. Как и ряд других аналогичных твоих работ по совершенствованию индикаторов.

Спасибо за оценку. )))

А нельзя ли исходя из алгоритма шумоподавления вычислять значение Sens так, чтобы оно было "взвешенным" и одно и то же значение параметра подходило для разных тф и типов котировок, то есть одно и то же значение Sens оказывало одинаковый эффект шумоподавления?

Не очень понятно про "взвешенным". Порог или минимальное фиксируемое стохастиком колебание по определению жестко привязано к инструменту и к тф - во всех случаях разное.

Можно вычислять значение порога: порог=Ф(волатильность). Тогда порог будет автоматически подстраиваться под текущую волатильность и не будет зависеть от конкретного инструмента и тф. Но это уже сделано - см. мой камент ниже. Но ты имел ввиду что-то другое?

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

 

Новая версия ф-ии.

1. Устранено появление сообщений в журналке типа

StochNR GBPJPY,H1: incorrect start position 8767 for ArrayMinimum function

StochNR GBPJPY,H1: incorrect start position 8767 for ArrayMaximum function

(на работу это влияния не оказывало, но нектр. раздражало)

2. Порог (Sens) приведен в соответствие с замедлением (Slowing) Стохастика.

// стохастик с шумодавом
double Stoch(int Kperiod, int Slowing, int PriceFild, double sens, int i) {  
   if(i+Kperiod+Slowing>Bars) return(-1); // недостаточно баров - выход (1)
   // экстремумы цены в цикле замедления/сглаживания
   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];
     }
   // шумоподавление
   sens*=Slowing; // приведение чувствительности в соответствие с периодом замедления (2)
   double delta=max-min; // размах
   double diff=sens-delta; // разница между порогом чувств. и размахом
   if(diff>0) { // если разница >0 (размах меньше порога), то
      delta=sens; // размах = порогу,
      min-=diff/2; // новое значение минимума
     }
   // вычисление осциллятора
   if(delta==0) return(50);
   else return(100*(c-min)/delta);
  }
 
Отличная работа!И прекрасное документирование
 
Спасибо. 10.