Каталог файлов форума

Список вложений в сообщениях, оставленных на этой конференции.

Все файлы форума: 1270

Добавлено: evge » 18 май 2016, 16:59

Тема: LinRegChannel - канал линейной регрессии

Текст сообщения:

Канал линейной регрессии LinRegChannel за период (Period) с запаздыванием (Delay)
Отклонение считается как максимальное разница цен и базовой регрессии, строится по ценам закрытия.

Параметры

Period - период
Delay - период запаздывания

Автор

AlfaDirect 2016. OX

Пример

LineRegChannel.zip
(1.16 КБ) 2224 скачивания


Код: Выделить всё

function Initialize()
{
IndicatorName = "LinRegChannel";   
PriceStudy = true;   
AddInput("Input", Inputs.Price);   
AddSeries("LineUp", DrawAs.Line, Color.Red);   
AddSeries("LineDn", DrawAs.Line, Color.Red);   
AddSeries("LineU2", DrawAs.Line, Color.Gray);   
AddSeries("LineD2", DrawAs.Line, Color.Gray);   
AddParameter("Period", 100, 1);
AddParameter("Delay", 5);
}
function Evaluate()
{
// AlfaDirect 2016. OX
// Канал линейной регрессии за период (Period) с запаздыванием (Delay)
// Отклоенение считается как максимальное разница цен и базовой регрессии, строится по ценам закрытия.

if (CurrentIndex == MaxIndex)
{
double a1 = 0.0;
double a2 = 0.0;
double a3 = 0.0;
double a4 = 0.0;
if (CurrentIndex >= Period+Delay )
{
double N = Period;
for (var i = 0; i < N; i++)
{
a1 = a1 + i * Input[-(int)N + 1 + i -Delay];
a2 = a2 + i;
a3 = a3 + Input[-i -Delay];
a4 = a4 + i * i;
}
var alfa = (Period * a1 - a2 * a3) / (N * a4 - a2 * a2);
var beta = (a3 - alfa * a2) / N;
double Sigma1 = 0.0;
double Sigma2 = 0.0;
for (var i = 0; i < N; i++)
{
// Расчет отклонения 1
double a = ((alfa * (i) + beta) - Input[-Period+i+1 -Delay]);
if ( a > Sigma1 )
Sigma1 = a;
// Расчет отклонения 2
a = -((alfa * (i) + beta) - Input[-Period+i+1 -Delay]);
if ( a > Sigma2 )
Sigma2 = a;
}
for (var i = 0; i < N+Delay; i++)
{
LineUp[-Period+i+1 -Delay] = alfa * (i) + beta + Sigma1;
LineU2[-Period+i+1 -Delay] = alfa * (i) + beta + Sigma2;
LineDn[-Period+i+1 -Delay] = alfa * (i) + beta - Sigma1;
LineD2[-Period+i+1 -Delay] = alfa * (i) + beta - Sigma2;
}
}
}
}


Скачать исходный текст

LineRegChannel-01.png
LineRegChannel-01.png (41.94 КБ) 30596 просмотров