量化策略开发主技能。触发:开发/设计量化策略、写策略代码。提供标准流程、代码规范、检查清单和代码模板,适用于项目开发阶段。
量化策略开发技能是一项面向实际任务的技能,主要用于版本:1.0.0;适用项目:量化策略项目(A股、美股);
✅ 买入条件完全一致;✅ 卖出条件完全一致;✅ 价格假设完全一致;✅ 持仓管理完全一致;原则2:先验证,后实盘;验证流程 :;原则3:小步快跑;小资金测试(1-5万);短时间观察(1-2周);快速迭代修复;
📋 标准开发流程;阶段1:策略设计;策略逻辑文档;买入条件(明确、。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
版本: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
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章