/** * 滚动撮合交易策略 - 类型定义 */ import { Cookie } from 'playwright'; import { ParsedOrder } from '../orders.js'; /** * 交易模式 */ export type TradingMode = 'aggressive' | 'normal' | 'conservative'; /** * 交易时段阶段 */ export type TradingPhase = 'early' | 'mid' | 'late' | 'closing' | 'closed'; /** * 策略配置 */ export interface StrategyConfig { cookies: Cookie[]; csrfToken: string; unitId: string; costPrice: number; hourlyQuantities: { [jydm: string]: number; }; mode: TradingMode; highPriceThreshold?: number; tolerableLoss?: number; autoRevoke?: boolean; pollInterval?: number; } /** * 时段交易状态 */ export interface SlotState { /** 交易代码,如 D20260118H09 */ jydm: string; /** 目标电量 */ targetQuantity: number; /** 已提交电量 */ submittedQuantity: number; /** 已成交电量 */ filledQuantity: number; /** 当前挂单(未成交/部分成交) */ pendingOrders: ParsedOrder[]; /** 最近市场数据(来自 getJyjgInfo) */ lastMarketInfo?: { /** 需求最高价(买一价) */ bestBidPrice: number | null; /** 需求剩余电量 */ demandQuantity: number | null; /** 供应最低价(卖一价) */ bestAskPrice: number | null; /** 供应剩余电量 */ supplyQuantity: number | null; /** 最新成交价 */ lastTradePrice: number | null; /** 成交电量 */ tradedQuantity: number | null; }; /** 最后更新时间 */ lastUpdate?: Date; } /** * 策略运行状态 */ export interface StrategyState { /** 是否正在运行 */ running: boolean; /** 启动时间 */ startTime?: Date; /** 开盘 ID */ kpid?: string; /** 各时段状态 */ slots: Map; /** 订单统计 */ orderStats: { submitted: number; filled: number; revoked: number; partialFilled: number; }; /** 总盈亏(元) */ totalPnL: number; /** 最近一次轮询时间 */ lastTick?: Date; /** 错误信息 */ lastError?: string; } /** * 策略日志条目 */ export interface StrategyLogEntry { timestamp: Date; level: 'info' | 'warn' | 'error' | 'debug'; message: string; data?: Record; } /** * 卖出决策 */ export interface SellDecision { /** 是否应该卖出 */ shouldSell: boolean; /** 建议价格 */ suggestedPrice?: number; /** 建议电量 */ suggestedQuantity?: number; /** 决策原因 */ reason: string; } /** * 策略状态摘要(用于 MCP 工具返回) */ export interface StrategyStatusSummary { running: boolean; startTime?: string; kpid?: string; phase: TradingPhase; tradeCodes: string[]; slots: Array<{ jydm: string; targetQuantity: number; submittedQuantity: number; filledQuantity: number; remainingQuantity: number; pendingOrders: number; bestBidPrice?: number | null; bestAskPrice?: number | null; lastTradePrice?: number | null; }>; orderStats: { submitted: number; filled: number; revoked: number; partialFilled: number; }; totalPnL: number; lastTick?: string; lastError?: string; logs: string[]; } /** * 默认配置值 */ export declare const DEFAULT_CONFIG: { highPriceThreshold: number; tolerableLoss: number; autoRevoke: boolean; pollInterval: number; }; /** * 交易时间窗口配置 */ export declare const TRADING_WINDOWS: { early: { start: { hour: number; minute: number; }; end: { hour: number; minute: number; }; }; mid: { start: { hour: number; minute: number; }; end: { hour: number; minute: number; }; }; late: { start: { hour: number; minute: number; }; end: { hour: number; minute: number; }; }; closing: { start: { hour: number; minute: number; }; end: { hour: number; minute: number; }; }; }; /** * 获取当前交易阶段 */ export declare function getCurrentPhase(now?: Date): TradingPhase; /** * 检查是否在交易时间内 */ export declare function isInTradingHours(now?: Date): boolean; /** * 获取交易阶段的中文描述 */ export declare function getPhaseDescription(phase: TradingPhase): string; //# sourceMappingURL=types.d.ts.map