"""获取证券列表命令(每页最多1000条,按 start 分页)。 修复 pytdx Bug #2:GBK 解码使用 errors='replace',截断多字节序列不再崩溃。 修复 pytdx Bug #3:pre_close 使用 get_price 解码,而非 get_volume。 """ import struct from ..codec.price import get_price from ..models.enums import Market from ..models.security import SecurityInfo from .base import BaseCommand _RECORD_SIZE = 29 class GetSecurityListCmd(BaseCommand[list[SecurityInfo]]): """获取指定市场从 start 开始的证券列表。""" def __init__(self, market: Market, start: int) -> None: self.market = market self.start = start def build_request(self) -> bytes: header = bytes.fromhex("0c01186401010600060050 04".replace(" ", "")) return header + struct.pack(" list[SecurityInfo]: (num,) = struct.unpack_from("