策略解析:BasicSpreadStrategy (基础价差交易)
源码文件:vnpy_spreadtrading.strategies.basic_spread_strategy 1. 策略概述 BasicSpreadStrategy 与其说是一个自动策略,不如说是一个智能执行工具。 它不包含任何指标计算或预测逻辑,而是完全按照用户在参数中指定的固定价格进行挂单交易。它适合那些通过主观判断或外部计算得出目标价差,然后希望程序自动完成“腿A+腿B”复杂下单过程的交易员。 基类:SpreadStrategyTemplate 核心逻辑:固定点位开平 + 时间过滤 适用场景:主观套利、跨期移仓 2. 核心参数 参数名 含义 buy_price 买入开仓触发价 sell_price 卖出平仓触发价 short_price 卖出开仓触发价 cover_price 买入平仓触发价 max_pos 目标持仓量 start_time 每日开始交易时间 (如 “9:00:00”) end_time 每日停止交易时间 (如 “15:00:00”) 3. 策略逻辑详解 3.1 时间过滤器 策略首先检查当前时间是否在允许的交易时段内。如果不在,会强制停止所有正在运行的算法。 1 2 3 4 5 self.update_time = self.spread.datetime.time() if self.update_time < self.start_t or self.update_time >= self.end_t: self.stop_open_algos() self.stop_close_algos() return 3.2 状态机逻辑 策略根据当前的持仓状态 (spread_pos) 决定启动哪种算法。 空仓 (spread_pos == 0): 检查是否已启动买入算法 (buy_algoid),若无则启动。 检查是否已启动卖出算法 (short_algoid),若无则启动。 注意:这里是同时监控双向开仓机会。 持有多头 (spread_pos > 0): 停止开仓算法。 启动卖出平仓算法 (sell_algoid),目标价为 sell_price。 持有空头 (spread_pos < 0): ...