十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

从策略想法到实盘运行:QuantDinger 策略生命周期工作流实战指南

从策略想法到实盘运行:QuantDinger 策略生命周期工作流实战指南 后端金融科技人工智能AI 应用AI AgentMCP 服务【免费下载链接】QuantDingerOpen-source AI Trading OS, agent trading, and vibe trading, with Jev System One integration. Research, build Python strategies, backtest, and paper/live trade across crypto, stocks, and forex. Launch your own multi-tenant trading SaaS with built-in user management, billing, payments, and settlement.项目地址https://gitcode.com/gh_mirrors/qu/QuantDinger点击查看免费下载导读本文围绕 QuantDinger 官方文档《From strategy idea to operation》展开系统讲解一条策略从「假设」到「实盘监控」的完整生命周期契约定义、编辑器实现、校验与版本、回测、停止态部署、信号模式验证再到实盘启动与监控。读完本文你将掌握一套可复制的策略上线 SOP理解每个检查点背后的源码级依据并能按发布前检查清单逐项核对避免把「能运行」误当作「适合实盘」。0. 为什么需要一条「生命周期工作流」QuantDinger 把策略生命周期拆成七个独立阶段假设 → 编码 → 校验 → 回测 → 保存版本 → 部署 → 监控。每个阶段都是独立检查点核心理念只有一句it runs 绝不等于 it is ready for live trading能运行绝不等于适合实盘。这条主线贯穿了仓库中的多份文档与源码生命周期主流程见 docs/product/STRATEGY_WORKFLOW.md本文主体编程接口、manifest 与沙箱规则见 docs/trading/STRATEGY_DEV_GUIDE_CN.md回测结果核对方法见 docs/product/BACKTEST_CENTER_CN.md实盘前的安全清单见 docs/trading/LIVE_TRADING_SAFETY_CN.md。strategy_lifecycle.py中的设计也印证了这一理念实盘策略在遇到致命的交易所/认证/连接错误后会通过auto_stop_live_strategy自动把数据库状态置为stopped并停止执行器线程防止重启后无限重试刷日志见 services/strategy_lifecycle.py。也就是说系统本身就把「停止」设计为生命周期中的一等公民。1. 写清策略契约编码之前先定义边界文档明确要求开始编码前先定义以下九项契约要素契约要素说明市场market使用完整市场标识如USStock:SPY、Crypto:BTC/USDTswap标的instruments精确到规范 symbol不能只写显示名称频率frequency源码声明的周期如1m、1h、1d入场entries明确的入场信号条件退出exits明确的离场条件仓位上限position limits最大仓位/权重硬性约束费用costs手续费、滑点、资金费假设方向direction策略允许的方向能力停止条件stop conditions止损、止盈、时间保护等其中两个强制性的方向约定Crypto swap 必须显式声明方向能力通过context.set_metadata(direction_mode...)声明支持long_only仅做多、short_only仅做空、one_way单向净持仓切换、both独立多空腿和neutral中性双腿。现货和当前非 Crypto 策略一律按 long-only 设计现货没有做空库存券商通道Alpaca、IBKR当前也按 long-only 约束执行。从源码看这一声明并非可选项。contract.py的清单发现阶段会读取 manifest 中的direction_mode/directionMode如果声明了方向键但值为空会直接抛出strategyV2.directionModeInvalid未声明时编译器会从代码推断且当所有标的都是现货时自动归一化为long_only见 services/strategy_v2/contract.py。部署阶段还会进一步核对账户持仓模式one_way策略连接双向持仓账户会被拒绝both/neutral只有确认处于 hedge mode 才能启动。2. 在策略编辑器中实现以 Strategy API V2 为唯一契约实现阶段只有一个执行契约Strategy API V2。同一份源码编译成策略清单manifest回测与实盘运行时共享同一套标的、订阅、事件模型、订单意图、组合记账和保护规则。编写时保持职责清晰initialize(context)只做声明——universe、订阅、预热、benchmark、调度、杠杆许可和初始g状态不要在这里读取context.params、请求行情或下单清单发现阶段不会保留运行时保护状态读取参数会触发strategyV2.initializeParamsUnavailable。订阅与 universe通过context.subscribe(frequency...)显式订阅通过context.set_universe([...])声明静态标的、指数或命名股票池。handle_data(context, data)承载交易逻辑的处理器按已完成 K 线计算信号。使用完整市场标识、绝不猜交易所。策略源码中的标的采用规范格式例如市场示例A 股CNStock:600519.SH美股USStock:MSFT港股HKStock:00700.HKGate 股票通道港股Crypto:00700/HKDgate:spotGate 股票通道美股Crypto:AAPL/USDgate:spotCrypto 现货Crypto:BTC/USDTspot指定交易所 Crypto 现货Crypto:BTC/USDTokx:spotCrypto 永续Crypto:BTC/USDTswap外汇Forex:EUR/USD期货Futures:ES莫斯科交易所MOEX:SBER系统会规范化部分别名如600519.XSHG→CNStock:600519.SH、BTCUSDT→BTC/USDT但生产策略应始终写完整市场前缀。Crypto在这里是交易所路由命名空间不代表底层一定是加密货币——Gate 上的腾讯Crypto:00700/HKDgate:spot本质是equity / direct_equity / stock产品。不能只凭 ticker 猜产品类型产品目录必须提供交易所、市场类型、产品类型、API family、原生 instrument ID、币种和底层身份策略必须完整保留见 docs/trading/STRATEGY_DEV_GUIDE_CN.md。最小可运行示例SPY 20 日均线SPY 20-Day Moving Average Trades a long-only SPY regime from completed daily bars. # param period int 20 Moving-average period range5:100:5 # param target_pct float 0.95 Target portfolio weight range0.1:1.0:0.05 def initialize(context): g.symbol USStock:SPY context.set_universe([g.symbol]) context.subscribe( frequency1d, fields[open, high, low, close, volume], ) context.set_warmup(120) context.set_benchmark(USStock:SPY) def handle_data(context, data): period int(context.params.get(period, 20)) target_pct float(context.params.get(target_pct, 0.95)) bars get_history( period 1, 1d, close, g.symbol, ) if len(bars) period: return price float(bars[close].iloc[-1]) average float(bars[close].tail(period).mean()) position get_position(g.symbol) desired target_pct if price average else 0.0 if desired 0 and position.amount 0: order_target_percent( g.symbol, desired, reasonma_long_entry, stop_loss_pct0.05, ) elif desired 0 and position.amount 0: order_target_percent( g.symbol, 0.0, reasonma_long_exit, )完整接口面、manifest 字段与沙箱规则请参考 Strategy API V2 开发指南。3. 校验并保存版本每个检查点独立闭环文档要求运行源码校验处理所有错误和警告保存时记录策略目的和重要参数当 universe、频率、仓位或退出逻辑发生变化时建立新版本保证结果可比较、可回滚。3.1 源码校验与 manifest校验通过 REST 接口完成POST /api/strategies/verify Content-Type: application/json {code: ...complete Strategy API V2 source...}成功响应返回valid: true和完整 manifest。部署前必须重新验证最终保存的源码不能只验证早期草稿。编译后清单包含API 版本与源码哈希、CTA/portfolio 类型、静态/动态 universe、订阅标的与全部周期、驱动周期与字段、定时任务、benchmark、生命周期处理器、因子/基本面依赖、warm-up 数量、杠杆许可与上限、自定义 metadata见 docs/trading/STRATEGY_DEV_GUIDE_CN.md。编译器硬性要求源码级约束见 services/strategy_v2/contract.py源码非空且能在安全沙箱中执行必须定义initialize(context)initialize必须通过context.set_universe(...)声明 universe未显式订阅时编译器创建默认日线订阅但建议始终显式调用必须存在handle_data、on_rebalance或至少一个定时回调杠杆策略必须满足 Crypto swap 专用规则。3.2 常见校验错误速查错误码含义修复strategyV2.codeRequired源码为空提交完整源码strategyV2.initializeRequired缺少 initialize添加初始化函数strategyV2.universeRequired未声明 universe调用set_universestrategyV2.handlerRequired没有可执行处理器/定时任务添加 handler 或 schedulestrategyV2.leverageCryptoSwapOnly杠杆市场不合法仅用于静态 Crypto swapstrategyV2.frequencyUnsupported声明了不支持的周期改用原生周期strategyV2.tooManyFrequencies:8超过 8 个周期删除非必需订阅strategyV2.initializeParamsUnavailable在清单发现阶段读取参数把读取移到处理器strategyV2.directionModeViolation开仓方向超出声明能力修正 metadata 或信号方向strategyV2.liveLegConflict另一实盘策略已占用该腿停止或调整冲突策略4. 回测覆盖预热与多种市场状态文档要求选择能覆盖预热期warmup和多种市场状态market regimes的时间范围并检查数据覆盖、基准、费用、滑点、资金费和流动性限制最后用回测中心指南核对结果。4.1 运行前的输入确认策略源码和 manifest 是计划测试的版本市场、标的和数据频率使用规范标识开始时间为指标和 universe 留出足够预热数据初始资金、费用、滑点和仓位限制符合预期基准与策略市场和计价币种可以比较。回测请求核心字段源码级 JSON见 docs/trading/STRATEGY_DEV_GUIDE_CN.md{ code: ..., startDate: 2024-01-01, endDate: 2025-12-31, initialCapital: 100000, commission: 0.0005, slippage: 0.0005, leverageEnabled: false, leverage: 1, params: {}, persist: true }市场、标的和周期不能从请求覆盖——它们属于源码契约。4.2 按顺序核对结果回测中心的推荐检查顺序详见 docs/product/BACKTEST_CENTER_CN.md数据与状态任务成功不等于数据完整。确认首尾时间、bar 数、预热和缺失字段。执行假设查看费用、滑点、流动性和未建模项目。风险检查最大回撤、波动、集中度和最差阶段。成交账本抽查入场、退出、数量、价格、费用和持仓变化是否符合源码。基准比较同时看绝对收益和相对基准表现。稳健性更换时间区间、参数和市场状态避免只保留最好的一次结果。结果字段含义对应 docs/trading/STRATEGY_DEV_GUIDE_CN.mdresultStatusno_signals/open_position_only/completed_tradestotalExecutions实际成交次数totalTrades已平仓交易次数不等于成交次数closedTrades完整往返交易orderLedger成交、延迟、拒绝及原因equityCurve、回撤、胜率、Profit Factor、benchmark/excess returndataProvenance与executionAssumptions数据来源与执行假设。4.3 三条必须记住的成本边界每次成交都收取手续费完整往返交易的已实现利润会同时扣除开仓和平仓手续费。Strategy API V2 回测当前不模拟 Crypto 资金费用应确认executionAssumptions.fundingMode not_modeled杠杆 swap 回测不能直接与实盘净利润比较。应测试多组手续费和滑点假设——成本轻微上升就失去优势的策略不够稳健。零成交不一定是系统错误可能是数据不足、条件从未触发、参数不合理、标的无数据或订单被拒绝。先看日志和orderLedger。5. 创建停止状态的部署默认 stopped再进 signal文档要求部署应先创建为 stopped。创建时确认以下四项匹配然后使用signal模式验证通知与状态恢复凭证credential与策略市场匹配市场market正确结算币种settlement currency匹配产品类型product type匹配。部署核心字段见 docs/trading/STRATEGY_DEV_GUIDE_CN.mdsourceId已保存策略源码name部署名称initialCapital初始资金executionModesignal只发信号或live提交真实订单可选credentialId、params、杠杆、仓位方向和通知配置。部署创建后状态为 stopped必须显式 start删除前必须先停止。execution_mode与direction_mode、position_side、coexistence_mode是四个不同层级的概念不要混淆名称所属层级含义direction_mode策略清单策略被允许使用的方向能力position_side仓位/订单合约 hedge mode 中的 long/short 分腿execution_mode部署signal只发信号live提交真实订单coexistence_mode账户仓位归属strict或advanced决定用户仓位与策略仓位如何共存不要让一个部署混用不兼容的市场或账户。混合市场 live 不支持一个实盘资金分配还必须保持兼容的计价/结算币种与 API family——例如不能因为底层都是港股公司就把 HKD Gate 直接股票和 USDT 股票永续放进同一资金池。signal 模式的价值signal 模式是实盘前的干运行它走完整的运行时钟、通知链路与状态恢复逻辑但不提交任何真实订单。文档明确要求signal 模式观察足够时间后才允许进入 live核对内容至少包括通知是否按预期频率送达信号触发时机与用户配置时区是否一致会话重启后g状态与调度时钟能否恢复。从源码结构看运行面板会把execution_mode持久化到策略记录并在运行时区分running_live与running_signal_mode两种计数见 routes/agent_v1/runtime.pysignal模式部署不会产生真实成交适合验证通知与状态恢复。6. 启动和监控先安全清单后运行中监控文档要求实盘前完成实盘安全清单docs/trading/LIVE_TRADING_SAFETY_CN.md启动后监控运行状态、订单、持仓归属、未知差额、通知和错误日志。6.1 上线前检查8 项账户使用独立子账户或低余额账户只授予必要交易权限关闭提币权限。标的确认交易所、市场类型、结算币种、原生 symbol 和 API family。策略源码、manifest、方向和杠杆声明通过校验。回测人工检查数据、费用、滑点、资金费、成交账本和最大回撤。信号先运行signal核对通知、频率、时区和重启后的状态恢复。仓位确认账户现有手工持仓和其他策略持仓处理所有未知差额。限制设置名义金额、单标的、总敞口、杠杆和损失边界。应急确认操作者能停止部署、撤销挂单并使用紧急停止。6.2 运行中监控哪些状态监控项说明运行状态策略 runtime 状态、日志级别、执行器线程订单订单状态queued/submitted/open/partial/filled/rejected...持仓归属账户仓位 策略分配仓位 用户保护仓位 未知差额未知差额出现 drift 时系统暂停同方向开仓/加仓通知信号、异常、止损触发等是否送达错误exchange/auth/connectivity 错误可能触发自动停止6.3 仓位归属与对账恒等式实盘策略只能管理分配给自己的策略仓位不能用它吸收手工或其他策略的仓位。核对恒等式是账户仓位 策略分配仓位 用户保护仓位 未知差额允许继续开仓要求未知差额处于容差范围内。两种共存模式归属模式用户保护仓位行为strict默认固定为 0账户出现未分配仓位时暂停该方向开仓/加仓不会自动平仓advanced用户确认时记录账户仓位 - 策略仓位策略与该保护基线共存产生新未知差额时仍暂停开仓/加仓漂移只暂停同方向的新开仓和加仓。平仓和减仓保持可用但数量受策略账本、交易所实际仓位和用户保护基线三重约束平仓不是修复未知差额的工具。position_drift_detected、unallocated_account_position、account_below_protected_allocation都是需要处理归属而不是绕过保护的状态。6.4 异常处置顺序停止新的开仓和加仓记录部署、账户、标的、订单 ID、时间和错误信息对照交易所或券商的实际订单与持仓不以页面缓存作为唯一依据撤单或减仓前确认不会越过受保护的手工仓位风险继续扩大时停止策略或执行紧急停止根因和账本核对完成前不要重新启动。系统在遭遇致命错误时还会自动兜底auto_stop_live_strategy会把 DB 状态置为stopped、停止执行器线程并写入 runtime 日志见 services/strategy_lifecycle.py避免死循环重试刷日志。7. 发布前检查清单完整版文档给出的发布前检查逐项如下建议在进入 live 前逐条打勾源码与 manifest 校验通过回测数据范围和预热完整费用、滑点、资金费和最小下单规则已确认交易凭证与策略市场匹配信号模式已观察足够时间停止、恢复和人工应急路径已验证。对照开发指南第 21 节的扩展检查docs/trading/STRATEGY_DEV_GUIDE_CN.md还可进一步核对docstring 说明名称/universe/信号/调度/风控initialize只做声明标的规范格式参数默认值与代码回退值一致所有历史窗口检查长度不使用未来行/负 shift/居中 rolling已完成 K 线与实时价格边界清晰多头离场与空头入场独立订单都有可审计reason可重试订单使用稳定client_order_id只对 Crypto swap 声明杠杆且不重复乘杠杆明确调度时区和跨重启状态要求orderLedger已检查不同时间区间和成本假设的稳健性测试已完成。8. 关键概念速查执行时序回测默认「收盘确认、下一开盘成交」不使用负 shift 或未来行before_trading_start和定时回调只看到前一根及更早的数据详见 docs/trading/STRATEGY_DEV_GUIDE_CN.md。跨重启状态默认g只在当前进程回调间保留需要跨重启恢复时显式设置PERSIST_RUNTIME_STATE True等效部署参数persist_runtime_statetrue运行时会在源码命名空间与部署参数两个入口读取该开关见 services/strategy_v2/runtime.py。策略版本改变 universe、频率、仓位或退出逻辑时建立新版本保证回测结果可比较、可回滚——版本是审计与复盘的基础。结语QuantDinger 策略生命周期工作流的核心价值是把「上线」从一次性动作变成一条带检查点、可回滚、可审计的流水线契约先于代码验证先于回测回测先于部署signal 先于 live监控贯穿始终。按照本文的六个阶段逐项执行并完成发布前检查清单就能把策略从「想法」稳妥推进到「实盘运行」同时把「能运行」与「适合实盘」严格区分开——这正是该工作流设计的初衷。赞分享后端金融科技人工智能AI 应用AI AgentMCP 服务【免费下载链接】QuantDingerOpen-source AI Trading OS, agent trading, and vibe trading, with Jev System One integration. Research, build Python strategies, backtest, and paper/live trade across crypto, stocks, and forex. Launch your own multi-tenant trading SaaS with built-in user management, billing, payments, and settlement.项目地址https://gitcode.com/gh_mirrors/qu/QuantDinger点击查看免费下载相关推荐从想法到实盘QUANTAXIS量化策略开发全流程从想法到实盘QUANTAXIS量化策略开发全流程 引言量化策略开发的痛点与解决方案 你是否曾面临这样的困境市场灵感闪现却无法快速验证回测表现优异的策略实金融科技后端数据分析3步搞定S3生命周期策略从配置到成本优化实战指南3步搞定S3生命周期策略从配置到成本优化实战指南 AWS S3生命周期策略是云存储成本优化的核心工具通过自动管理对象生命周期帮助开发者实现存储资源的智能化教程文档DevOpsCodewhale Issue Triage 实操指南基于 needs-info 生命周期的过期清理策略与 gh 命令工作流Codewhale Issue Triage 实操指南基于 needs info 生命周期的过期清理策略与 gh 命令工作流 在 Codewhale 这种由人工智能AI Agent代码智能体CLI工具调用MCP Clients上一篇Axolotl训练集群监控Prometheus与Grafana配置指南下一篇JuliaMono vs 其他编程字体Unicode支持与代码可读性终极对比创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表