Settings= { Name = "Piton", N = 100, legend = "price2", line = { { Name = "Sint", Color = RGB(0, 132, 0), Type = TYPE_LINE, Width = 1 } } } function Init() return 1 end Candles = {}; function OnCalculate(index) local numCandles = getNumCandles(Settings.legend); if index <= Settings.N or numCandles <= Settings.N then return nil; end Candles, n, _ = getCandlesByIndex(Settings.legend, 0, index - Settings.N, Settings.N); if n ~= Settings.N then return nil; end -- Предварительный расчет sum1, sum2, sum3 = advancePaynemt(index); -- расчет коэффициента корреляции Пирсона r = sum3/math.sqrt(sum1*sum2); return r; end -- Предварительный расчет ---------------------------------------- function advancePaynemt(index) local sum1 = 0; local sum2 = 0; local sum3 = 0; local j = 0; -- Вычислить среднее арифметическое for i=index - Settings.N + 1, index, 1 do sum1 = sum1 + C(i); sum2 = sum2 + Candles[j].close; j = j + 1; end aver1 = sum1/Settings.N; aver2 = sum2/Settings.N; -- Вычислить сумму квадратов отклонений sum1 = 0; sum2 = 0; j = 0; for i=index - Settings.N+1, index, 1 do sum1 = sum1 + math.pow(C(i) - aver1, 2); sum2 = sum2 + math.pow(Candles[j].close - aver2, 2); j = j + 1; end -- Вычислить сумму произведений разности j=0; for i=index - Settings.N+1, index, 1 do sum3 = sum3 + (aver1 - C(i))*(aver2 - Candles[j].close); j = j + 1; end return sum1, sum2, sum3; endКак запустить и настроить:
Привет всем.
Мой сценарий по префам Транснефти до конца года.
Весной здесь я показывал на примерах годовой и двухлетний циклы, которые хорошо работают по бумаге.
Решил вернуться к ним, ибо во вторник префы Транснефти вышли вверх из своего трёхмесячного узкого боковика. И если взглянуть на годовой и двухлетний циклы префов, то видно, что это движение очень хорошо описывается линиями этих циклов. Их корреляция с изменениями котировок бумаги на периоде 12 последних месяцев очень существенная: 0.78 для годового цикла и 0,40 для двухлетнего цикла. На рисунке представлены оба цикла:
Считаю, что бумага встала в восходящий тренд. Соответственно, сценарий — рост, как минимум, до конца текущего года.
Всем успехов!
Этой статьей мы продолжим улучшать результы автоматического поиска пар для торговли. Дополнительным фильтром будем использовать измерения, доступные после построения регрессии методом statsmodels.api.OLS(). Этот же фильтр будем применять к парам во время торговли.
Найденные пары проверим в Quantopian, а исходный код напишем на Python.