Последний вопрос по данной теме, или скорее просьба, написать простенький демонстрационный индикатор, который содержит в себе, то что не дают на курсах (вебинарах).
Суть индикатора:
1. Необходимо найти среднюю цену по инструменту за предыдущий период 1-3 дня, пересчитать ее для текущего ТФ графика и нарисовать ее в виде горизонтали в окне цены.
2. Необходимо найти средний объем за предыдущий период 1-3 дня, пересчитать его для текущего ТФ графика и нарисовать его в виде горизонтали в окне Объемов.
3. Обе горизонтали должны рассчитываться и перерисовываться для текущего ТФ графика.
По сути просто и наглядно. Идея именно в том, что бы взять предыдущий день-два-три, который будет получен в текущем ТФ графика, и на их основе рассчитать среднее. Формула расчета не принципиальна. Проблема в том, что другой ТФ выбираться при вызове индикатора и передачи ряда не может.
Только как будет отрабатываться левая граница полученного ряда?
Насколько она будет соответствовать реальности?
Может быть есть исходный код готового Индикатора похожего на описанный вариант, простой для понимания и наглядный, что бы визуально оценить его правдоподобность?
.
Общие вопросы по разработке > Как задавать и определять временные интервалы и тайм-фреймы в индикаторе
- evge
- Администратор
- Сообщения: 1813
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 369 раз
- Контактная информация:
Re: Как задавать и определять временные интервалы и тайм-фреймы в индикаторе
VDV писал(а):Может быть есть исходный код готового Индикатора похожего на описанный вариант, простой для понимания и наглядный, что бы визуально оценить его правдоподобность?
Last3D (Last Price) – уровень последней цены за 3 дня
и пример
Last6D от ox
Код: Выделить всё
function Initialize()
{
IndicatorName = "Last6D";
AddInput("Input", Inputs.Candle);
PriceStudy = true;
AddParameter("NeedBars", 520, 1);
AddGlobalVariable("ListClose", Types.DoubleList);
AddGlobalVariable("ListHigh", Types.DoubleList);
AddGlobalVariable("ListLow", Types.DoubleList);
AddGlobalVariable("ListOpen", Types.DoubleList);
AddGlobalVariable("High", Types.Double, 0.0);
AddGlobalVariable("Low", Types.Double, 100000000000);
AddSeries("Last", DrawAs.Line, Color.Red);
AddLevel(0, Color.Blue, LineStyles.Solid, 1, "Last");
AddLevel(0, Color.Blue, LineStyles.DashBig, 1, "Last");
AddLevel(0, Color.Blue, LineStyles.DashBig, 1, "Last");
AddLevel(0, Color.Green, LineStyles.DashSmall, 1, "Last");
AddLevel(0, Color.Green, LineStyles.DashSmall, 1, "Last");
AddLevel(0, Color.Green, LineStyles.DashSmall, 1, "Last");
AddLevel(0, Color.Coral, LineStyles.DashSmall, 1, "Last");
AddLevel(0, Color.Coral, LineStyles.DashSmall, 1, "Last");
AddLevel(0, Color.Coral, LineStyles.DashSmall, 1, "Last");
AddLevel(0, Color.Gray, LineStyles.DashSmall, 1, "Last");
AddLevel(0, Color.Gray, LineStyles.DashSmall, 1, "Last");
AddLevel(0, Color.Gray, LineStyles.DashSmall, 1, "Last");
}
function Evaluate()
{
// AlfaDirect. 2016. OX
if ( BarDate() != BarDate(-1) && CurrentIndex != 0 )
{
ListClose.Add(Input.Close[1]);
ListOpen.Add(Input.Open[0]);
ListHigh.Add(High);
ListLow.Add(Low);
High = Input.High[0];
Low = Input.Low[0];
}
else
{
if (Input.High[0] > High)
High = Input.High[0];
if (Input.Low[0] < Low)
Low = Input.Low[0];
}
if (CurrentIndex == MaxIndex)
{
for (var i = 0; i < 3; i++)
{
Levels[i].Level = ListClose[ListClose.Count - i - 1];
Levels[i+3].Level = ListHigh[ListHigh.Count - i - 1];
Levels[i+6].Level = ListLow[ListLow.Count - i - 1];
Levels[i+9].Level = ListOpen[ListOpen.Count - i - 1];
if ( i >= 2 )
break;
}
}
}
никогда такого не было и вот опять
Вернуться в «Общие вопросы по разработке»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 215 гостей