"""获取 K 线数据命令(支持全部周期)。""" import logging import struct from .._binary import unpack_from from ..codec.datetime_ import get_datetime from ..codec.price import get_price from ..codec.volume import get_volume from ..exceptions import TdxDecodeError from ..models.bar import SecurityBar from ..models.enums import KlineCategory, Market from .base import BaseCommand _log = logging.getLogger(__name__) class GetSecurityBarsCmd(BaseCommand[list[SecurityBar]]): """获取指定股票的 K 线数据。 Args: market: 市场(SH/SZ) code: 6位股票代码(字符串) category: K线周期 start: 起始行(0 = 最新;分页时递增) count: 返回条数(最多 800) """ def __init__( self, market: Market, code: str, category: KlineCategory, start: int, count: int = 800, ) -> None: self.market = market self.code = code.encode("utf-8") self.category = category self.start = start self.count = count def build_request(self) -> bytes: # Header (12 bytes) + Payload (28 bytes) = 40 bytes return struct.pack( " list[SecurityBar]: (ret_count,) = unpack_from(" list[SecurityBar]: (ret_count,) = unpack_from("