уровни CCI на графике

 
Есть индикатор CCI. У индикатора есть линии 100 и -100. Как узнать цену при которой CCI будет показывать 100 или -100?
 
Спросить об этом у самого CCI )))
 
dimeon:
Есть индикатор CCI. У индикатора есть линии 100 и -100. Как узнать цену при которой CCI будет показывать 100 или -100?

Можно узнать только цену, которая была при пересечении уровней. Причём две цены: первая до пересечения, вторая - после пересечения.

Если вам нужна будущая цена, то ошиблись форумом. Тут не предсказатели.

 
dimeon:
Есть индикатор CCI. У индикатора есть линии 100 и -100. Как узнать цену при которой CCI будет показывать 100 или -100?

это было бы возможно если бы индикатор зависел только от ОДНОЙ последней цены. но т.к. это не так, то обратный расчет невозможен.
 
Хорошо, Как узнать цену на нулевом баре, т.е. на текущем при котором CCI будет равен 100 или -100 ?
 
dimeon:
Хорошо, Как узнать цену на нулевом баре, т.е. на текущем при котором CCI будет равен 100 или -100 ?

Ну не предсказывает СС! будущего, когда будет 100 или -100, тогда и на цену смотреть, раньше - никак...


Да и в случае нулевого бара тоже цену можно только сравнительно смотреть: вот предыдущий тик СС! был ниже 100, а с приходом нового тика он уже выше 100, гарантии равенства не будет практически никогда.

 
dimeon:
Хорошо, Как узнать цену на нулевом баре, т.е. на текущем при котором CCI будет равен 100 или -100 ?


Наверно подбором. Подставляем разную цену и смотрим как изменяется ССI.

Если решать обратную задачу возникает несколько проблем.

1. CCI использует в расчете несколько цен одного бара. Это ладно, можно упросить задачу и выполнять расчет CCI только по цене закрытия.

2. Если упрощать код, чтобы получить общую формулу, а потом вывести обратную формулу, получаем такое дело:

   int i,limit=Bars-IndicatorCounted()-1;
   double mul = 0.015 / CCIPeriod;
   
   for(i = limit; i >=0; i--){

       double sma0=0;
         for(int j=i+1;j<i+CCIPeriod;j++){
            sma0+=Close[j];
         }
         
      double sum0 = 0.0;
         for(j=i+1;j<i+CCIPeriod;j++){
            sum0 += MathAbs(Close[j] - sma0/CCIPeriod - Close[i]/CCIPeriod);
         }
         
      double d=sum0*mul + MathAbs(Close[i] - sma0/CCIPeriod - Close[i]/CCIPeriod)*mul;
       if(d==0.0){ 
           CCIBuffer[i] = 0.0;
       }           
       else{
           CCIBuffer[i] = (Close[i] -(sma0+Close[i])/CCIPeriod)/d;
       }

Жирным выделен Close[i], если бы его как-то вытащить из под цикла...

 

Не получится даже подбором.

Если бы в расчете использовались только цены Close, то можно было бы, т.к. Тогда в общем уравнении была бы только 1 неизвестная - Close[0]. Но дело в том, что CCI считается по типичным ценам (HIGH + LOW + CLOSE)/3, т.е. Не зная Low и High нулевого бара (которые можно определить только после его формирования), мы не сможем вычислить и его Close.

Таким образом, единственный вариант - выводить формулу именно для будущей типичной цены нулевого бара, при которой будет тот или иной уровень CCI, это возможно, да.

 
alsu:

Не получится даже подбором.

Если бы в расчете использовались только цены Close, то можно было бы, т.к. Тогда в общем уравнении была бы только 1 неизвестная - Close[0]. Но дело в том, что CCI считается по типичным ценам (HIGH + LOW + CLOSE)/3, т.е. Не зная Low и High нулевого бара (которые можно определить только после его формирования), мы не сможем вычислить и его Close.

Таким образом, единственный вариант - выводить формулу именно для будущей типичной цены нулевого бара, при которой будет тот или иной уровень CCI, это возможно, да.


Подбором - меняем Close и по мере необходимости подправляем High или Low.

Насчет вывода формулы, думаете возможно?

 

Я когда то давно такую тему поднимал.

Помню кто то сделал и сказал. Ух ты как зашибись.

Ну я на правах интелектуальной собственности вежливо по просил того человека дать мне код, на что получил ответ типа "х@й" тебе, только в более завуалированной форме.

На том все закончилось.

 

имхенько, все определяется прикладной сущностью задачи.

Гипотеза 1: Алгоритм предполагается использовать для определения уровня Take Proffit.

Гипотеза 1.1: Профит берется по цене открытия бара.

Допущение: Наилучшей оценкой значения цены открытия нового бара является значение цены закрытия предыдущего бара.

Вариант решения задачи:

1. Обратным преобразованием определяем типичную цену текущего бара, при которой CCI=100%.

2. Непрерывно(на каждом тике) определяем текущее значение оценки искомой цены по формуле:

ЗначениеОценки=3*ТипичнаяЦена-High[0]-Low[0];

3. Тралим Take Proffit, если его предыдущее значение значительно отличается от текущего значения оценки.

Все это не просто, конечно..., а очень просто.:)

Причина обращения: