Получение статуса выполненных/снятых заявок

Страницы: 1
RSS
Получение статуса выполненных/снятых заявок
 

Добрый день! Подскажите, как получить статус отработавшей или снятой заявки постфактум.

Объясню задачу на примере. Робот выставляет заявки и по той или иной причине отключается. Через некоторое время он перезапускается и подтягивает из собственного лога список заявок, которые были актуальны на момент его выключения. Нужно понять, какие из них выполнились, а какие были сняты с биржи (вручную или во время клиринга), то есть синхронизировать внутреннее состояние с фактической ситуацией по заявкам на бирже.

Вопроса два:

  1. Чтобы понять, какие заявки все еще активны, нужно сопоставить заявки из лога с таблицей активных заявок в Квике. По какому идентификатору их можно сопоставить? Скажем, в структуре транзакции есть поле номера заявки в торговой системе, но я не знаю, сохраняется ли этот номер на стороне биржи или же это просто внутренний номер Квика, который будет меняться для одной и той же заявки между перезапусками торговой системы.
  2. Откуда взять историю отработанных/снятых заявок вообще не понятно. Я читал, что биржа сохраняет ее в течение торгового дня. Как к ней обратиться в Lua?

Спасибо!

 
И еще вопрос вдогонку: как узнать фактическую среднюю цену исполнения рыночной заявки? Такая заявка может исполняться в несколько трейдов с разными ценами, значит нужно как-то считать среднюю - в OnTrade?
 
Номер заявки внутри дня уникален. Искать нужно по следующей цепочке:

Уникальный номер транзакции (создаем сами) -> ищем заявку (по номеру транзакции) -> ищем сделки (по найденному номеру заявки)

По найденным сделкам рассчитываем среднюю.
 
Станислав, спасибо. Я верно понимаю, что внутри дня будет доступна вся информация по уже закрытым сделкам (в течение этого же дня), то есть то, что вы написали, отвечает фактически на все мои вопросы выше?
 
Да, вся информация доступна до конца дня. Таблицы брать используя функцию SearchItems.
Код
TABLE SearchItems(STRING table_name, NUMBER start_index, NUMBER end_index, 
FUNCTION fn [, STRING params])
Названия таблиц (table_name): "orders", "stop_orders", "trades"
 
Подскажите еще один момент пожалуйста: как корректно получить текущую "индексную" цену актива? Мне нужно следить за котировками, чтобы реагировать определенным образом на достижение текущей средней ценой разных уровней (просто следить, без выставления на эти уровни лимитных заявок). Придумываются как минимум два варианта: 1) реагировать на каждое изменение стакана и пересчитывать его среднюю, и 2) следить за графиком. Спасибо.
 
Есть еще 3 вариант, следить за значением в OnParam() / getParamEx(). Поле "LAST" Цена последней сделки. Я бы именно так и делал, если не требуется анализ свечей.
 
Станислав, анализ свечей не нужен, задача - в реальном времени обнаружить момент, когда доходность по позиции в случае ее продажи в моменте по рыночной цене достигнет или превысит заданный порог.
 
spy, Вот и ориентируйтесь на цену последней сделки - это, по крайней мере, реальная сделка (даже если она фиктивная), а в стаканах частенько творится что-то невообразимое. Лично я смотрю только на LAST, и лишь в момент подачи заявки могу скорректировать цену на BID или OFFER - чисто для скорости исполнения (если эта цена отстоит от LAST не более, чем на 0.1%). И рыночную цену, кстати, тоже не использую никогда. Что и другим советую.
 
Подскажите пожалуйста тип значения поля ORDER_KEY в таблице транзакции. Судя по описанию поля, заявка идентифицируется номером, однако в примерах я вижу приведение типа к строке через toString(). Дело в том, что я пишу на C++, используя Lua лишь как интерфейс к Квику, и мне хотелось бы четко понимать фактические типы данных.
 
Здравствуйте,
все числовые значения полей, в том числе и поле "ORDER_KEY", передаются в функцию "sendTransaction" в виде строковых значений. Более подробно можно посмотреть в разделе "Функции взаимодействия скрипта Lua и Рабочего места QUIK»"  документа QLUA.chm.
 
Daniil Pozdnyakov,
 
Daniil Pozdnyakov,
Здравствуйте, спасибо за ответ. Подскажите пожалуйста еще по вопросу из другого треда: как узнать от биржи текущий депозит (с просадкой по инструментам или без)?
 
Здравствуйте,
К сожалению, данного функционала нет. Если вы хотите узнать сумму всех денежных средств, переданную кредитным учреждениям, то необходимо обратиться к брокеру.
Страницы: 1
Читают тему (гостей: 1)
Наверх