Маркин Павел
Маркин Павел личный блог
02 февраля 2017, 14:31

QUIK, LUA, Робастность и прочее...

Зачитался, я тут на днях про робастную регрессию, и очень мне захотелось «пощупать» этого зверя хоть в каком нибудь виде на графике в Квике.

Выбрал наипростейшую — "Оценочная функция Тейла – Сена"
Эта оценочная функция может быть эффективно вычислена и она нечувствительна к выбросам. Она может быть существенно более точна, чем неробастный метод наименьших квадратов для несимметричных и гетероскедастичных данных и хорошо конкурирует с неробастным методом наименьших квадратов даже для нормально распределенных данных в терминах статистической мощности.
Метод признан «наиболее популярной непараметрической техникой оценки линейного тренда»
QUIK, LUA, Робастность и прочее...

Сказано — сделано.  

Сваял регрессию по функция Тейла – Сена на QLUA.
QUIK, LUA, Робастность и прочее...

Заодно медианные и квартильные отклонения...

УВЫ!

Скорость работы оставляла желать лучшего — на периоде больше 200 Квик начинал тормозить, а если подцепить на десяток разных инструментов просто умирал.

Проблема не нова — расчет медианного значения это сортировка, а с большими, множественными и постоянными сортировками LUA-интерпретатор не справляется.


УРА!

"Пионеры любят преодолевать трудности"

Вспомнил детство золотое, прочитал LUA API, потыкался пару деньков, и в итоге засунул все расчёты в dll, а в lua файле из важного осталось лишь:
function Init()
        package.path = ""
        package.cpath = getScriptPath().. "\\".."Robust.dll"
        require "Robust"
        Robust.InitGraf()
        return 5
end

function OnCalculate(index)
        return Robust.CALC(index,Settings.period)       
end
В общем спрятал всю математику, обращение к свечкам графика, и прочие мелочи.

ИТОГИ и ВЫВОДЫ.

Скорость и производительность выросла приблизительно в 5-6 раз!!! (без распараллеливания расчётов)

Милая LUA — не прощай, конечно, но постой в сторонке.

Плюшки для писателей мелких приложений на LUA — алгоритмы и логика скрыты, скорость, удобство включения ограничений на использование.

ИНДИКАТОР

Robust_Regression.zip
Распаковать в папку LuaIndicators и добавить индикатор.


28 Комментариев
  • Андрей К
    02 февраля 2017, 14:54
    а dll на чем было?
  • SergeyJu
    02 февраля 2017, 15:10
    У Вас есть система, в которой замена простой оценки угла наклона на робастную дает ощутимый выигрыш?

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн