Страница 1 из 1

Как получить Close вчерашнего дня?

Добавлено: 19 ноя 2019, 16:03
ZiZ
Добрый день!
Подскажите, как роботу торгующему на секундных интервалах получить Close вчерашнего дневного бара?
В инициализации указываю AddInput("Input1", Inputs.Candle, -1, true, ""), соответственно Input1.Close выдаёт данные только секундных баров, а нужно получить Close вчерашнего дня.
Сейчас на старте робота приходиться через параметр вручную вводить закрытие вчерашнего дня, а хочется автоматизации. :)
Заранее благодарен.

Re: Как получить Close вчерашнего дня?

Добавлено: 19 ноя 2019, 20:23
BugsDigger
Типа такого:

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

DateTime today=BarDate(); // текущий
int i=-1;
while(BarDate(i)==today) --i;

double p=Input1.Close[i]; // искомая цена


Однако для секунд может заглючить, т.к. (по моим понятиям, поправьте, если вру) доступ к истории ограничен 5000 баров, что для секунд составляет всего около полутора часов...

Re: Как получить Close вчерашнего дня?

Добавлено: 19 ноя 2019, 21:41
evge
Информация об инструменте

GetQuote() – функция возврата информации по заявкам инструмента, используемого в стратегии.
• Ask – Цена лучшей котировки на продажу. Тип double
• AskQty – Количество заявок на продажу по лучшей котировке, лот. Тип int
• SumAsk – Объем всех заявок на продажу в очереди Торговой Системы, выраженный в лотах. Тип int
• NumAsks – Количество заявок на продажу. Тип int
• Bid – Цена лучшей котировки на покупку. Тип double
• BidQty – Количество заявок на покупку по лучшей котировке, лот. Тип int
• SumBid – Объем всех заявок на покупку в очереди Торговой Системы, выраженный в лотах. Тип int
• NumBids – Количество заявок на покупку. Тип int
• Last – Цена последней сделки/последнее значение индекса. Тип double
• LastQty – Объем последней сделки, в лотах. Тип int
• LastTime – Биржевое время и дата последней сделки/время последнего расчете индекса. Тип DateTime
• Open – Цена первой сделки/ Значение индекса на открытие текущего торгового дня. Тип double
• High – Максимальная цена сделок /индекса за текущую сессию. Тип double
• Low – Минимальная цена сделок /индекса за текущую сессию. Тип double
PrevLast – Цена последней сделки предыдущего торгового дня. Тип double

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

var quote = GetQuote();
double PrevLast = quote.PrevLast;

Re: Как получить Close вчерашнего дня?

Добавлено: 19 ноя 2019, 21:53
evge
Вариант 2:

Вводим глобальную переменную для хранения Close предыдущего дня, в Initialize():

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

AddGlobalVariable("PrevClose", Types.Double, 0);


В OnUpdate():

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

if (BarDate(0) != BarDate(1)) PrevClose = Input1.Close[1];


Недостаток в том, что первый PrevClose в стратегии будет получен только на след день после старта.

Re: Как получить Close вчерашнего дня?

Добавлено: 20 ноя 2019, 06:38
evge
Ещё важно по поводу GetQuote(), учтите такой момент для фондового рынка (акции, облигации):

quote.PrevLast - получение последней цены с учетом аукциона закрытия, на графике в АД4 цена скорее всего будет чуть другой, т.к. там только торговый период без аукционов и нет данных о сделках аукциона открытия (для quote.Open) и аукциона закрытия