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 时间过滤器
策略首先检查当前时间是否在允许的交易时段内。如果不在,会强制停止所有正在运行的算法。
| |
3.2 状态机逻辑
策略根据当前的持仓状态 (spread_pos) 决定启动哪种算法。
空仓 (
spread_pos == 0):- 检查是否已启动买入算法 (
buy_algoid),若无则启动。 - 检查是否已启动卖出算法 (
short_algoid),若无则启动。 - 注意:这里是同时监控双向开仓机会。
- 检查是否已启动买入算法 (
持有多头 (
spread_pos > 0):- 停止开仓算法。
- 启动卖出平仓算法 (
sell_algoid),目标价为sell_price。
持有空头 (
spread_pos < 0):- 停止开仓算法。
- 启动买入平仓算法 (
cover_algoid),目标价为cover_price。
3.3 算法生命周期管理
策略在 on_spread_algo 回调中维护算法 ID 的状态。如果某个算法执行结束(或被停止),将其 ID 置空,以便下一轮循环可以重新启动。
| |
4. 总结
BasicSpreadStrategy 展示了价差交易中最朴素的需求:执行。 在价差交易中,最困难的往往不是“决定在什么价格买”,而是“如何以该价格买入两个合约而不产生单腿风险”。这个策略将复杂的双腿执行封装在底层算法中,留给用户最简单的价格接口。