Доброго времени суток. Есть руками выставленный стоп. Задача: убедиться, что ордер не просто выставился, а произошла покупка. Насколько я понимаю, нужно ловить транзакцию и ее мучить, но в OnTransReply ничего не приходит даже после срабатывания :( Спасибо.
Пользователь
Сообщений: Регистрация: 23.01.2015
19.08.2016 06:12:33
Здравствуйте, В OnTransReply приходят ответы только на транзакции отправленные из Lua
Пользователь
Сообщений: Регистрация: 02.07.2015
19.08.2016 07:04:08
Скорее всего нужно ловить OnOrder при выставлении заявка - срабатывании стопа И потом OnTrade - при срабатывании выставленной стопом заявки - по факту сделки
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
19.08.2016 07:32:00
Если заявка исполняется сразу, то, как правило, OnTrade приходит раньше OnOrder. Поэтому лучше отслеживать статус "Исполнена" порождённой заявки по OnOrder.
Надо делать так, как надо. А как не надо - делать не надо.
Пользователь
Сообщений: Регистрация: 01.10.2015
19.08.2016 11:43:46
А разве нельзя просто по trans_id запросец направить? Только с сеточкой для ловли транзакций стоять?
Пользователь
Сообщений: Регистрация: 23.01.2015
19.08.2016 11:48:32
Цитата
WennY написал: А разве нельзя просто по trans_id запросец направить? Только с сеточкой для ловли транзакций стоять?
на транзакциях отправленных через интерфейс терминала, параметр trans_id отсутствует и установить его нельзя.
Пользователь
Сообщений: Регистрация: 01.10.2015
19.08.2016 12:14:25
Хорошо, допустим, я отловил таблицу с моей транзакцией. Как теперь достоверно определить, была ли открыта (а не просто выставлена) позиция?
Пользователь
Сообщений: Регистрация: 23.01.2015
19.08.2016 12:20:36
Цитата
WennY написал: Хорошо, допустим, я отловил таблицу с моей транзакцией. Как теперь достоверно определить, была ли открыта (а не просто выставлена) позиция?
смотря что понимать под "открыта позиция", некоторые понимают под этим заявку, а некоторые сделку. Вот Вы как это понимаете?
смотря что понимать под "открыта позиция", некоторые понимают под этим заявку, а некоторые сделку. Вот Вы как это понимаете?
Заявка - это лимитный биржевой ордер, выставленный напрямую или через условный стоп на брокере. Под сделкой я имею в виду именно свершившийся акт входа в позицию, а не отправку на биржу лимитной заявки.
смотря что понимать под "открыта позиция", некоторые понимают под этим заявку, а некоторые сделку. Вот Вы как это понимаете?
Заявка - это лимитный биржевой ордер, выставленный напрямую или через условный стоп на брокере. Под сделкой я имею в виду именно свершившийся акт входа в позицию, а не отправку на биржу лимитной заявки.
Соответственно, если Вам нужна сделка смотрите колбек для сделок OnTrade. Или саму таблицу сделок через getItem
Пользователь
Сообщений: Регистрация: 23.01.2015
19.08.2016 12:37:23
Дополню, если нужно увидеть изменение статуса заявки, это делается через поле flags
А что такое linkedorder? Его можно использовать в качестве привязки? Только что скриптом провел куплю-продажу; у заявки и сделки одно и то же значение. В чем отличия от trans_id?
в таблице стоп заявок это номер заявки в торговой системе, зарегистрированной по наступлению условия стоп-цены. в таблице заявок это исходный номер заявки с указанной датой исполнения при замене заявки в ходе клиринга. Параметр заявок срочного рынка FORTS.
Цитата
WennY написал: Его можно использовать в качестве привязки?
в сделках этого параметра нет, но там есть order_num по которому можно найти заявку и стоп заявку (как раз по полю linkedorder)
trans_id задает робот как ему угодно а linkedorder задается сервером
Пользователь
Сообщений: Регистрация: 01.10.2015
19.08.2016 13:31:36
Параметр linkedorder, указанный в стоп-заявке, сразу в ней доступен или он туда прописывается уже после срабатывания условий стопа?
Пользователь
Сообщений: Регистрация: 23.01.2015
19.08.2016 13:35:09
Цитата
WennY написал: Параметр linkedorder, указанный в стоп-заявке, сразу в ней доступен или он туда прописывается уже после срабатывания условий стопа?
Пока стоп не сработает не будет заявки и значит нечего писать в linkedorder
Пользователь
Сообщений: Регистрация: 01.10.2015
19.08.2016 13:38:56
Цитата
Sergey Gorokhov написал: Пока стоп не сработает не будет заявки и значит нечего писать в linkedorder
Ну, может стоп заранее резервирует id под будущий трейд
А зачем нужен flags сделкам? Сделка - это ведь исполненная заявка, так какие ещё статусы там могут быть?
Пользователь
Сообщений: Регистрация: 23.01.2015
19.08.2016 13:55:36
Цитата
WennY написал: Ну, может стоп заранее резервирует id под будущий трейд
На московской бирже, где собственно и исполняются заявки, нет возможности заранее зарезервировать номер заявки.
Цитата
WennY написал: А зачем нужен flags сделкам? Сделка - это ведь исполненная заявка, так какие ещё статусы там могут быть?
посмотрите документацию, там не только статусы.
Пользователь
Сообщений: Регистрация: 01.10.2015
19.08.2016 13:58:51
Я нашел только "Флаги для таблиц Заявки, Заявки на внебиржевые сделки, Сделки, Сделки для исполнения".
Пользователь
Сообщений: Регистрация: 01.10.2015
19.08.2016 14:07:54
Я лишь хочу быть уверенным, что сделка состоялась или же, если она может не состояться, что она предприняла отчаянную попытку, которая закончилась провалом. Означает ли заполнение 22526627011 у стопа-заявки гарантией того, что сделка состоялась? или она может все-таки не состояться?
Пользователь
Сообщений: Регистрация: 01.10.2015
19.08.2016 14:08:26
* Под цифрами я конечно же имел в виду linkedorder, прошу прощения.
Пользователь
Сообщений: Регистрация: 01.10.2015
19.08.2016 14:11:32
Поставим задачу более предметно. Есть выставленный руками/робот стоп-ордер. Как мне наиболее грамотно проконтролировать осуществление им сделки в формате "успешно осуществлена/попытка осуществлена, но неудачно"?
Пользователь
Сообщений: Регистрация: 01.10.2015
19.08.2016 14:49:30
Может, понадобится кому. Ищет по linkedorder. Исходит из предпосылки, что ежели транзакция помещена в trades, то позиция была открыта. Если данная предпосылка не совсем верна и в таблицу trades может затесаться непроведенная транза, то просьба поправить.
Код
-- проведена ли сделка по данному стоп-ордеру
function isTradeOfStopOrderWasDone(stopOrder)
for i = 0, getNumberOf("trades") - 1 do
local tradeOrderNum = getItem("trades", i).order_num
if tonumber(stopOrder.linkedorder) == tradeOrderNum then
return true
end
end
return false
end
Пользователь
Сообщений: Регистрация: 23.01.2015
20.08.2016 06:47:33
Цитата
WennY написал: Я лишь хочу быть уверенным, что сделка состоялась или же, если она может не состояться, что она предприняла отчаянную попытку, которая закончилась провалом.
Сделка не может "предпринять попытки"! Это сделка - факт совершения операции. Если сделка сама по себе просто существует, это уже означает что заявка исполнилась, либо частично исполнилась.
Цитата
WennY написал: Означает ли заполнение 22526627011 у стопа-заявки гарантией того, что сделка состоялась? или она может все-таки не состояться?
Совершенно нет, linkedorder это заявка!, а не сделка. Грубо, приходите на рынок и говорите что хотите купить, но не факт что у Вас кто-то что-то купит.
Цитата
WennY написал: Есть выставленный руками/робот стоп-ордер. Как мне наиболее грамотно проконтролировать осуществление им сделки в формате "успешно осуществлена/попытка осуществлена, но неудачно"?
По количеству исполненного количества. Как контролировать исполненное количество уже на Ваш вкус, хотите через заявки, хотите по сделкам.