При снятии заявки перемерт account пустой

Страницы: 1
RSS
При снятии заявки перемерт account пустой
 
Имеется заявка, снимаю ее скриптом
Код
function main()
  local transaction={
    ["TRANS_ID"]  = "12345",
    ["ACCOUNT"]   = "4103YEK",
    ["CLASSCODE"] = "SPBFUT",
    ["SECCODE"]   = "SiU1",
    ["ACTION"]    = "KILL_ORDER",
    ["ORDER_KEY"] = "1892946353983939919"
  }
  sendTransaction(transaction)
  sleep(1000)
end

function OnTransReply(trans_reply)
  local str="OnTransReply\n"
  for k,v in pairs(trans_reply) do
    str=str..tostring(k).."="..tostring(v).."\n"
  end
  message(str)
end
Вывод скрипта
Код
OnTransReply
result_msg=Заявка 1892946353983939919 снята. Неисполненный остаток: 8.
quantity=0,0
class_code=SPBFUT
firm_id=MC0139600000
server_trans_id=1841
error_code=0
brokerref=
uid=160707
client_code=4103YEK
trans_id=12345
sec_code=SiU1
date_time=table: 000001AAA41E6A70
price=0,0
balance=8,0
gate_reply_time=table: 000001AAA41E6CB0
status=3
first_ordernum=0
flags=2359297
error_source=0
exchange_code=
time=102038
account=
order_num=1892946353983939919
Все отлично снимается, но один момент мне не нравится.

Почему при получении ответа на заявку параметр account пустой, я же задал его в таблице transaction?
Ну и главный вопрос, что мне исправить, чтобы при получении ответа на транзакцию параметр account был заполнен правитьно (ожидаю там увидеть "4103YEK")?

PS: На всякий случай сразу упомяну, что в снимаемой заявке поле account было заполнено правильно.



QUIK 8.13.1.16
 
Здравствуйте,
В транзакции на снятие заявки нет такого параметра ACCOUNT, да он и не нужен.
То что Вы его указали, просто игнорируется.
Пример транзакции из документации:
CLASSCODE=TQBR; SECCODE=RU0009024277; TRANS_ID=5; ACTION=KILL_ORDER; ORDER_KEY=503983;
 
Sergey Gorokhov, спасибо за пояснение.
Цитата
Sergey Gorokhov написал:
В транзакции на снятие заявки нет такого параметра ACCOUNT
Действительно, убрал параметр ACCOUNT ничего не изменилось, все снимается.

PS: Ради интереса сейчас поочередно убирал разные параметры при снятии заявок и наблюдал снимется ли заявка.
Оказывалось что SECCODE тоже не нужен, а вот CLASSCODE обязателен.
Я искренне удивлен.
 
Цитата
BlaZed написал:
PS: Ради интереса сейчас поочередно убирал разные параметры при снятии заявок и наблюдал снимется ли заявка. Оказывалось что SECCODE тоже не нужен, а вот CLASSCODE обязателен.Я искренне удивлен.
SECCODE тоже может быть не нужен.
Но это не всегда так. На некоторых рынках есть классы в которых нумерация заявок идет в разрезе инструментов, а не классов.
Т.е. есть ситуации когда у разных инструментов одного класса номера заявок могут совпадать. И при этом это совершенно разные заявки

CLASSCODE нужен всегда т.к. сервер должен понимать по какому рынку отправляется транзакция (читай в какую ТС ее послать)
 
Цитата
Sergey Gorokhov написал:
На некоторых рынках есть классы в которых нумерация заявок идет в разрезе инструментов, а не классов.
Т.е. есть ситуации когда у разных инструментов одного класса номера заявок могут совпадать. И при этом это совершенно разные заявки

Получается для корректной работы функции getOrderByNumber нужно было добавить ещё код бумаги.
Надо делать так, как надо. А как не надо - делать не надо.
 
Старатель,
К сожалению в ответе произошла ошибка.
Заявки не могут быть с совпадающим номером на одном классе.
И SECCODE на транзакции KILL_ORDER не нужен.
И в Lua тоже. Почему у автора не получилось снять заявку не понятно.
На самом деле номер в разрезе инструмента может совпадать только на обезличенных сделках
 
Цитата
Sergey Gorokhov написал:
номер в разрезе инструмента может совпадать только на обезличенных сделках
Поясните.
Надо делать так, как надо. А как не надо - делать не надо.
 
Старатель,
Речь о некоторых зарубежных шлюзах, где номер обезличенной сделки может быть один на разных инструментах одного класса.
В свое время, из-за этого SecCode был добавлен в список первичного ключа таблицы AllTrades в модуле экспорта биржевой информации.
 
Цитата
Sergey Gorokhov написал:
номер обезличенной сделки может быть один на разных инструментах одного класса
Так в разрезе класса или инструмента?
Надо делать так, как надо. А как не надо - делать не надо.
 
Старатель,
Уже был развернутый ответ
 
Я так понял, что номера обезличенных сделок могут совпадать в разрезе класса.
Надо делать так, как надо. А как не надо - делать не надо.
 
Тогда правильно ли я понимаю, что первичными ключами для таблиц являются:
для заявок: order_num, class_code
для сделок: trade_num, order_num, sec_code
для обезличенных сделок: trade_num, sec_code, class_code
?
Надо делать так, как надо. А как не надо - делать не надо.
 
Для заявок OrderNum+ClassCode+TradeDate
Для сделок TradeNum+Operation+ClassCode+TradeDate
Для обезличенных сделок TradeNum+ClassCode+TradeDate+SecCode

на сделках (не обезличенных) нумерация на разных инструментах одного класса не совпадает.
Да это значит что номер одной сделки в обезличенных, и в обычных, может быть разным
Страницы: 1
Читают тему
Наверх