在项目中需要用到了一个计算总市值的需求。
总市值=总股本*最新价
1、使用xtdata.get_instrument_detail()获取了总股本 (TotalVolume)
2、使用xtdata.get_full_tick()获取了最新价。(lastPrice)
但计算出来的值与通达信等各大交易系统里显示的总市值不一样。
附跑的数据:
2025-12-03 13:53:31.347 [id:16][量化]002001.SZ, 最新价:24.45, 总股本:2148662300.0, 流通股本:1824116362.0, 总市值:44599645050.9
2025-12-03 13:53:31.401 [id:16][量化]002003.SZ, 最新价:11.03, 总股本:758020428.0, 流通股本:629773380.0, 总市值:6946400381.4
2025-12-03 13:53:31.456 [id:16][量化]002006.SZ, 最新价:22.51, 总股本:455160000.0, 流通股本:455160000.0, 总市值:10245651600.0
2025-12-03 13:53:31.506 [id:16][量化]002007.SZ, 最新价:15.57, 总股本:930087680.0, 流通股本:802548938.0, 总市值:12495686964.66
2025-12-03 13:53:31.546 [id:16][量化]002008.SZ, 最新价:36.48, 总股本:1067066496.0, 流通股本:993311743.0, 总市值:36236012384.64
2025-12-03 13:53:31.591 [id:16][量化]002010.SZ, 最新价:5.72, 总股本:3257814678.0, 流通股本:412817189.0, 总市值:2361314321.08
2025-12-03 13:53:31.621 [id:16][量化]002011.SZ, 最新价:12.48, 总股本:917212180.0, 流通股本:841094960.0, 总市值:10496865100.800001
通达信显示的总市值


经过在官网查询发现,在财务数据列表中有一个股本表Capital,但需要提前下载数据。经测试计算出来的总市值是正确的。
下边是跑出来的测试数据,其总市值结果与通达信及其它交易平台相同。
2025-12-03 14:51:45.167 [id:16][量化]StockData(code='600101.SH', last_price=9.03, open_price=9.07, high=9.13, low=9.02, volume=68040, amount=61734000, bid_vol=[1348, 1045, 1391, 1743, 157], limit_up=9.98, limit_down=8.16, pre_close=9.07, market_cap=4947198113.13, y_low=9.02)
2025-12-03 14:51:45.192 [id:16][量化]StockData(code='600182.SH', last_price=15.84, open_price=15.85, high=15.88, low=15.56, volume=21123, amount=33226400, bid_vol=[24, 6, 14, 15, 20], limit_up=16.64, limit_down=15.06, pre_close=15.85, market_cap=5385600000.0, y_low=15.56)
2025-12-03 14:51:45.217 [id:16][量化]StockData(code='600211.SH', last_price=41.87, open_price=42, high=42.17, low=41.71, volume=17300, amount=72494000, bid_vol=[5, 8, 5, 11, 5], limit_up=46.23, limit_down=37.83, pre_close=42.03, market_cap=13495504736.519999, y_low=41.71)
**疑问:get_instrument_detail中的FloatVolume和TotalVolume这两个值是否有问题?还是我使用的方法姿势不正确。请各大佬批评指证。**