Как узнать id поданной заявки?

Страницы: 1
RSS
Как узнать id поданной заявки?
 
Здравствуйте. Разрабатываю торгового робота, в основе стратегии которого лежит подача заявок сразу на несколько инструментов. Но дело в том, что QUIK не позволяет подавать заявки на некоторые инструменты. Необходима возможность снятия ранее поданной заявки, т.к. в случае, если заяка на какой-то инструмент не выставилась, то стратегия не имеет смысла, но для этого необходимо знать id этой поданной заявки. Подскажите, пожалуйста, есть ли какой-то способ? Также, хотел бы спросить, не будет ли убытка в случае операции подачи заявки и практически моментального снятия?  
 
Цитата
Андрей написал:
Здравствуйте. Разрабатываю торгового робота, в основе стратегии которого лежит подача заявок сразу на несколько инструментов. Но дело в том, что QUIK не позволяет подавать заявки на некоторые инструменты. Необходима возможность снятия ранее поданной заявки, т.к. в случае, если заяка на какой-то инструмент не выставилась, то стратегия не имеет смысла, но для этого необходимо знать id этой поданной заявки. Подскажите, пожалуйста, есть ли какой-то способ? Также, хотел бы спросить, не будет ли убытка в случае операции подачи заявки и практически моментального снятия?  
Добрый день.
Заявку можно снимать либо по номеру (у каждой заявки есть номер), либо смотреть на состояние заявки и снимать по условию.
Например:

function fn(order_num, flags,client_code,class_code,sec_code)
    if (client_code=="LB") --в кавычках указать нужный код клиента
    and (bit.band(flags, 0x1) ~= 0) then --проверяем что заявка активна
      transaction = {TRANS_ID="1", ACTION="KILL_ORDER", CLASSCODE="TQBR", SECCODE="AFLT", ORDER_KEY="1"}
        res = sendTransaction(transaction) --снимаем заявку
        return true
    else
        return false
    end
end

SearchItems("orders", 0, getNumberOf("all_trades")-1, fn, "order_num, flags,client_code,class_code,sec_code" )
 
Наверное, я не совсем четко сформулировал вопрос. Мне нужно программно узнать номер заявки. Вариант зайти и посмотреть в таблице заявок не подходит, робот должен работать в непрерывном режиме. Я подаю заявку с помощью Lua при помощи sendTransaction, затем мне нужно снять поданную ранее заявку. Можно ли как-то сделать это через Lua?  
 
Номер заявки можно узнать при ее подачи через ф-цию обратного вызова
Код
function OnOrder(order)
 if (order.trans_id == trans_id) then
  order_num = order.order_num; --номер заявки
   flag_OnOder = true;  --именно наша заявка
    return;
 end;
end;
или обратиться к таблице заявок через getItem().
 
Игорь, спасибо! Помогло, узнал номер последней заявки при помощи getNumberOf('orders') и все получилось. Продублирую второй вопрос: "Также, хотел бы спросить, не будет ли убытка в случае операции подачи заявки и практически моментального снятия?". Может, кто-то знает? И появился еще один. Я выставляю заявку, но в поле состояние вижу строку "Снята". Почему она уже снята? Где можно об этом почитать? О состояниях заявок, какие бывают, что они означают.
 
Цитата
"Также, хотел бы спросить, не будет ли убытка в случае операции подачи заявки и практически моментального снятия?".
Для меня вопрос не понятен. Мало данных. Какой уровень рынка? По какой цене заявка? ...??
Цитата
Я выставляю заявку, но в поле состояние вижу строку "Снята". Почему она уже снята?
- условие сделки «Немедленно или отклонить»
- условия сделки не соответствуют каким-либо требованиям
Цитата
Где можно об этом почитать? О состояниях заявок, какие бывают, что они означают.
Руководство пользователя QLua - Структуры данных - Транзакции

Руководство пользователя QUIK - Таблица заявок
 
Цитата
Игорь Б написал:
Цитата
"Также, хотел бы спросить, не будет ли убытка в случае операции подачи заявки и практически моментального снятия?".
Для меня вопрос не понятен. Мало данных. Какой уровень рынка? По какой цене заявка? ...??
Не знаю, что такое уровень рынка. А на что влияет цена заявки?
 
если заявка не выставилась, то снимать её не нужно, это же очевидно. она не выставилась, конец фильма.
когда заявку подаете, надо вам указывать собственный ваш внутренний номер.
он приходит в ответе ontransactionreply как dwtransid
 
вообще читайте мануал по функциям которые вызываете, узнаете много интересного.
 
Цитата
Не знаю, что такое уровень рынка. А на что влияет цена заявки?
Уровень рынка - цена совершения сделок по данному инструменту в данный момент.
Цитата
Также, хотел бы спросить, не будет ли убытка в случае операции подачи заявки и практически моментального снятия?
Прибыль/Убыток образуется при открытии и последующем закрытии позиции. Если цена заявки на покупку ниже рынка, вы выставили и сразу сняли - сделок нет, соответственно нет прибыли\убытка. Если цена заявки на покупку по рынку или выше, вы открыли позицию на объем встречного предложения. Сразу снять сможете только неудовлетворенный остаток (если он будет). Т.е. Вы в позиции. Говорить о прибыли/убытке можно после того как Вы закроете позицию, а не после попытки снять выставленную заявку.
Цитата
Но дело в том, что QUIK не позволяет подавать заявки на некоторые инструменты.
Я так понимаю речь идет о 2,3,... эшелонах. Возможно, их нет в листинге биржи. Возможно, стратегия основана на спреде между бумагами и одно плече на бирже не торгуется. Но это не важно. Мне кажется легче выяснить заранее, торгуется ли бумага и не использовать данную стратегию. И не придется совершать телодвижения с подачей и снятием заявок.  
 
Цитата
Андрей написал:
Также, хотел бы спросить, не будет ли убытка в случае операции подачи заявки и практически моментального снятия?  
Скорость снятия никаких "санкций" не может повлечь. Однако, если алгоритм предполагает, что вы будете дрючить биржу валом заявок, то можете попасть за штраф за т.н. "неэффективные транзакции". Это когда число заявок огромно (насколько помню, начинается от 2000 в сутки), а число сделок минимально. Я не помню, сама биржа или брокер противодействуют таким образом необоснованной нагрузке на систему, но если тысячами пустых заявок будете заваливать брокера, влетите на этот штраф.


Там используется формула какая-то. Штраф зависит от объема заявок и только в том случае, если мало сделок. Т.е. если у вас не 2000 заявок в сутки, а 200 тыс., но при этом каждая пятая-десятая приводит к сделке, то никакой штраф вам не светит, все ОК.
 
Цитата

Цитата
Андрей написал:
Также, хотел бы спросить, не будет ли убытка в случае операции подачи заявки и практически моментального снятия?  
Этот вопрос следует задать вашему брокеру.
Обязательно уточнив про какой рынок идёт речь (каким типом инструментов в торгуете).
Общего ответа нет, зависит от брокера и рынка (биржи)
Страницы: 1
Читают тему (гостей: 1)
Наверх