Добрый день!
Подскажите, как роботу торгующему на секундных интервалах получить Close вчерашнего дневного бара?
В инициализации указываю AddInput("Input1", Inputs.Candle, -1, true, ""), соответственно Input1.Close выдаёт данные только секундных баров, а нужно получить Close вчерашнего дня.
Сейчас на старте робота приходиться через параметр вручную вводить закрытие вчерашнего дня, а хочется автоматизации.
Заранее благодарен.
Общие вопросы по разработке > Как получить Close вчерашнего дня?
-
- Сообщения: 535
- Зарегистрирован: 11 ноя 2018, 17:11
- Благодарил (а): 21 раз
- Поблагодарили: 92 раза
Re: Как получить Close вчерашнего дня?
Типа такого:
Однако для секунд может заглючить, т.к. (по моим понятиям, поправьте, если вру) доступ к истории ограничен 5000 баров, что для секунд составляет всего около полутора часов...
Код: Выделить всё
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 вчерашнего дня?
Информация об инструменте
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
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 вчерашнего дня?
Вариант 2:
Вводим глобальную переменную для хранения Close предыдущего дня, в Initialize():
В OnUpdate():
Недостаток в том, что первый PrevClose в стратегии будет получен только на след день после старта.
Вводим глобальную переменную для хранения 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 вчерашнего дня?
Ещё важно по поводу GetQuote(), учтите такой момент для фондового рынка (акции, облигации):
quote.PrevLast - получение последней цены с учетом аукциона закрытия, на графике в АД4 цена скорее всего будет чуть другой, т.к. там только торговый период без аукционов и нет данных о сделках аукциона открытия (для quote.Open) и аукциона закрытия
quote.PrevLast - получение последней цены с учетом аукциона закрытия, на графике в АД4 цена скорее всего будет чуть другой, т.к. там только торговый период без аукционов и нет данных о сделках аукциона открытия (для quote.Open) и аукциона закрытия
никогда такого не было и вот опять
Вернуться в «Общие вопросы по разработке»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей