Files
nofx/agent/skills/strategy_management.json
2026-05-02 22:55:10 +08:00

532 lines
27 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"name": "strategy_management",
"kind": "management",
"domain": "strategy",
"description": "当用户想创建、查看、修改、删除、激活或复制策略模板时调用。策略模板不能直接启动运行;只有绑定了该策略的交易员可以启动。",
"field_constraints": {
"name": {
"type": "string",
"required": true,
"max_length": 50,
"description": "策略模板名称,必填,最多 50 个字符。"
},
"description": {
"type": "string",
"description": "策略描述,可选。"
},
"is_public": {
"type": "bool",
"default": false,
"description": "是否发布到策略市场。"
},
"config_visible": {
"type": "bool",
"default": true,
"description": "发布到市场后,是否允许别人查看策略配置。"
},
"lang": {
"type": "enum",
"values": ["zh", "en"],
"default": "zh",
"description": "策略语言zh 或 en影响 AI 决策时使用的语言。"
},
"strategy_type": {
"type": "enum",
"values": ["ai_trading", "grid_trading"],
"default": "ai_trading",
"description": "策略类型ai_tradingAI 量化)或 grid_trading网格策略。"
},
"symbol": {
"type": "enum",
"values": ["BTCUSDT", "ETHUSDT", "SOLUSDT", "BNBUSDT", "XRPUSDT", "DOGEUSDT"],
"description": "网格策略页面交易对下拉选项,只能从 BTCUSDT、ETHUSDT、SOLUSDT、BNBUSDT、XRPUSDT、DOGEUSDT 中选择。用户问“交易对有哪些选项”时,直接列出这些选项。"
},
"source_type": {
"type": "enum",
"values": ["static", "ai500", "oi_top", "oi_low", "mixed"],
"description": "选币来源类型。static=用户指定静态币池ai500=AI500榜单oi_top=持仓量增长oi_low=持仓量下降mixed=混合。"
},
"static_coins": {
"type": "string_array",
"max_items": 10,
"description": "静态币池,例如 [\"BTCUSDT\", \"ETHUSDT\"]source_type=static 时使用,手动页面最多 10 个。页面支持常规合约币种,也支持 xyz: 前缀资产(如 xyz:TSLA、xyz:GOLD、xyz:XYZ100。"
},
"excluded_coins": {
"type": "string_array",
"description": "排除币列表,所有来源均会排除这些币。"
},
"primary_timeframe": {
"type": "string",
"values": ["1m", "3m", "5m", "15m", "30m", "1h", "2h", "4h", "6h", "8h", "12h", "1d", "3d", "1w"],
"description": "主 K 线周期,例如 5m、15m、1h。"
},
"selected_timeframes": {
"type": "string_array",
"values": ["1m", "3m", "5m", "15m", "30m", "1h", "2h", "4h", "6h", "8h", "12h", "1d", "3d", "1w"],
"max_items": 4,
"description": "多周期分析时间框架列表,例如 [\"5m\",\"15m\",\"1h\"];手动页面最多选择 4 个。"
},
"btceth_max_leverage": {
"type": "int",
"min": 1,
"max": 20,
"description": "BTC/ETH 最大杠杆倍数,范围 120。"
},
"altcoin_max_leverage": {
"type": "int",
"min": 1,
"max": 20,
"description": "山寨币最大杠杆倍数,范围 120。"
},
"max_positions": {
"type": "int",
"min": 1,
"description": "最大同时持仓数量。策略页展示为 System enforced不是普通手动可编辑项除非用户明确要求高级配置否则不要主动修改。"
},
"min_confidence": {
"type": "int",
"min": 50,
"max": 100,
"description": "最小开仓置信度,手动页面范围 50100数值越高开单越谨慎。"
},
"min_risk_reward_ratio": {
"type": "float",
"min": 1,
"max": 10,
"description": "最小盈亏比,手动页面范围 110步进 0.5;例如 1.5 表示每笔交易至少 1.5 倍风险收益比。"
},
"custom_prompt": {
"type": "text",
"description": "自定义 AI 提示词,追加到策略基础提示词之后。"
},
"role_definition": {
"type": "text",
"description": "AI 角色定义,描述 AI 的交易风格和定位。"
},
"trading_frequency": {
"type": "text",
"description": "交易频率描述,例如:每天最多开 3 笔。"
},
"entry_standards": {
"type": "text",
"description": "入场标准描述,例如:只在趋势明确时开仓。"
},
"decision_process": {
"type": "text",
"description": "决策流程描述,例如:先看大周期趋势,再看小周期入场点。"
},
"grid_count": {
"type": "int",
"min": 5,
"max": 50,
"description": "网格数量grid_trading 类型专用,手动页面范围 550。"
},
"total_investment": {
"type": "float",
"min": 100,
"description": "网格总投入金额grid_trading 类型专用,手动页面最小 100 USDT步进 100。"
},
"leverage": {
"type": "int",
"min": 1,
"max": 5,
"description": "网格策略杠杆倍数,手动页面当前范围 15。"
},
"upper_price": {
"type": "float",
"description": "网格上边界价格grid_trading 类型专用。"
},
"lower_price": {
"type": "float",
"description": "网格下边界价格grid_trading 类型专用,必须小于 upper_price。"
},
"distribution": {
"type": "enum",
"values": ["uniform", "gaussian", "pyramid"],
"description": "网格分布方式uniform=均匀gaussian=正态pyramid=金字塔。"
},
"use_atr_bounds": {
"type": "bool",
"default": false,
"description": "网格边界是否改为按 ATR 动态计算。"
},
"atr_multiplier": {
"type": "float",
"min": 1,
"max": 5,
"description": "ATR 边界倍数use_atr_bounds=true 时使用,手动页面范围 15步进 0.5。"
},
"enable_direction_adjust": {
"type": "bool",
"default": false,
"description": "是否启用方向偏置调整。"
},
"direction_bias_ratio": {
"type": "float",
"min": 0.55,
"max": 0.9,
"description": "方向偏置比例,决定多空倾向强弱;手动页面范围 0.550.90,通常以 55%90% 展示。"
},
"max_drawdown_pct": {
"type": "float",
"min": 5,
"max": 50,
"description": "网格策略最大回撤百分比,手动页面范围 550。"
},
"stop_loss_pct": {
"type": "float",
"min": 1,
"max": 20,
"description": "网格策略止损百分比,手动页面范围 120。"
},
"daily_loss_limit_pct": {
"type": "float",
"min": 1,
"max": 30,
"description": "网格策略每日最大亏损比例,手动页面范围 130达到后当天停止新开仓。"
},
"use_maker_only": {
"type": "bool",
"default": false,
"description": "是否优先只挂 maker 单。"
},
"use_ai500": {
"type": "bool",
"default": false,
"description": "是否启用 AI500 榜单作为候选币来源。"
},
"ai500_limit": {
"type": "int",
"min": 1,
"max": 10,
"description": "AI500 榜单选取数量,手动页面范围 110。"
},
"use_oi_top": {
"type": "bool",
"default": false,
"description": "是否启用 OI Top 作为候选币来源。"
},
"oi_top_limit": {
"type": "int",
"min": 1,
"max": 10,
"description": "OI Top 选取数量,手动页面范围 110。"
},
"use_oi_low": {
"type": "bool",
"default": false,
"description": "是否启用 OI Low 作为候选币来源。"
},
"oi_low_limit": {
"type": "int",
"min": 1,
"max": 10,
"description": "OI Low 选取数量,手动页面范围 110。"
},
"primary_count": {
"type": "int",
"min": 10,
"max": 30,
"description": "主周期 K 线样本数量,手动页面范围 1030。"
},
"enable_ema": {
"type": "bool",
"default": false,
"description": "是否启用 EMA 指标。"
},
"enable_macd": {
"type": "bool",
"default": false,
"description": "是否启用 MACD 指标。"
},
"enable_rsi": {
"type": "bool",
"default": false,
"description": "是否启用 RSI 指标。"
},
"enable_atr": {
"type": "bool",
"default": false,
"description": "是否启用 ATR 指标。"
},
"enable_boll": {
"type": "bool",
"default": false,
"description": "是否启用布林带指标。"
},
"enable_volume": {
"type": "bool",
"default": false,
"description": "是否启用成交量指标。"
},
"enable_oi": {
"type": "bool",
"default": false,
"description": "是否启用持仓量指标。"
},
"enable_funding_rate": {
"type": "bool",
"default": false,
"description": "是否启用资金费率指标。"
},
"ema_periods": {
"type": "int_array",
"description": "EMA 周期列表,例如 [9,21,55]。"
},
"rsi_periods": {
"type": "int_array",
"description": "RSI 周期列表。"
},
"atr_periods": {
"type": "int_array",
"description": "ATR 周期列表。"
},
"boll_periods": {
"type": "int_array",
"description": "布林带周期列表。"
},
"nofxos_api_key": {
"type": "credential",
"description": "量化数据 API Key。"
},
"enable_quant_data": {
"type": "bool",
"default": false,
"description": "是否启用量化数据增强。"
},
"enable_quant_oi": {
"type": "bool",
"default": false,
"description": "是否启用量化持仓量数据。"
},
"enable_quant_netflow": {
"type": "bool",
"default": false,
"description": "是否启用量化净流入数据。"
},
"enable_oi_ranking": {
"type": "bool",
"default": false,
"description": "是否启用 OI 排行榜。"
},
"oi_ranking_duration": {
"type": "enum",
"values": ["1h", "4h", "24h"],
"description": "OI 排行榜统计周期,页面选项为 1h、4h、24h。"
},
"oi_ranking_limit": {
"type": "int",
"min": 5,
"max": 20,
"description": "OI 排行榜返回数量,页面选项为 5、10、15、20。"
},
"enable_netflow_ranking": {
"type": "bool",
"default": false,
"description": "是否启用净流入排行榜。"
},
"netflow_ranking_duration": {
"type": "enum",
"values": ["1h", "4h", "24h"],
"description": "净流入排行榜统计周期,页面选项为 1h、4h、24h。"
},
"netflow_ranking_limit": {
"type": "int",
"min": 5,
"max": 20,
"description": "净流入排行榜返回数量,页面选项为 5、10、15、20。"
},
"enable_price_ranking": {
"type": "bool",
"default": false,
"description": "是否启用价格波动排行榜。"
},
"price_ranking_duration": {
"type": "enum",
"values": ["1h", "4h", "24h", "1h,4h,24h"],
"description": "价格排行榜统计周期,页面选项为 1h、4h、24h、1h,4h,24h。"
},
"price_ranking_limit": {
"type": "int",
"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 范围为 550total_investment 最小 100leverage 范围 15atr_multiplier 范围 15。",
"grid_trading 的 max_drawdown_pct 范围为 550stop_loss_pct 范围为 120daily_loss_limit_pct 范围为 130direction_bias_ratio 范围为 0.550.90。",
"AI 策略的 static_coins 最多 10 个selected_timeframes 最多 4 个primary_count 范围为 1030。",
"排行榜 duration 只能用页面选项ranking_limit 只能用 5、10、15、20。",
"btceth_max_leverage 和 altcoin_max_leverage 范围均为 120超出时自动收敛并告知用户。",
"min_confidence 范围 50100超出时自动收敛并告知用户。",
"grid_trading 类型时lower_price 必须小于 upper_price否则提示用户修正。",
"策略模板不能直接启动运行,只有绑定了该策略的交易员才能启动。",
"策略模板创建成功后应出现在策略列表/策略页。",
"创建策略模板时不要要求用户先绑定或添加交易所账户,也不要要求绑定 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 USDTAgent 不能修改。",
"启用量化数据相关开关时,若需要 nofxos_api_key应主动提醒用户补齐。",
"启用排行榜相关能力时,只修改用户明确提到的 enable_*、duration、limit 字段,不要偷偷打开其他排行榜。"
],
"actions": {
"create": {
"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"],
"goal": "创建一个可供 trader 绑定使用的策略模板。",
"dynamic_rules": [
"若用户只是要给 trader 绑定现有策略,应优先在父任务里补 strategy 槽位,而不是误开新的 create。",
"若用户明确要求新建策略,至少先收齐名称;其他配置可继续追问或按默认值协助补齐。",
"创建策略模板本身不需要交易所账户或 AI 模型;不要在 create 策略时询问用户是否已有交易所账户。",
"如果用户同时提到模型 provider、交易所账户或扫描间隔应把这些信息留给 trader 创建流程,不要写入策略配置。",
"只有当用户明确要求运行、部署、实盘、创建交易员或绑定到交易员时,才进入 trader 流程并收集交易所/模型。",
"策略模板创建成功后应出现在策略列表/策略页。",
"只有用户要运行或部署时,才继续 trader 绑定。",
"杠杆超出 120 范围时,自动收敛并告知用户。"
],
"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"],
"goal": "更新一个已有策略模板的指定配置,而不覆盖未提及字段。",
"dynamic_rules": [
"只更新用户明确提到的字段,不要覆盖未提及的字段。",
"如果用户想修改绑定的模型、交易所、扫描间隔或交易员运行状态,应转去 trader_management不要写进策略。",
"杠杆超出 120 范围时,自动收敛并告知用户。",
"grid_trading 类型时lower_price 必须小于 upper_price。"
],
"success_output": "返回 strategy_id 和更新后的策略摘要。",
"failure_output": "明确指出目标策略不存在、参数非法,或仍缺哪个关键字段。"
},
"update_name": {
"description": "仅修改策略模板名称。",
"required_slots": ["target_ref", "name"],
"goal": "仅修改策略模板名称。",
"dynamic_rules": [
"若输入里还包含其他配置项,应优先转去更通用的 update 或 update_config。"
],
"success_output": "返回 strategy_id并明确告知新的策略名称。",
"failure_output": "明确指出目标策略不存在,或新的名称仍未收齐。"
},
"update_prompt": {
"description": "仅修改策略的 custom_prompt 或 prompt_sectionsrole_definition、trading_frequency、entry_standards、decision_process。",
"required_slots": ["target_ref"],
"optional_slots": ["custom_prompt", "role_definition", "trading_frequency", "entry_standards", "decision_process"],
"goal": "更新策略模板的提示词相关内容,而不改动其他配置。",
"dynamic_rules": [
"若用户一次修改多个 prompt section应整体应用并在结果里清楚说明。",
"若用户实际是在改纯配置项,应转去 update_config。",
"当需要收集 custom_prompt 或 prompt_sections 等长文本槽位,而用户表达了“交给你”“你帮我写”“你自己设计”等委托生成意图时,严禁再次机械索要原文。",
"此时你必须直接以量化专家身份先拟出一版高质量文本,将生成内容写入对应字段,并在回复里展示草稿让用户确认是否直接采用。"
],
"success_output": "返回 strategy_id并明确告知哪些 prompt 字段已更新。",
"failure_output": "明确指出目标策略不存在,或新的 prompt 内容仍不完整。"
},
"update_config": {
"description": "修改策略的某个具体配置参数(选币来源、指标、风控参数等)。",
"required_slots": ["target_ref", "config_field", "config_value"],
"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 字段,并用确认式问题向用户展示:“我先为你拟了一版……,要直接按这版更新吗?”"
],
"success_output": "返回 strategy_id并明确告知已修改的配置字段及其最终值。",
"failure_output": "明确指出目标策略不存在、配置字段非法,或值仍需用户澄清。"
},
"activate": {
"description": "将策略模板设为默认模板(激活)。注意:这不是启动运行,只是设为默认。",
"required_slots": ["target_ref"],
"goal": "将某个策略模板设为默认模板,而不是直接运行它。",
"dynamic_rules": [
"必须明确区分“激活模板”和“启动交易员运行”,不要把 activate 解释成运行。"
],
"success_output": "返回 strategy_id并明确告知该策略已被设为默认模板。",
"failure_output": "明确指出目标策略不存在,或激活失败原因。"
},
"duplicate": {
"description": "复制策略模板,生成一个新的同配置模板。",
"required_slots": ["target_ref", "name"],
"goal": "复制一个现有策略模板并生成新的模板名称。",
"dynamic_rules": [
"新名称必须单独收齐;若名称有歧义或为空,应先继续追问。"
],
"success_output": "返回新的 strategy_id并明确告知复制后的策略名称。",
"failure_output": "明确指出目标策略不存在,或新名称仍未收齐。"
},
"delete": {
"description": "删除策略模板,不可逆操作,必须确认。",
"required_slots": ["target_ref"],
"needs_confirmation": true,
"goal": "删除一个策略模板。",
"dynamic_rules": [
"必须在确认后执行,并明确提醒删除不可逆。",
"若策略是默认模板或受系统保护,应向用户解释限制。"
],
"success_output": "返回删除成功结果,并明确告知该策略模板已被移除。",
"failure_output": "明确指出缺少确认、目标策略不存在,或删除失败原因。"
},
"query_list": {
"description": "查询所有策略模板列表,包含名称、类型、是否为默认模板。",
"goal": "列出当前用户可见的策略模板,便于后续选择或绑定。",
"dynamic_rules": [
"优先返回名称、类型、默认状态,不必展开全部详细配置。"
],
"success_output": "返回策略模板列表摘要。",
"failure_output": "若列表为空,应明确告知当前没有策略模板。"
},
"query_detail": {
"description": "查询某个策略模板的详细配置,包括选币来源、指标、风控参数、提示词等。",
"required_slots": ["target_ref"],
"goal": "读取一个策略模板的详细配置。",
"dynamic_rules": [
"若目标有歧义,应先澄清再返回详情。"
],
"success_output": "返回目标策略模板的详细配置摘要。",
"failure_output": "明确指出目标策略不存在,或当前引用已经失效。"
}
},
"tool_mapping": {
"create": "manage_strategy:create",
"update": "manage_strategy:update",
"update_name": "manage_strategy:update",
"update_prompt": "manage_strategy:update",
"update_config": "manage_strategy:update",
"activate": "manage_strategy:activate",
"duplicate": "manage_strategy:duplicate",
"delete": "manage_strategy:delete",
"query_list": "get_strategies",
"query_detail": "get_strategies"
}
}