Здравствуйте. Разрабатываю торгового робота, в основе стратегии которого лежит подача заявок сразу на несколько инструментов. Но дело в том, что 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
Наверное, я не совсем четко сформулировал вопрос. Мне нужно программно узнать номер заявки. Вариант зайти и посмотреть в таблице заявок не подходит, робот должен работать в непрерывном режиме. Я подаю заявку с помощью Lua при помощи sendTransaction, затем мне нужно снять поданную ранее заявку. Можно ли как-то сделать это через Lua?
Игорь, спасибо! Помогло, узнал номер последней заявки при помощи getNumberOf('orders') и все получилось. Продублирую второй вопрос: "Также, хотел бы спросить, не будет ли убытка в случае операции подачи заявки и практически моментального снятия?". Может, кто-то знает? И появился еще один. Я выставляю заявку, но в поле состояние вижу строку "Снята". Почему она уже снята? Где можно об этом почитать? О состояниях заявок, какие бывают, что они означают.
если заявка не выставилась, то снимать её не нужно, это же очевидно. она не выставилась, конец фильма. когда заявку подаете, надо вам указывать собственный ваш внутренний номер. он приходит в ответе ontransactionreply как dwtransid
Не знаю, что такое уровень рынка. А на что влияет цена заявки?
Уровень рынка - цена совершения сделок по данному инструменту в данный момент.
Цитата
Также, хотел бы спросить, не будет ли убытка в случае операции подачи заявки и практически моментального снятия?
Прибыль/Убыток образуется при открытии и последующем закрытии позиции. Если цена заявки на покупку ниже рынка, вы выставили и сразу сняли - сделок нет, соответственно нет прибыли\убытка. Если цена заявки на покупку по рынку или выше, вы открыли позицию на объем встречного предложения. Сразу снять сможете только неудовлетворенный остаток (если он будет). Т.е. Вы в позиции. Говорить о прибыли/убытке можно после того как Вы закроете позицию, а не после попытки снять выставленную заявку.
Цитата
Но дело в том, что QUIK не позволяет подавать заявки на некоторые инструменты.
Я так понимаю речь идет о 2,3,... эшелонах. Возможно, их нет в листинге биржи. Возможно, стратегия основана на спреде между бумагами и одно плече на бирже не торгуется. Но это не важно. Мне кажется легче выяснить заранее, торгуется ли бумага и не использовать данную стратегию. И не придется совершать телодвижения с подачей и снятием заявок.
Андрей написал: Также, хотел бы спросить, не будет ли убытка в случае операции подачи заявки и практически моментального снятия?
Скорость снятия никаких "санкций" не может повлечь. Однако, если алгоритм предполагает, что вы будете дрючить биржу валом заявок, то можете попасть за штраф за т.н. "неэффективные транзакции". Это когда число заявок огромно (насколько помню, начинается от 2000 в сутки), а число сделок минимально. Я не помню, сама биржа или брокер противодействуют таким образом необоснованной нагрузке на систему, но если тысячами пустых заявок будете заваливать брокера, влетите на этот штраф.
Там используется формула какая-то. Штраф зависит от объема заявок и только в том случае, если мало сделок. Т.е. если у вас не 2000 заявок в сутки, а 200 тыс., но при этом каждая пятая-десятая приводит к сделке, то никакой штраф вам не светит, все ОК.
Андрей написал: Также, хотел бы спросить, не будет ли убытка в случае операции подачи заявки и практически моментального снятия?
Этот вопрос следует задать вашему брокеру. Обязательно уточнив про какой рынок идёт речь (каким типом инструментов в торгуете). Общего ответа нет, зависит от брокера и рынка (биржи)