Тема: Показатель Херста
Добрый день!
Пытаюсь воспроизвести в коде идею из этой статьи [url]http://www.math.spbu.ru/user/gran/soi5/Gatchkov5.pdf[/url]
Получилось пока вот что:
--считает приращение
function increment_series()
return function(ind, v_t)
local v_type = v_t
local index = ind
if index == 1 then
return nil
end
local n = math.log(dValue(index, v_type)/dValue(index-1, v_type))
return n
end
end
--считает среднее значение приращений
function average_increment_series()
local inc = increment_series()
return function(ind, period, v_t)
local index = ind
local v_type = v_t
local p = period
local avg = 0
local sum = 0
if index<=p then
return nil
end
for i = index-p+1, index do
sum=sum+inc(i,v_type)
end
return sum/p
end
end
--функция считает RS для разбиения на отрезки длиной len
function RSn()
local inc = increment_series()
local avg_inc = average_increment_series()
return function(ind, period, length, v_t)
local p = period
local index = ind
local v_type = v_t
local len = length
local N = math.floor((p-1)/len)
local RS_sum = 0
if index<=p then
return nil
end
for i = 1, N do
local Dka = (inc(index-(i-1)*len,v_type) - avg_inc(index-(i-1)*len,len,v_type))
local Xka = Dka
local Xka_min = Dka
local Xka_max = Dka
local Xka2 = Dka*Dka
for k=2, len do
Dka=(inc(index-(i-1)*len+(1-k),v_type) - avg_inc(index-(i-1)*len,len,v_type)) -- отклонение k из отрезка i
Xka=Xka+Dka
Xka2=Xka2+Dka*Dka
if Xka<Xka_min then
Xka_min = Xka
end
if Xka>Xka_max then
Xka_max = Xka
end
end
local Ri = (Xka_max - Xka_min)
local Si = math.sqrt((1/len)*Xka2)
RS_sum = RS_sum+(Ri/Si)
end
return RS_sum/N
end
end
Осталось только рассчитать сам показатель Хёрста и понять как это можно применить. Это так, в качестве примера индикатора.