"""MAC 多日分时图命令(0x123E)。 获取单只股票多日的分时数据。 """ import struct from datetime import date, time from ..._binary import unpack_from from ...codec.mac_frame import build_mac_request from ...commands.base import BaseCommand from ..models import MacMultiTickChart, MacMultiTickDay, MacTick _MSG_ID = 0x123E _TICK_OFFSET = 71 _TICK_SIZE = struct.calcsize(" None: self._market = market self._code = code if start_date is not None: self._start_ymd = start_date.year * 10000 + start_date.month * 100 + start_date.day else: self._start_ymd = 0 self._days = days def build_request(self) -> bytes: body = struct.pack( " MacMultiTickChart: # 头部 (market, code_raw) = unpack_from("= count * page_size: tick_counts = [page_size] * count else: # start_date=None returns the latest partial trading day first, # followed by complete historical days. complete_days = min(count - 1, actual_total // page_size) first_day_count = actual_total - complete_days * page_size empty_days = count - complete_days - 1 tick_counts = [first_day_count] + [page_size] * complete_days + [0] * empty_days days: list[MacMultiTickDay] = [] tick_index = 0 for d, tick_count in enumerate(tick_counts): ticks: list[MacTick] = [] for t in range(tick_count): offset = _TICK_OFFSET + tick_index * _TICK_SIZE (minutes, price, avg, vol, tick_reserved) = unpack_from( "