Максимальное значение TRANS_ID для транзакций

Страницы: 1
RSS
Максимальное значение TRANS_ID для транзакций
 
Где-то прочитал, что TRANS_ID -- уникальный идентификационный номер заявки со значениями от «1» до «2 147 483 647»

То есть получается от 1 до 2^32 - 1.
Это когда Квик был ещё 32-битным? Надеюсь сегодня это значение гораздо больше.
Поправьте меня, если я не прав.
 
Я шифрую в trans_id время, номер робота и порядковый номер транзакции
И значение всегда уникально и увеличивается постоянно в течении сессии

Что вы в нем хранить то собираетесь что вам текущего размера не хватает?
 
Цитата
BlaZed написал:
Я шифрую в trans_id время, номер робота и порядковый номер транзакции
И значение всегда уникально и увеличивается постоянно в течении сессии

Что вы в нем хранить то собираетесь что вам текущего размера не хватает?
Не подскажете формулу, как вы всё это упаковываете в число?

Я пока только тренируюсь в написании своего первого торгового робота, но уже нопял, что по номеру транзакции надо уметь выявлять, что этот ордер/сделка -- следствие той самой транзакции, чтобы не спутать с ордерами/сделками, инициированными другими скриптами.
 
Если бы TRANS_ID был строкой (скажем с макс. кол-вом символом символов = 255), то туда можно было записать всё, что угодно, без проблем. Даже можно было бы сериализовать небольшую таблицу. Удобно же. Тем более TRANS_ID -- это данные только для пользователя, самой системе на этот параметр наплевать, она его никак не проверяет.
Всё равно всё отправляется на сервер в строковом виде (даже числа).
 
Цитата
Сергей Че написал:
Цитата
BlaZed написал:
Я шифрую в trans_id время, номер робота и порядковый номер транзакции
И значение всегда уникально и увеличивается постоянно в течении сессии

Что вы в нем хранить то собираетесь что вам текущего размера не хватает?
Не подскажете формулу, как вы всё это упаковываете в число?

Я пока только тренируюсь в написании своего первого торгового робота, но уже нопял, что по номеру транзакции надо уметь выявлять, что этот ордер/сделка -- следствие той самой транзакции, чтобы не спутать с ордерами/сделками, инициированными другими скриптами.
Вот моя функция
Код
function TransID() -- Уникальное в течении дня увеличивающиеся число от 1 до 2147483647 (макс. полож. 32 битное число)
  trans_id_count=(trans_id_count and (trans_id_count+1)%100 or 0) -- Счетчик транзакций, от 0 до 99 и по кругу
  return string.format("%02d%02d%02d%01d%02d",dt.hour,dt.min,dt.sec,robot_id,trans_id_count)%2147483647 -- Уникальный идентификатор транзакций
end
есть в ней один неучтенный момент, если в одну секунду будет две транзакции и в этот же момент произойдет переход счетчика с 99 на 0, тогда trans_id уменьшится.
Но шансы на это очень малы, так что принебрег
 
Код
--предположим у Вас 4 числовых параметра  X1<1024(10бит),X2<1024(10бит),X3<64(6 бит),X4<64(6 бит)
--Вам надо их упаковать в одно число transID, которое 32 бита.

function set_to_transID(x1,x2,x3,x4) return (((((x2<<10)+x1)<<10)+x3)<<6)+x4; end  --упаковываем

function get_from_transID(Y)  -- распаковываем
local m1=(1<<6)-1; local z=Y>>6; local z1=z>>10;  return  z1&((1<<10)-1), z1>>10, z&m1,Y&m1;
end  

--тест:
local transID=set_to_transID(1023,1021,63,62);
print(transID)
x1,x2,x3,x4=get_from_transID(transID);
print(x1,x2,x3,x4)
результат:
Код
>D:/lua53/lua53.exe -e "io.stdout:setvbuf 'no'" "пример.lua" 
68585197566
1023   1021   63   62
>Exit code: 0
Страницы: 1
Читают тему
Наверх