mirror of
https://github.com/NoFxAiOS/nofx.git
synced 2026-07-06 04:20:59 +08:00
474 lines
18 KiB
JSON
474 lines
18 KiB
JSON
{
|
||
"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"],
|
||
"description": "策略类型:ai_trading(AI 量化)或 grid_trading(网格策略)。创建策略时必须先由用户选择或从用户话语明确识别,不能默认成 ai_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"],
|
||
"description": "选币来源类型。static=用户指定静态币池,ai500=AI500榜单,oi_top=持仓量增长,oi_low=持仓量下降。"
|
||
},
|
||
"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 最大杠杆倍数,范围 1~20。"
|
||
},
|
||
"altcoin_max_leverage": {
|
||
"type": "int",
|
||
"min": 1,
|
||
"max": 20,
|
||
"description": "山寨币最大杠杆倍数,范围 1~20。"
|
||
},
|
||
"min_confidence": {
|
||
"type": "int",
|
||
"min": 50,
|
||
"max": 100,
|
||
"description": "最小开仓置信度,手动页面范围 50~100,数值越高开单越谨慎。"
|
||
},
|
||
"min_risk_reward_ratio": {
|
||
"type": "float",
|
||
"min": 1,
|
||
"max": 10,
|
||
"description": "最小盈亏比,手动页面范围 1~10,步进 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 类型专用,手动页面范围 5~50。"
|
||
},
|
||
"total_investment": {
|
||
"type": "float",
|
||
"min": 100,
|
||
"description": "网格总投入金额,grid_trading 类型专用,表示用户实际投入/保证金预算,不是杠杆后的名义仓位;名义仓位约等于 total_investment × leverage。手动页面最小 100 USDT,步进 100。"
|
||
},
|
||
"leverage": {
|
||
"type": "int",
|
||
"min": 1,
|
||
"max": 5,
|
||
"description": "网格策略杠杆倍数,手动页面当前范围 1~5。"
|
||
},
|
||
"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 时使用,手动页面范围 1~5,步进 0.5。"
|
||
},
|
||
"enable_direction_adjust": {
|
||
"type": "bool",
|
||
"default": false,
|
||
"description": "是否启用方向偏置调整。"
|
||
},
|
||
"direction_bias_ratio": {
|
||
"type": "float",
|
||
"min": 0.55,
|
||
"max": 0.9,
|
||
"description": "方向偏置比例,决定多空倾向强弱;手动页面范围 0.55~0.90,通常以 55%~90% 展示。"
|
||
},
|
||
"max_drawdown_pct": {
|
||
"type": "float",
|
||
"min": 5,
|
||
"max": 50,
|
||
"description": "网格策略最大回撤百分比,手动页面范围 5~50。"
|
||
},
|
||
"stop_loss_pct": {
|
||
"type": "float",
|
||
"min": 1,
|
||
"max": 20,
|
||
"description": "网格策略止损百分比,手动页面范围 1~20。"
|
||
},
|
||
"daily_loss_limit_pct": {
|
||
"type": "float",
|
||
"min": 1,
|
||
"max": 30,
|
||
"description": "网格策略每日最大亏损比例,手动页面范围 1~30,达到后当天停止新开仓。"
|
||
},
|
||
"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 榜单选取数量,手动页面范围 1~10。"
|
||
},
|
||
"use_oi_top": {
|
||
"type": "bool",
|
||
"default": false,
|
||
"description": "是否启用 OI Top 作为候选币来源。"
|
||
},
|
||
"oi_top_limit": {
|
||
"type": "int",
|
||
"min": 1,
|
||
"max": 10,
|
||
"description": "OI Top 选取数量,手动页面范围 1~10。"
|
||
},
|
||
"use_oi_low": {
|
||
"type": "bool",
|
||
"default": false,
|
||
"description": "是否启用 OI Low 作为候选币来源。"
|
||
},
|
||
"oi_low_limit": {
|
||
"type": "int",
|
||
"min": 1,
|
||
"max": 10,
|
||
"description": "OI Low 选取数量,手动页面范围 1~10。"
|
||
},
|
||
"primary_count": {
|
||
"type": "int",
|
||
"min": 10,
|
||
"max": 30,
|
||
"description": "主周期 K 线样本数量,手动页面范围 10~30。"
|
||
},
|
||
"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。"
|
||
}
|
||
},
|
||
"validation_rules": [
|
||
"本 skill 只负责策略模板创建、查看、修改、删除、激活和复制。",
|
||
"字段选项和范围来自 field_constraints;产品行为规则由 active session prompt 负责。"
|
||
],
|
||
"actions": {
|
||
"create": {
|
||
"description": "创建策略模板。",
|
||
"required_slots": ["name"],
|
||
"optional_slots": ["strategy_type", "config_patch"],
|
||
"goal": "创建一个可供 trader 绑定使用的策略模板。",
|
||
"success_output": "返回 strategy_id 和新策略摘要(名称、类型、主要配置)。",
|
||
"failure_output": "明确指出仍缺哪些核心参数,或说明需要先确认的风控收敛结果。"
|
||
},
|
||
"update": {
|
||
"description": "更新策略模板的任意可编辑字段。",
|
||
"required_slots": ["target_ref"],
|
||
"optional_slots": ["name", "description", "is_public", "config_visible", "config_patch"],
|
||
"goal": "更新一个已有策略模板的指定配置,而不覆盖未提及字段。",
|
||
"dynamic_rules": [
|
||
"只更新用户明确提到的字段,不要覆盖未提及的字段。",
|
||
"杠杆超出 1~20 范围时,自动收敛并告知用户。",
|
||
"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_sections(role_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"],
|
||
"optional_slots": ["config_patch"],
|
||
"goal": "修改策略模板中的一个或一组具体配置参数。",
|
||
"dynamic_rules": [
|
||
"配置变更统一通过 config_patch 表达,字段必须来自当前策略类型的产品模板。",
|
||
"字段选项、范围和非策略字段拦截由 active session prompt 与后端 schema 负责。"
|
||
],
|
||
"success_output": "返回 strategy_id,并明确告知已修改的配置字段及其最终值。",
|
||
"failure_output": "明确指出目标策略不存在、配置字段非法,或值仍需用户澄清。"
|
||
},
|
||
"activate": {
|
||
"description": "将策略模板设为默认模板(激活)。",
|
||
"required_slots": ["target_ref"],
|
||
"goal": "将某个策略模板设为默认模板。",
|
||
"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"
|
||
}
|
||
}
|