Общие вопросы по разработке > Как получить Close вчерашнего дня?

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
ZiZ
Сообщения: 36
Зарегистрирован: 19 ноя 2019, 15:32
Благодарил (а): 6 раз
Поблагодарили: 2 раза

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

Непрочитанное сообщение ZiZ » 19 ноя 2019, 16:03

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

BugsDigger
Сообщения: 535
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 92 раза

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

Непрочитанное сообщение BugsDigger » 19 ноя 2019, 20:23

Типа такого:

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

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

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


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

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

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

Непрочитанное сообщение evge » 19 ноя 2019, 21:41

Информация об инструменте

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;
никогда такого не было и вот опять

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

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

Непрочитанное сообщение evge » 19 ноя 2019, 21:53

Вариант 2:

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

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

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


В OnUpdate():

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

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


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

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

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

Непрочитанное сообщение evge » 20 ноя 2019, 06:38

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

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


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

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

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