QUIKSharp icon indicating copy to clipboard operation
QUIKSharp copied to clipboard

Неверный номер заявки на срочном рынке

Open exvion opened this issue 1 year ago • 3 comments

При отправке заявки на срочный рынок получаю ответ: OnTransReply { result_msg: 'Заявка 2030028288298532893 успешно зарегистрирована.', order_num: 2030028288298532900, } еще пример OnTransReply { result_msg: 'Заявка 2030028288298500206 успешно зарегистрирована.', order_num: 2030028288298500000, } order_num не равен значению в result_msg. Несколько лет назад quik перешел в нумерации заявок с 14-знаков на 19-знаков, видимо при передача номера заявки не хватает точности.

quiksharp использует библиотеку dkjson, видимо на этом этапе ошибка

HANDLING LARGE AND/OR PRECISE NUMBERS

Without special handling, numbers in JSON can lose precision in Lua. For example:

 T = JSON:decode('{  "small":12345, "big":12345678901234567890123456789, "precise":9876.67890123456789012345  }')

 print("small:   ",  type(T.small),    T.small)
 print("big:     ",  type(T.big),      T.big)
 print("precise: ",  type(T.precise),  T.precise)

 produces

 small:          number  12345
 big:            number  1.2345678901235e+28
 precise:        number  9876.6789012346

https://github.com/micodev/channel-list-bot/blob/5c2431888a7fffa88f378c40171a7e2608741303/dkjson.lua#L338

exvion avatar Oct 15 '24 15:10 exvion

В качестве решения сделал просто конвертацию номера в строку lua\qscallbacks.lua

function OnOrder(order)
    local msg = {}
    msg.t = timemsec()
    msg.id = nil
    msg.data = order
    msg.data.order_num = tostring(msg.data.order_num)
    msg.cmd = "OnOrder"
    sendCallback(msg)
end

function OnTransReply(trans_reply)
    local msg = {}
    msg.t = timemsec()
    msg.id = nil
    msg.data = trans_reply
    msg.data.order_num = tostring(msg.data.order_num)
    msg.cmd = "OnTransReply"
    sendCallback(msg)
end

exvion avatar Oct 15 '24 16:10 exvion

В данном случае проблема где-то у Вас. Параметр номера заявки был приведен в типу Long, сразу после объявления о готовящихся изменениях. Я торгую на бирже буквально ежедневно, одноверменно через двух разных брокеров, и никаких проблем с размерностью номеров заявок не испытываю.

Возможно, Вы пропустили какое-то обновление, или обновились некорректно...

Pr0phet1c avatar Oct 16 '24 14:10 Pr0phet1c

Да, возможно, так как я пишу на js, обрабатываю json, который получаю от quiksharp.lua. В js тип number имеет ограничения, максимум 9007199254740991, а это 16 знаков

exvion avatar Oct 16 '24 20:10 exvion