Тема: Общие вопросы по написанию скриптов LUA.
Всем доброго времени суток. Хотелось бы попросить админа перенести все мои вопросы, касающиеся написания скриптов на LUA в одну эту тему.
Тем временем следующий вопрос.
1. Пришло время снимать заявки. С выставлением заявок теперь вроде полный порядок(за исключением частичного исполнения заявки, но этот вопрос автоматически решится с реализацией снятия заявок, таков алгоритм), а вот со снятием имеются вопросы.
Само собой уже поизучал тему самостоятельно. Сейчас у меня есть такая функция KillOrder()
function KillOrder()
uniq_trans_id = uniq_trans_id + 1
local trans = {
["ACTION"] = "KILL_ORDER",
["CLASSCODE"] = CLASS,
["SECCODE"] = SEC,
["ORDER_KEY"] = tostring(current_order_num),
["TRANS_ID"] = tostring(uniq_trans_id)
}
local res = sendTransaction(trans)
message("Kill : " .. res, 2)
end
Лишнее, не касающееся сути вопроса я вырезал, чтобы глаза не мозолило.
Для меня абсолютно очевидно, что однозначно нужны "ACTION", "TRANS_ID". В моем случае "TRANS_ID" уникален и его принципиально уже должно хватить для идентификации заявки. С "CLASSCODE" и "SECCODE" для выставления понятно, обязательны, а вот для снятия зачем? Опять же обязателен ли параметр "ORDER_KEY" при условии уникальности "TRANS_ID"? Почему спрашиваю. Я буду работать не с одной заявкой, а как минимум сразу с тремя, этого требует алгоритм. Причем если цена пойдет вверх и отрабатывает заявка на продажу, все остальные убиваются и цикл сначала. Если вниз то убиваются другие заявки. Отсюда проблема с получением "ORDER_KEY". К тому же я строю робота по принципу, ничего не хранить в памяти на случай сбоя, ибо если хранить все в памяти, в случае перезапуска робота данные теряем. Я всю информацию извлекаю из терминала при запуске робота, соответственно и строю всю логику исходя из этого. Вобщем, если обобщить, нужно ли мне отправлять "ORDER_KEY" для снятия заявки? Ибо с этим будут проблемы...
2. В связи с тем, что частичное исполнение заявок в моем случае крайне редкие, возник вопрос по битовым флагам. Касательно заявок с полным исполнением я их все изучил, проверил, и вот что получил:
mask_bits = 7
-- 0 - Заявка на покупку исполнена.
-- 1 - Заявка на покупку активна.
-- 2 - Заявка на покупку снята.
-- 3 -
-- 4 - Заявка на продажу исполнена.
-- 5 - Заявка на продажу активна.
-- 6 - Заявка на продажу снята.
-- 7 -
Значения 3 и 7 в десятичном, впрочем в шестнадцатиричном представлении будет тоже самое, они судя по описанию противоречат, так как 2 бит это покупка/продажа, то при этих значениях соответствующая заявка одновременно будет и активной и снятой. Поэтому я делаю вывод что они не используются вообще. Возможно ли каким то образом узнать о частичном исполнении заявки или искать пути обхода? И в каком состоянии будут эти флаги при том же частичном исполнении заявки?