Подскажите пожалуйста столкнулся с проблемой - номера заявок очень длинные и когда в функцию
function OnTrade(trade) local trade_num = trade.trade_num; local trans_id = trade.trans_id;
приходит trade_num вместо обычного числа из 18 символов приходит что то типа: 1.952337642788e+018. В результате пишет не возможно создать заявку (стоп-ордер).
Как преобразовать такое число с "e+018" в обычное число сколько бы там не было символов?
Для корректной работы с 19-значными номерами заявок, терминал потребуется обновить до версии не ниже 8.4 (лучше сразу выполнить обновление до актуальной версии).
Также заметим, что для работы терминала версии 8.0 и выше, требуется 64-разрядная операционная система. Если у Вас 32-разрядная ОС, ее также потребуется обновить.
Для корректной работы с 19-значными номерами заявок, терминал потребуется обновить до версии не ниже 8.4 (лучше сразу выполнить обновление до актуальной версии).
Также заметим, что для работы терминала версии 8.0 и выше, требуется 64 -разрядная операционная система. Если у Вас 32-разрядная ОС, ее также потребуется обновить.
Если бы так просто было обновиться - я бы с удовольствием... Судя по всему проблема в ограничениях на кол-во символов для поля TRANS_ID
TRANS_ID
-
Уникальный идентификационный номер заявки, значение от «1» до «2 147 483 647»
Нашел решение в генерации уникального числа следующим образом:
500 служебный код + os.date("%d%H%M%S") + № контракта (++) Проблема в том что не влажу в число символов.
Можно ли как-то вот это " os.date("%d%H%M%S") " преобразовать в меньшее число символов? По аналогии как md5() но только нужны числа.
Иван, Вы же сами сказали что от «1» до «2 147 483 647» В чем сложность сгенерировать число входящее в этот диапозон не понятно. Если хочется получить его из даты, тот же UNIX TIME вполне в него влезает
Иван, Дополним, судя по всему вопрос не технический, а логический. Нам не важно что вы напишите в TRANS_ID, главное чтобы размер был не больше «2 147 483 647»
Вы сами решите для себя нужна ли Вам вообще os.date("%d%H%M%S"), может ее не надо там указывать и все? если нужна, сами для себя решите зачем, может там достаточно краткого формата ДДММГГ
Если вопрос в том, как в os.date указать выходной формат, то ответ есть в документации на Lua
Sergey Gorokhov написал: Иван, Дополним, судя по всему вопрос не технический, а логический. Нам не важно что вы напишите в TRANS_ID, главное чтобы размер был не больше «2 147 483 647»
Вы сами решите для себя нужна ли Вам вообще os.date("%d%H%M%S"), может ее не надо там указывать и все? если нужна, сами для себя решите зачем, может там достаточно краткого формата ДДММГГ
Если вопрос в том, как в os.date указать выходной формат, то ответ есть в документации на Lua
Таким образом я пытаюсь сгенерировать уникальное число для ID-транзакции. А UNIX TIME как получить?
UNIX TIME - это просто количество секунд начиная с какой-то даты (1 января 1970г). можно получить через тот же os.date Судя по всему, Вам не это нужно. Просто сами определите для себя какое число Вам требуется и сгенерируйте. тех поддержка в этом месте не причем. Вопрос только и только на Вашей стороне. Хотите, считайте тот же UNIX TIME но с 2000 года или "сожмите" дату до нужного размера (например сложив чила) Или другие варианты которые Вам понравятся.
UNIX TIME - это просто количество секунд начиная с какой-то даты (1 января 1970г). можно получить через тот же os.date Судя по всему, Вам не это нужно. Просто сами определите для себя какое число Вам требуется и сгенерируйте. тех поддержка в этом месте не причем. Вопрос только и только на Вашей стороне. Хотите, считайте тот же UNIX TIME но с 2000 года или "сожмите" дату до нужного размера (например сложив чила) Или другие варианты которые Вам понравятся.
Мне нужно как-то сгенерировать TRANS_ID - уникальное число со смыслом. А не просто уникальное число.
Иван написал: Мне нужно как-то сгенерировать TRANS_ID - уникальное число со смыслом. А не просто уникальное число.
Не понятно что Вам мешает это сделать Есть понимание какой смысл в TRANS_ID Вам нужен? Если нет, тогда определитесь и далее исходя из этого действуйте.
Правильно ли понимаю если у меня по какой-то причине будет в течении дня сгенерировано два одинаковых TRANS_ID с одинаковыми номерами - максимум чем мне это грозит при снятии стоп-лоса, это то, что будет снят только 1, а второй останется болтаться?
Иван написал: Правильно ли понимаю если у меня по какой-то причине будет в течении дня сгенерировано два одинаковых TRANS_ID с одинаковыми номерами - максимум чем мне это грозит при снятии стоп-лоса, это то, что будет снят только 1, а второй останется болтаться?
Для того чтобы снять стоп, параметр TRANS_ID вообще не нужен. В транзакции на снятие стопа есть только номер стоп заявки, это НЕ тоже что TRANS_ID.
TRANS_ID - Нужен исключительно Вам т.е. Вашему роботу. QUIK на него вообще никак не смотрит. Нам не известно какая логика заложена в Вашем роботе, следовательно не можем ответить на вопрос о его поведении.