Добрый день, Evge!
Если возможно, подскажите как данные с дневного таймфрейма получать на таймфреймах меньше часа на примере индикатора ATR.
Спасибо!
Общие вопросы по разработке > ATR дневного таймфрейма на нижестоящих
Re: ATR дневного таймфрейма на нижестоящих
Мне тоже интересно, как получить ATR. Поделитесь советом пожалуйста
- evge
- Администратор
- Сообщения: 1811
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 366 раз
- Контактная информация:
Re: ATR дневного таймфрейма на нижестоящих
Что-то я пропустил это сообщение 1.5 года назад.
Например так:
Но тут учтите, чть есть запаздывание в 1 день на часовом ТФ (или другом ТФ).
Мы будем видеть АТР не текущего, а предыдущего дня. Чтобы отрисовать на текущем ТФ АТР текущего дня придётся перерисовывать весь текущий день, т.е. менять значения на всех барах текущего дня. Поэтому привожу пример как отрисовать за предыдущий день АТР дня на текущем дне, так перерисовывать не надо.
Наверное, непонятно разъяснил
Скачать код индикатора:
Например так:
Но тут учтите, чть есть запаздывание в 1 день на часовом ТФ (или другом ТФ).
Мы будем видеть АТР не текущего, а предыдущего дня. Чтобы отрисовать на текущем ТФ АТР текущего дня придётся перерисовывать весь текущий день, т.е. менять значения на всех барах текущего дня. Поэтому привожу пример как отрисовать за предыдущий день АТР дня на текущем дне, так перерисовывать не надо.
Наверное, непонятно разъяснил
Код: Выделить всё
function Initialize()
{
IndicatorName = "ATRDay";
PriceStudy = false;
AddInput("Input", Inputs.Candle);
AddSeries("ATRDay", DrawAs.Line, Color.Red);
AddParameter("Period", 14, 350);
// для сохранения списков значений OHLC
AddGlobalVariable("O", Types.DoubleList);
AddGlobalVariable("H", Types.DoubleList);
AddGlobalVariable("L", Types.DoubleList);
AddGlobalVariable("C", Types.DoubleList);
AddGlobalVariable("A", Types.DoubleList); //ATR
}
function Evaluate()
{
// evge 03.06.2018 http://alfadirect4.ru
ATRDay[0] = ATRDay[1];
// новый день
if (BarDate(0) != BarDate(1))
{
// новый бар дня
O.Insert(0, Input.Open[0]); H.Insert(0, Input.High[0]); L.Insert(0, Input.Low[0]); C.Insert(0, Input.Close[0]);
if (O.Count > 1)
{
A.Insert(0, H[1] - L[1]);
}
// лишнее удаляем
var CN = O.Count;
if (CN > Period * 2) { O.RemoveAt(CN - 1); H.RemoveAt(CN - 1); L.RemoveAt(CN - 1); C.RemoveAt(CN - 1); }
}
if (O.Count > 0)
{
if (Input.Low[0] < L[0]) L[0] = Input.Low[0];
if (Input.High[0] > H[0]) H[0] = Input.High[0];
C[0] = Input.Close[0];
}
if (A.Count > 1)
{
if (C.Count > 2)
{
var TR = Math.Max(H[1] , C[2]) - Math.Min(L[1], C[2]);
A[0] = ((Period - 1.0) * A[1] + TR) / Period;
}
}
if (A.Count > 0) ATRDay[0] = A[0];
}
Скачать код индикатора:
никогда такого не было и вот опять
Вернуться в «Общие вопросы по разработке»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 19 гостей