openctp / openctp-ctp-python

CTPAPI的Python接口,使用Swig技术制作,支持pip install。
http://www.openctp.cn
BSD 3-Clause "New" or "Revised" License
137 stars 26 forks source link

拉下来的数据有些是double可表示的最大值 #12

Closed mokcoo closed 11 months ago

mokcoo commented 11 months ago

我在mac m芯片上跑拉取数据的例子,用的是openctp-ctp 6.7.0版本的。 像AskPrice2之后的都是1.7976931348623157e+308,是一些不可用的值,还有像CurrDelta也是不可用的。

Message sent {"ActionDay": "20231129", "AskPrice1": "591.6", "AskPrice2": "1.7976931348623157e+308", "AskPrice3": "1.7976931348623157e+308", "AskPrice4": "1.7976931348623157e+308", "AskPrice5": "1.7976931348623157e+308", "AskVolume1": "2", "AskVolume2": "0", "AskVolume3": "0", "AskVolume4": "0", "AskVolume5": "0", "AveragePrice": "588996.551724138", "BandingLowerPrice": "0.0", "BandingUpperPrice": "0.0", "BidPrice1": "590.8", "BidPrice2": "1.7976931348623157e+308", "BidPrice3": "1.7976931348623157e+308", "BidPrice4": "1.7976931348623157e+308", "BidPrice5": "1.7976931348623157e+308", "BidVolume1": "1", "BidVolume2": "0", "BidVolume3": "0", "BidVolume4": "0", "BidVolume5": "0", "ClosePrice": "1.7976931348623157e+308", "CurrDelta": "1.7976931348623157e+308", "ExchangeID": "", "ExchangeInstID": "", "HighestPrice": "591.7", "InstrumentID": "sc2406", "LastPrice": "590.7", "LowerLimitPrice": "532.8", "LowestPrice": "579.3", "OpenInterest": "1435.0", "OpenPrice": "591.0", "PreClosePrice": "581.9", "PreDelta": "0.0", "PreOpenInterest": "1435.0", "PreSettlementPrice": "579.2", "SettlementPrice": "1.7976931348623157e+308", "TradingDay": "20231130", "Turnover": "119566300.0", "UpdateMillisec": "0", "UpdateTime": "17:04:31", "UpperLimitPrice": "625.5", "Volume": "203", "reserve1": "", "reserve2": ""}

请问有什么解决方法么,谢谢。

Jedore commented 11 months ago

@mokcoo 是的,这些特殊值也是ctp官方定义的,是无效的,需要自己处理。

mokcoo commented 11 months ago

好的,谢谢

linonetwo commented 11 months ago

我也遇到这个问题,请教下这种数据一般如何使用,是在策略使用和存入数据库之前,自己转换为 Null 吗?不然感觉会影响 k 线的生成。

Jedore commented 11 months ago

我也遇到这个问题,请教下这种数据一般如何使用,是在策略使用和存入数据库之前,自己转换为 Null 吗?不然感觉会影响 k 线的生成。

@linonetwo 是的,肯定需要在使用之前将这些特殊的无效值,转换为有效值(比如0)。

linonetwo commented 11 months ago

AskPrice1 可以确定不会有这样的情况吗?因为它会用于计算 k 线和平均值等等,不管是用 0 还是最大值,都会影响计算。

我想讨论一下这个值应该转换成什么,可能之前群里也有人问过,毕竟 AskPrice2 如果我们设为 0 也可能意味着有人在市场上挂单 0 元,特别是如果有的商品价格就在 0 附近浮动的话…

linonetwo commented 11 months ago

我们存 Null 了