Индикатор CCI в Quik

Страницы: 1
RSS
Индикатор CCI в Quik, Проверка формулы расчёта индикатора
 

Здравствуйте!


Вопрос, наверное, к Sergey Gorokhov, так как он вроде писал индикаторы.

По ряду причин решил проверить значения индикатора CCI в Quik.
Написал свой простейший для проверки, отобразил в одном окне, значения не совпали.
Свой вариант программировал по классическим формулам, смотри, например, на википедии CCI, вот здесь:
https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%B4%D0%B5%D0%BA%D1%81_%D1%82%D0%BE%D­0%B2%D0%B0%D1%80%D0...
Обратите внимание на формулу Среднего абсолютного отклонения (MAD), она рассчитывается через значения своего MA на каждой точке расчёта.
Посмотрел формулу Среднего абсолютного отклонения в индикаторе CCI из Quik: MD = MD + math.abs(b_ma - Value(i, VT, ds)), здесь вроде используется значение MA не на каждой точке, а просто берётся MA последней точки. Думаю, это неправильно.

Привожу код своего индикатора CCI:

Settings = {
Name = "*CCI_My_v1",
period_CCI = 13,
line =
{
{Name = "CCI_My", Type = TYPE_LINE, Color = #00fafa, Width = 1}
}
}
 
function Init()
return 1
end

function OnCalculate(index)

local periodCCI = Settings.period_CCI

if index < periodCCI*2 then return nil
else
 
 local myCCI = 0
 local meanDeviation = 0
 
 for i = index-periodCCI+1, index do
 
  --Вычисление SMA для каждого i
  local smaMD = 0
  for j = i-periodCCI+1, i do
       smaMD = smaMD + C(j)
  end--for j
  smaMD = smaMD / periodCCI
 
  --Суммирование отклонения для i
     meanDeviation = meanDeviation + math.abs(smaMD - C(i))

 end--for i
 

--Вычисление среднего отклонения для index
 meanDeviation = meanDeviation / periodCCI
 
  --Вычисление SMA для index
  local sma = 0
  for i = index-periodCCI+1, index do
      sma = sma + C(i)
  end--for i
  sma = sma / periodCCI
 
 --Вычисление CCI
   myCCI = (C(index) - sma)/(0.015*meanDeviation)
 return myCCI
 
end--else
end

Т.е. вроде в индикаторе CCI Quik не хватает блока  --Вычисление SMA для каждого i.
 
Цитата
Mikhail Ran написал:
Вопрос, наверное, к Sergey Gorokhov, так как он вроде писал индикаторы.
Вы ошибаетесь.
Лично я только переписал индикаторы на LUA, а в терминале они появились за долго до моего появления. Но всё равно спасибо.
Вы смотрите русскую wiki, а в английской формула отклонения почему-то другая
https://en.wikipedia.org/wiki/Average_absolute_deviation
и как быть, где правильно?
 
Вот еще интересная информация
http://investexcel.net/commodity-channel-index/
там даже Excel есть.
Обратите внимание там как раз таки берётся MA последней точки.
 
Посмотрел по ссылкам, то так то сяк.
К сожалению, у меня нет журнала с исходной статьёй автора (октябрь 1980 года  журнал Commodities). Если у кого есть, пришлите пож-та ссылку.

По определению CCI - индикатор, основанный на анализе текущего изменения отклонения цены от её среднего значения и среднестатистического абсолютного значения этого параметра. Как раз в моём варианте кода и определяется такое среднестатистическое значение отклонения. Мне понятен физический смысл такого индикатора. Линия МА это как бы линия тренда и мы сравниваем отклонение цены от этой линии на текущем баре с среднестатистическим значением этого отклонения. А вот физический смысл вашего кода мне непонятен. имхо
 
Цитата
Mikhail Ran написал:
А вот физический смысл вашего кода мне непонятен. имхо

Что именно в коде не понятно?
Страницы: 1
Читают тему
Наверх