в 1 графике в RSI_H2 значение индикатора повторяется для тех свечек, что не входят в условие т.е. внутренние свечки таймфрейма H2.
в H1 это:
10=11, 12=13, 14=15 и т.д.
а в 2 графике имеются только точки на значениях вышестоящего ТФ, т.е:
10, 12, 14 и т.д. и они просто соединены линиями, т.е. визуально это очень похоже будет на оригинал H2, но на самом деле точек по времени 11, 13, 15 в индикаторе не будет вообще. Индикатор не будет "нормально" работать, например, как индикатор для стратегии, т.к. в этих точках нет значения индикатора.
Общие вопросы по разработке > Есть ли решение?
Re: Есть ли решение?
Добрый вечер, Evge.
Ваша мысль была правильной!
Немного дополнил и в принципе счастье...
Сам график практически идеален, а получаемые цифровые данные не полностью соответствуют. Так понимаю, что вопрос в периодах, поскольку на 2 часовом RSI рассчитывается 1 раз, а на 1 часовом 2 раза.
Хотел еще по одному вопросу побеспокоить...
Сам не знаю, как подступиться.
Направление тоже (на часовом графике данные с 2 часового), только с индикатором LinReg.
Заранее спасибо!
Ваша мысль была правильной!
Немного дополнил и в принципе счастье...
Сам график практически идеален, а получаемые цифровые данные не полностью соответствуют. Так понимаю, что вопрос в периодах, поскольку на 2 часовом RSI рассчитывается 1 раз, а на 1 часовом 2 раза.
Код: Выделить всё
function Initialize()
{
IndicatorName = "RSI_H2pr";
PriceStudy = false;
AddInput("Input", Inputs.Price);
AddParameter("Period", 28, 32);
AddSeries("RSI", DrawAs.Line, Color.LightBlue);
AddSeries("PosBuffer", DrawAs.Line, Color.Red, false);
AddSeries("NegBuffer", DrawAs.Line, Color.Red, false);
AddLevel(30, Color.Gray, "RSI");
AddLevel(70, Color.Gray, "RSI");
AddGlobalVariable("IO", Types.Double, 0);
}
function Evaluate()
{
// evge 06.09.2016 http://alfadirect4.ru
// RSI 2 часового ТФ на M15 или выше таймфрейме. На ТФ ниже возможен некорректный расчет.
//
// RSI (Relative Strength Index) - индекс относительной силы
// Автор - Уэллс Уайлдер (Welles Wilder).
var t = BarTime(0).Hours;
if (CurrentIndex < 1)
{
RSI = 0.0;
PosBuffer = 0.0;
NegBuffer = 0.0;
IO = Input[0];
}
else
if (t % 2 == 0 && t != 18)
{
var sump = 0.0;
var sumn = 0.0;
var rel = Input[0]-IO;
if (rel > 0)
sump = rel;
else
sumn =-rel;
var positive = (PosBuffer[1]*(Period - 1.0) + sump)/Period;
var negative = (NegBuffer[1]*(Period - 1.0) + sumn)/Period;
PosBuffer = positive;
NegBuffer = negative;
if (negative == 0.0)
RSI = 0.0;
else
RSI = 100.0 - 100.0 / (1.0 + positive/negative);
} else {
var sump = 0.0;
var sumn = 0.0;
var rel = Input[0]-IO;
IO = Input[0];
if (rel > 0)
sump = rel;
else
sumn =-rel;
var positive = (PosBuffer[-1]*(Period - 1.0) + sump)/Period;
var negative = (NegBuffer[-1]*(Period - 1.0) + sumn)/Period;
PosBuffer = positive;
NegBuffer = negative;
if (negative == 0.0)
RSI = 0.0;
else
RSI = 100.0 - 100.0 / (1.0 + positive/negative);
}
}
Хотел еще по одному вопросу побеспокоить...
Сам не знаю, как подступиться.
Направление тоже (на часовом графике данные с 2 часового), только с индикатором LinReg.
Код: Выделить всё
function Initialize()
{
IndicatorName = "LinReg_1";
PriceStudy = false;
AddInput("Input", Inputs.Price);
AddSeries("LinReg", DrawAs.Line, Color.Red);
AddParameter("Period", 20);
AddParameter("Extr", 10);
AddGlobalVariable("ZN", Types.Double, 0.0);
AddGlobalVariable("t2", Types.Double, 0.0);
AddGlobalVariable("t4", Types.Double, 0.0);
}
function Evaluate()
{
// AlfaDirect. 2015. OX
// LinReg (Linear Regression) - Линейная регрессия
if (CurrentIndex == 0 )
{
// Расчет неизменных коэффициентов по времени
for (int i = 0; i < Period; i++)
{
t2 = t2 + i;
t4 = t4 + i * i;
}
ZN = ((double)Period * t4 - t2 * t2);
}
if (CurrentIndex < Period + Extr )
LinReg = Input[0];
else
{
// Вариант t = [0...N-1]
double a1 = 0.0;
double a3 = 0.0;
for (int i = 0; i < Period; i++)
{
a1 = a1 + i * Input[-(int)Period + 1 + i];
a3 = a3 + Input[-i];
}
var alfa = (Period * a1 - t2 * a3) / ZN;
var beta = (a3 - alfa * t2) / Period;
LinReg = alfa * ((double)Period-1.0 + Extr) + beta ;
}
}
Заранее спасибо!
Вернуться в «Общие вопросы по разработке»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей