Общие вопросы по разработке > ATR дневного таймфрейма на нижестоящих

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
Gemin
Сообщения: 23
Зарегистрирован: 06 сен 2016, 18:02

ATR дневного таймфрейма на нижестоящих

Непрочитанное сообщение Gemin » 25 ноя 2016, 13:56

Добрый день, Evge!
Если возможно, подскажите как данные с дневного таймфрейма получать на таймфреймах меньше часа на примере индикатора ATR.
Спасибо!

Sergio
Сообщения: 2
Зарегистрирован: 02 июн 2018, 19:17

Re: ATR дневного таймфрейма на нижестоящих

Непрочитанное сообщение Sergio » 03 июн 2018, 18:55

Мне тоже интересно, как получить ATR. Поделитесь советом пожалуйста

Аватара пользователя
evge
Администратор
Сообщения: 1641
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 62 раза
Поблагодарили: 294 раза
Контактная информация:

Re: ATR дневного таймфрейма на нижестоящих

Непрочитанное сообщение evge » 03 июн 2018, 21:23

Что-то я пропустил это сообщение 1.5 года назад.

Например так:

Но тут учтите, чть есть запаздывание в 1 день на часовом ТФ (или другом ТФ).
Мы будем видеть АТР не текущего, а предыдущего дня. Чтобы отрисовать на текущем ТФ АТР текущего дня придётся перерисовывать весь текущий день, т.е. менять значения на всех барах текущего дня. Поэтому привожу пример как отрисовать за предыдущий день АТР дня на текущем дне, так перерисовывать не надо.

Наверное, непонятно разъяснил :)

ATRDay-01.png


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

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];

}


Скачать код индикатора:

ATRDay.zip
(44.63 КБ) 397 скачиваний
никогда такого не было и вот опять


Вернуться в «Общие вопросы по разработке»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей