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

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

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

Добавлено: evge » 07 апр 2017, 10:16

Тема: Re: Как узнать в индикаторе номер свечи открытия дня?

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

Пример

DayBar-01.png
DayBar-01.png (31.67 КБ) 35542 просмотра


Параметром передаем сколько мы хотим хранить индексов начала бара дней.
Для примера, в серию выводим смещение относительно текущего бара до последнего индекса бара начала дня, т.е. сколько баров прошло от начала текущего дня (дня видимо последнего бара графика) :)

Ничего не мешает использовать весь список для анализа т.е. D[0], D[1], ... D[D.Count-1] - в нём хранятся значения индекса бара начала предыдущих дней.
Чтобы получить, например, цену открытия 5 дней назад код такой

Input.Open(CurrentIndex - D[4]);

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

function Initialize()
{
IndicatorName = "DayBar";
PriceStudy = false;
AddInput("Input", Inputs.Candle);
AddSeries("Shift", DrawAs.Histogram, Color.Red);

AddParameter("Days", 20); // размерность списка (сколько индексов баров начала дня сохранять в список)

AddGlobalVariable("D", Types.IntList); //Список индексов начала дня
}

function Evaluate()
{

//Новый день
if (BarDate(0) != BarDate(1))
{
   D.Insert(0, CurrentIndex);
   if (D.Count > Days) D.RemoveAt(D.Count - 1);
}


if (D.Count > 0)
{
   Shift = CurrentIndex - D[0];
}

}