QUIKSharp icon indicating copy to clipboard operation
QUIKSharp copied to clipboard

Объем последней сделки в Int32 маловат

Open Igor-san opened this issue 2 years ago • 5 comments

Столкнулся тут с LQDT: Could not convert to integer: 2595916425. Path 'data[2460].volume', line 1, position 542940

В Candle пришлось ставить public long Volume { get; set; }

Igor-san avatar Apr 08 '24 19:04 Igor-san

Забавно, 10 лет назад у Газпрома столько акций наверное не было. Что за инструмент, позвольте узнать? Да, long абсолютно верное решение, но раньше и подумать о таких объёмах нельзя было. Крипта?

buybackoff avatar Apr 13 '24 21:04 buybackoff

А, сорри, LQDT... Не знаю детали.

Но в целом "оптимизации" типа int меньше long не имеют смысла, можно заменить на long всё, где имеет смысл. Например если бы торговали Эфиром через Wei как единицу измерения. Вообще можно сразу decimal, чтобы реально wei поддерживать и быть future-proof.

buybackoff avatar Apr 13 '24 21:04 buybackoff

@Pr0phet1c Привет!

Давно я тут ничего не видел и тем более не писал... Я думаю decimal реально хороший вариант для всех числовых значений. Производельность не важна на таком уровне. С decimal все косяки будут за пределами библиотеки. Это самый широкий тип без потери точности в dotnet. ВВП мира можно записать в decimal в корейских вонах много раз неверное.

buybackoff avatar Apr 13 '24 21:04 buybackoff

@buybackoff привет. Тут ничего сильно важного и не происходило. В основном мелкие обновления. на счет decimal, скорее всего ты прав. Но это может оказаться breaking changes. Может стоит ограничиться только параметром Volume пока? Это конечно тоже многим может "поломать" работоспособность, но исправлять тип данных для одного параметра все же значительно проще, чем всего подряд

Pr0phet1c avatar Apr 14 '24 14:04 Pr0phet1c

Может стоит ограничиться только параметром Volume пока?

Да, по мере надобности. Из моего текста наврное могло показаться, что я предлагал всё заменить. Нет, только там, где есть проблемы.

breaking changes

Простой cast в int не так уж и сложно.

Выбор не большой: или long, или decimal; или double. Decimal вмещает в себя long: это int96 + scale. Double не точный. Decimal лучше всего.

buybackoff avatar Apr 14 '24 17:04 buybackoff