mirror of
https://github.com/NoFxAiOS/nofx.git
synced 2026-07-18 09:54:35 +08:00
Refine strategy creation flow and diagnostics
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
"name": "strategy_management",
|
||||
"kind": "management",
|
||||
"domain": "strategy",
|
||||
"description": "当用户想创建、查看、修改、删除、激活或复制策略模板时调用。策略模板不能直接启动运行;只有绑定了该策略的交易员可以启动。",
|
||||
"description": "当用户想创建、查看、修改、删除、激活或复制策略模板时调用。",
|
||||
"field_constraints": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
@@ -33,8 +33,7 @@
|
||||
"strategy_type": {
|
||||
"type": "enum",
|
||||
"values": ["ai_trading", "grid_trading"],
|
||||
"default": "ai_trading",
|
||||
"description": "策略类型:ai_trading(AI 量化)或 grid_trading(网格策略)。"
|
||||
"description": "策略类型:ai_trading(AI 量化)或 grid_trading(网格策略)。创建策略时必须先由用户选择或从用户话语明确识别,不能默认成 ai_trading。"
|
||||
},
|
||||
"symbol": {
|
||||
"type": "enum",
|
||||
@@ -43,8 +42,8 @@
|
||||
},
|
||||
"source_type": {
|
||||
"type": "enum",
|
||||
"values": ["static", "ai500", "oi_top", "oi_low", "mixed"],
|
||||
"description": "选币来源类型。static=用户指定静态币池,ai500=AI500榜单,oi_top=持仓量增长,oi_low=持仓量下降,mixed=混合。"
|
||||
"values": ["static", "ai500", "oi_top", "oi_low"],
|
||||
"description": "选币来源类型。static=用户指定静态币池,ai500=AI500榜单,oi_top=持仓量增长,oi_low=持仓量下降。"
|
||||
},
|
||||
"static_coins": {
|
||||
"type": "string_array",
|
||||
@@ -78,11 +77,6 @@
|
||||
"max": 20,
|
||||
"description": "山寨币最大杠杆倍数,范围 1~20。"
|
||||
},
|
||||
"max_positions": {
|
||||
"type": "int",
|
||||
"min": 1,
|
||||
"description": "最大同时持仓数量。策略页展示为 System enforced,不是普通手动可编辑项;除非用户明确要求高级配置,否则不要主动修改。"
|
||||
},
|
||||
"min_confidence": {
|
||||
"type": "int",
|
||||
"min": 50,
|
||||
@@ -124,7 +118,7 @@
|
||||
"total_investment": {
|
||||
"type": "float",
|
||||
"min": 100,
|
||||
"description": "网格总投入金额,grid_trading 类型专用,手动页面最小 100 USDT,步进 100。"
|
||||
"description": "网格总投入金额,grid_trading 类型专用,表示用户实际投入/保证金预算,不是杠杆后的名义仓位;名义仓位约等于 total_investment × leverage。手动页面最小 100 USDT,步进 100。"
|
||||
},
|
||||
"leverage": {
|
||||
"type": "int",
|
||||
@@ -351,81 +345,28 @@
|
||||
"min": 5,
|
||||
"max": 20,
|
||||
"description": "价格排行榜返回数量,页面选项为 5、10、15、20。"
|
||||
},
|
||||
"btceth_max_position_value_ratio": {
|
||||
"type": "float",
|
||||
"min": 0,
|
||||
"description": "BTC/ETH 单仓最大仓位价值占比。策略页展示为 System enforced,不是普通手动可编辑项;除非用户明确要求高级配置,否则不要主动修改。"
|
||||
},
|
||||
"altcoin_max_position_value_ratio": {
|
||||
"type": "float",
|
||||
"min": 0,
|
||||
"description": "山寨币单仓最大仓位价值占比。策略页展示为 System enforced,不是普通手动可编辑项;除非用户明确要求高级配置,否则不要主动修改。"
|
||||
},
|
||||
"max_margin_usage": {
|
||||
"type": "float",
|
||||
"min": 0,
|
||||
"description": "最大保证金占用比例。策略页展示为 System enforced,不是普通手动可编辑项;除非用户明确要求高级配置,否则不要主动修改。"
|
||||
}
|
||||
},
|
||||
"validation_rules": [
|
||||
"AI 策略页面包含:选币来源、指标/K线/量化数据、风险控制、Prompt Sections、自定义提示词、发布设置。",
|
||||
"网格策略页面包含:symbol、grid_count、total_investment、leverage、upper_price、lower_price、use_atr_bounds、atr_multiplier、distribution、max_drawdown_pct、stop_loss_pct、daily_loss_limit_pct、use_maker_only、enable_direction_adjust、direction_bias_ratio、发布设置。",
|
||||
"用户询问字段有哪些选项、范围或页面能不能设置时,应直接按本 skill 的 field_constraints 回答;不要说“平台会自动匹配”或编造页面不存在的字段。",
|
||||
"grid_trading 的 symbol 只能从页面下拉选项 BTCUSDT、ETHUSDT、SOLUSDT、BNBUSDT、XRPUSDT、DOGEUSDT 中选择。",
|
||||
"grid_trading 的 grid_count 范围为 5~50,total_investment 最小 100,leverage 范围 1~5,atr_multiplier 范围 1~5。",
|
||||
"grid_trading 的 max_drawdown_pct 范围为 5~50,stop_loss_pct 范围为 1~20,daily_loss_limit_pct 范围为 1~30,direction_bias_ratio 范围为 0.55~0.90。",
|
||||
"grid_trading 推荐价格区间时,不能凭记忆猜“当前 BTC/ETH/SOL 价格”。没有实时行情工具结果时,应优先推荐 use_atr_bounds=true 的 ATR 自动边界;只有本轮已经获取过实时价格,才可以给基于当前价格的 upper_price/lower_price 数值。",
|
||||
"AI 策略的 static_coins 最多 10 个,selected_timeframes 最多 4 个,primary_count 范围为 10~30。",
|
||||
"排行榜 duration 只能用页面选项;ranking_limit 只能用 5、10、15、20。",
|
||||
"btceth_max_leverage 和 altcoin_max_leverage 范围均为 1~20,超出时自动收敛并告知用户。",
|
||||
"min_confidence 范围 50~100,超出时自动收敛并告知用户。",
|
||||
"grid_trading 类型时,lower_price 必须小于 upper_price,否则提示用户修正。",
|
||||
"策略模板不能直接启动运行,只有绑定了该策略的交易员才能启动。",
|
||||
"策略模板创建成功后应出现在策略列表/策略页。",
|
||||
"本 skill 的“页面/手动页面”表述只用于说明字段范围和 UI 约束,不表示用户必须去页面操作;创建、更新、删除、激活、复制等动作都应通过 Agent 工具在聊天中执行。",
|
||||
"创建策略的确认发生在聊天里:当配置已整理好,应让用户回复“确认创建”;用户确认后必须调用创建工具,不要要求用户点击网页或 APP 里的按钮。",
|
||||
"创建策略模板时不要要求用户先绑定或添加交易所账户,也不要要求绑定 AI 模型;交易所和模型只属于 trader 创建、部署或启动流程。",
|
||||
"策略是模板/规则,不保存交易所 API、模型 provider、钱包余额或扫描间隔;这些属于交易员、模型或交易所配置。",
|
||||
"如果用户只是创建或配置策略模板,不要把它升级成 trader 创建流程。",
|
||||
"如果用户说“用某个策略创建/启动交易员”,不要新建同名策略;应先查找并绑定已有策略,只有用户明确要求新策略时才创建。",
|
||||
"删除操作不可逆,必须先向用户确认再执行。",
|
||||
"激活(activate)操作将该策略设为默认模板,不是启动运行。",
|
||||
"scan_interval_minutes、initial_balance、lighter_api_key_index 这类交易员/交易所边界值不属于策略本身,若用户在改策略时提到,应引导去对应 trader 或 exchange 配置。",
|
||||
"max_positions、btceth_max_position_value_ratio、altcoin_max_position_value_ratio、max_margin_usage、min_position_size 在策略页属于 System enforced / 非普通手动编辑项;若用户问页面能否改,应说明页面不提供普通编辑入口。min_position_size 固定为 12 USDT,Agent 不能修改。",
|
||||
"启用量化数据相关开关时,若需要 nofxos_api_key,应主动提醒用户补齐。",
|
||||
"启用排行榜相关能力时,只修改用户明确提到的 enable_*、duration、limit 字段,不要偷偷打开其他排行榜。"
|
||||
"本 skill 只负责策略模板创建、查看、修改、删除、激活和复制。",
|
||||
"字段选项和范围来自 field_constraints;产品行为规则由 active session prompt 负责。"
|
||||
],
|
||||
"actions": {
|
||||
"create": {
|
||||
"description": "创建策略模板。至少需要名称,其他配置可按需追问或按默认值补齐。",
|
||||
"description": "创建策略模板。",
|
||||
"required_slots": ["name"],
|
||||
"optional_slots": ["description", "is_public", "config_visible", "lang", "strategy_type", "symbol", "source_type", "static_coins", "excluded_coins", "primary_timeframe", "selected_timeframes", "btceth_max_leverage", "altcoin_max_leverage", "max_positions", "min_confidence", "min_risk_reward_ratio", "custom_prompt", "role_definition", "trading_frequency", "entry_standards", "decision_process", "use_atr_bounds", "atr_multiplier", "enable_direction_adjust", "direction_bias_ratio", "grid_count", "total_investment", "leverage", "upper_price", "lower_price", "distribution", "max_drawdown_pct", "stop_loss_pct", "daily_loss_limit_pct", "use_maker_only", "use_ai500", "ai500_limit", "use_oi_top", "oi_top_limit", "use_oi_low", "oi_low_limit", "primary_count", "enable_ema", "enable_macd", "enable_rsi", "enable_atr", "enable_boll", "enable_volume", "enable_oi", "enable_funding_rate", "ema_periods", "rsi_periods", "atr_periods", "boll_periods", "nofxos_api_key", "enable_quant_data", "enable_quant_oi", "enable_quant_netflow", "enable_oi_ranking", "oi_ranking_duration", "oi_ranking_limit", "enable_netflow_ranking", "netflow_ranking_duration", "netflow_ranking_limit", "enable_price_ranking", "price_ranking_duration", "price_ranking_limit", "btceth_max_position_value_ratio", "altcoin_max_position_value_ratio", "max_margin_usage"],
|
||||
"optional_slots": ["strategy_type", "config_patch"],
|
||||
"goal": "创建一个可供 trader 绑定使用的策略模板。",
|
||||
"dynamic_rules": [
|
||||
"若用户只是要给 trader 绑定现有策略,应优先在父任务里补 strategy 槽位,而不是误开新的 create。",
|
||||
"若用户明确要求新建策略,至少先收齐名称;如果用户尚未说明策略类型,只问一次 AI 策略还是网格策略。",
|
||||
"策略类型确定后,不要一个字段一个字段追问配置;应把用户已给出的信息合并进去,剩余字段用安全默认值补齐,直接给一份完整草稿让用户确认或修改。",
|
||||
"如果配置已经足够且用户在聊天里确认创建,应直接调用 Agent 的创建工具;不要告诉用户去页面点击“确认”或“创建策略”按钮。",
|
||||
"当用户说“全部由你定”“你帮我决定”时,可以给出安全默认/推荐参数,但必须说清楚这些是 Agent 建议值;不要说成“你已经填好/你已经配置好”。",
|
||||
"创建策略模板本身不需要交易所账户或 AI 模型;不要在 create 策略时询问用户是否已有交易所账户。",
|
||||
"如果用户同时提到模型 provider、交易所账户或扫描间隔,应把这些信息留给 trader 创建流程,不要写入策略配置。",
|
||||
"只有当用户明确要求运行、部署、实盘、创建交易员或绑定到交易员时,才进入 trader 流程并收集交易所/模型。",
|
||||
"策略模板创建成功后应出现在策略列表/策略页。",
|
||||
"只有用户要运行或部署时,才继续 trader 绑定。",
|
||||
"杠杆超出 1~20 范围时,自动收敛并告知用户。"
|
||||
],
|
||||
"success_output": "返回 strategy_id 和新策略摘要(名称、类型、主要配置)。",
|
||||
"failure_output": "明确指出仍缺哪些核心参数,或说明需要先确认的风控收敛结果。"
|
||||
},
|
||||
"update": {
|
||||
"description": "更新策略模板的任意可编辑字段。",
|
||||
"required_slots": ["target_ref"],
|
||||
"optional_slots": ["name", "description", "is_public", "config_visible", "symbol", "source_type", "static_coins", "excluded_coins", "primary_timeframe", "selected_timeframes", "btceth_max_leverage", "altcoin_max_leverage", "max_positions", "min_confidence", "min_risk_reward_ratio", "custom_prompt", "role_definition", "trading_frequency", "entry_standards", "decision_process", "grid_count", "total_investment", "leverage", "upper_price", "lower_price", "distribution", "use_atr_bounds", "atr_multiplier", "enable_direction_adjust", "direction_bias_ratio", "max_drawdown_pct", "stop_loss_pct", "daily_loss_limit_pct", "use_maker_only", "use_ai500", "ai500_limit", "use_oi_top", "oi_top_limit", "use_oi_low", "oi_low_limit", "primary_count", "enable_ema", "enable_macd", "enable_rsi", "enable_atr", "enable_boll", "enable_volume", "enable_oi", "enable_funding_rate", "ema_periods", "rsi_periods", "atr_periods", "boll_periods", "nofxos_api_key", "enable_quant_data", "enable_quant_oi", "enable_quant_netflow", "enable_oi_ranking", "oi_ranking_duration", "oi_ranking_limit", "enable_netflow_ranking", "netflow_ranking_duration", "netflow_ranking_limit", "enable_price_ranking", "price_ranking_duration", "price_ranking_limit", "btceth_max_position_value_ratio", "altcoin_max_position_value_ratio", "max_margin_usage"],
|
||||
"optional_slots": ["name", "description", "is_public", "config_visible", "config_patch"],
|
||||
"goal": "更新一个已有策略模板的指定配置,而不覆盖未提及字段。",
|
||||
"dynamic_rules": [
|
||||
"只更新用户明确提到的字段,不要覆盖未提及的字段。",
|
||||
"如果用户想修改绑定的模型、交易所、扫描间隔或交易员运行状态,应转去 trader_management,不要写进策略。",
|
||||
"杠杆超出 1~20 范围时,自动收敛并告知用户。",
|
||||
"grid_trading 类型时,lower_price 必须小于 upper_price。"
|
||||
],
|
||||
@@ -458,25 +399,20 @@
|
||||
},
|
||||
"update_config": {
|
||||
"description": "修改策略的某个具体配置参数(选币来源、指标、风控参数等)。",
|
||||
"required_slots": ["target_ref", "config_field", "config_value"],
|
||||
"required_slots": ["target_ref"],
|
||||
"optional_slots": ["config_patch"],
|
||||
"goal": "修改策略模板中的一个或一组具体配置参数。",
|
||||
"dynamic_rules": [
|
||||
"配置值超出手动面板边界时,应先自动收敛并明确告知用户。",
|
||||
"若用户一次提到多个配置 patch,可在同一轮内整体应用,但要明确说明最终修改了哪些字段。",
|
||||
"拒绝把 exchange_id、ai_model_id、scan_interval_minutes、initial_balance、wallet/private key 等非策略字段作为策略 config 写入。",
|
||||
"当配置更新涉及 custom_prompt、role_definition、trading_frequency、entry_standards、decision_process、description、name 等文本槽位,且用户表达了“交给你”“你帮我写”“你自己设计”等委托生成意图时,严禁再次向用户索要正文。",
|
||||
"此时你必须直接生成一版可用文本,写入对应 extracted 字段,并用确认式问题向用户展示:“我先为你拟了一版……,要直接按这版更新吗?”"
|
||||
"配置变更统一通过 config_patch 表达,字段必须来自当前策略类型的产品模板。",
|
||||
"字段选项、范围和非策略字段拦截由 active session prompt 与后端 schema 负责。"
|
||||
],
|
||||
"success_output": "返回 strategy_id,并明确告知已修改的配置字段及其最终值。",
|
||||
"failure_output": "明确指出目标策略不存在、配置字段非法,或值仍需用户澄清。"
|
||||
},
|
||||
"activate": {
|
||||
"description": "将策略模板设为默认模板(激活)。注意:这不是启动运行,只是设为默认。",
|
||||
"description": "将策略模板设为默认模板(激活)。",
|
||||
"required_slots": ["target_ref"],
|
||||
"goal": "将某个策略模板设为默认模板,而不是直接运行它。",
|
||||
"dynamic_rules": [
|
||||
"必须明确区分“激活模板”和“启动交易员运行”,不要把 activate 解释成运行。"
|
||||
],
|
||||
"goal": "将某个策略模板设为默认模板。",
|
||||
"success_output": "返回 strategy_id,并明确告知该策略已被设为默认模板。",
|
||||
"failure_output": "明确指出目标策略不存在,或激活失败原因。"
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user