Install
openclaw skills install quant-strategy-dev量化策略开发主技能。当用户说"开发量化策略"、"设计量化策略"、"写策略代码"、"量化策略开发"时自动触发。提供标准开发流程、代码规范、检查清单、代码模板。适用于量化策略项目的开发阶段。
openclaw skills install quant-strategy-dev版本:1.0.0 适用项目:量化策略项目(A股、美股)
必须使用相同的代码逻辑!
验证流程:
策略开发 → QMT回测 → 小额实盘 → 正式运行
输出:
检查清单:
关键要求:
# 1. 全局状态对象
class GlobalState:
pass
G = GlobalState()
# 2. 初始化
def init(ContextInfo):
# 初始化全局状态
G.waiting_list = []
G.sent_orders = set()
G.buy_prices = {} # 记录买入价格
# 设置股票池
ContextInfo.set_universe(stock_list)
# 3. 买入逻辑
def handlebar(ContextInfo):
# 检查waiting_list
if check_waiting_orders(ContextInfo):
return
# 买入条件判断
for stock in signals:
if 买入条件:
# ⚠️ 关键:passorder的prType参数
passorder(23, 1101, accID, code, 14, -1, volume, ...) # prType=14(对手价)
# 记录已发送委托
G.sent_orders.add(code)
G.waiting_list.append(msg)
# 4. 卖出逻辑(完整)
def check_and_sell_positions(ContextInfo, ...):
for stock in positions:
# 1. 检查止损
pnl_ratio = (current_price - buy_price) / buy_price
if pnl_ratio <= -STOP_LOSS:
卖出(f"stop_loss ({pnl_ratio*100:.2f}%)")
# 2. 检查止盈
elif pnl_ratio >= TAKE_PROFIT:
卖出(f"take_profit ({pnl_ratio*100:.2f}%)")
# 3. 检查信号过期
elif stock_code not in signals:
卖出("signal_expired")
# 4. 趋势反转(可选)
elif 趋势反转条件:
卖出("trend_reversal")
检查清单:
⚠️ 强制要求:代码变更后,必须通过测试才能进入下一阶段
# tests/test_xxx.py
import sys
sys.path.insert(0, '/path/to/project')
from module import function_to_test
print("=" * 60)
print("模块名称测试")
print("=" * 60)
# 测试1:正常流程
print("\n[测试1] 正常流程")
result = function_to_test(normal_input)
assert result == expected_output, "正常流程失败"
print(" ✅ 通过")
# 测试2:边界条件
print("\n[测试2] 边界条件")
result = function_to_test(edge_case_input)
assert result == edge_case_output, "边界条件失败"
print(" ✅ 通过")
# 测试3:异常情况
print("\n[测试3] 异常情况")
try:
function_to_test(invalid_input)
assert False, "应抛出异常"
except ValueError:
print(" ✅ 通过")
print("\n" + "=" * 60)
print("✅ 所有测试通过!")
print("=" * 60)
| 测试类型 | 检查项 | 状态 |
|---|---|---|
| 功能测试 | 核心功能正常 | [ ] |
| 边界测试 | 空输入、满输入、临界值 | [ ] |
| 异常测试 | 错误输入、网络异常、数据缺失 | [ ] |
| 回归测试 | 历史功能未破坏 | [ ] |
强制要求:
必须和实盘一致:
# 检查项1:买入和卖出的信号范围是否一致
# ❌ 错误
if stock_code not in signals[:10]: # 卖出:检查前10只
卖出
for stock in filtered_signals: # 买入:从过滤后的信号买
买入
# ✅ 正确
if stock_code not in signals: # 卖出:检查整个信号列表
卖出
for stock in filtered_signals: # 买入:从过滤后的信号买
买入
# 检查项2:passorder的prType参数
# ❌ 错误
passorder(23, 1101, accID, code, -1, ...) # prType=-1(使用默认,偏高)
# ✅ 正确
passorder(23, 1101, accID, code, 14, ...) # prType=14(对手价,滑点可控)
必须设置:
必须确认:
建议:5000-10000元
开盘后前1分钟:
观察期:1-2周
问题:策略定义了止损止盈参数,但卖出逻辑中没有实现
正确做法:
# ✅ 完整的卖出逻辑
def check_and_sell_positions(ContextInfo, ...):
# 1. 检查止损
pnl_ratio = (current_price - buy_price) / buy_price
if pnl_ratio <= -STOP_LOSS:
卖出(f"stop_loss")
# 2. 检查止盈
elif pnl_ratio >= TAKE_PROFIT:
卖出(f"take_profit")
# 3. 检查信号过期
elif stock_code not in signals:
卖出("signal_expired")
教训:
问题:卖出检查前10只,买入从过滤后的信号买
正确做法:
问题:使用prType=-1,导致价格不可控
正确做法:
| 指标 | 标准 |
|---|---|
| 策略设计 | 买入/卖出条件明确完整 |
| 代码质量 | 有防重机制、止损止盈完整 |
| 测试通过 | 所有测试用例通过 |
| 回测验证 | 表现符合预期 |
| 实盘准备 | 风控设置完整 |
技能版本:1.0.0 基于:QUANT_STRATEGY_DEVELOPMENT_STANDARD_PROCESS.md