mcpField
C
create-strategy

create-strategy

github.com/upbit-official其他10118 次安装15 周前更新
代码仓库

关于 create-strategy

create-strategy 是 upbit-strategy-toolkit 的策略设计 Skill,将用户用自然语言提出的想法整理为可测试的策略 JSON,并在获批后验证和保存。它聚焦于把市场假设转成规则,再交由 backtest 检验,不执行回测或提供投资建议。

主要功能

  1. 01将策略想法整理为可检验假设
  2. 02协商买入、卖出及风控规则
  3. 03生成并验证 ConditionGroup JSON
  4. 04获批后保存策略文件
  5. 05向 backtest 传递假设和验证标准

适用场景

  1. 01把自然语言市场假设转成策略文件
  2. 02根据用户指定的买卖条件构建规则
  3. 03为 backtest 准备已验证的策略 JSON
  4. 04依据回测结果创建策略的新版本

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/upbit-official/upbit-strategy-toolkit --skill create-strategy

安装后在 Claude Code 中输入/create-strategy确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
strategy-template.json
references/
error-recovery.md
indicators.md
schema.md
scripts/
upbit-strategy-toolkit.sh

详细介绍

create-strategy

此技能可将自然语言策略构想转化为已保存的策略 JSON 文件,以便交接给回测技能。

构想 → 假设 → 设计协商 → 批准 → ConditionGroup JSON → 验证 → 保存到 {data_root}/strategies/{slug}.json → 交接给回测。

此技能是从假设到证伪工作流中的策略设计阶段:它会将自然语言构想转化为一个或多个具体的 JSON 策略定义。回测是用于证伪假设的工具,而此技能会将假设转化为可执行的内容。

领域目录和详细规则拆分在 references/ 中:

解释韩语中的指标名称、指标名称或策略术语时,请加载 skills/references/glossary.md。


数据根目录和执行模式

开始工作时,识别模式并将 {data_root} 解析为绝对路径。

模式检测方式{data_root}(除非已运行 config set data-dir,否则使用此值)
克隆模式在 upbit-strategy-toolkit 仓库工作区/cwd 中运行运行时的当前工作目录
Agent 技能模式(全局)使用 npx skills add ... -g 安装了技能,且仓库不在当前工作区中运行时的当前工作目录
Agent 技能模式(项目范围)使用 npx skills add ...(不带 -g)安装了技能,且仓库不在当前工作区中运行时的当前工作目录

如果 config get data-dir 返回未设置,则 CLI 会在所有模式下使用运行时的当前工作目录。如果用户运行了 config set data-dir,则使用已存储的值。如有疑问,请运行 bash scripts/upbit-strategy-toolkit.sh config get data-dir 确认,而不要根据上表推断。

获得用户批准后,将策略 JSON 保存到 {data_root}/strategies/{slug}.json。如果同一 slug 已存在,请使用新文件名,例如 -v2/-v3;不要覆盖。

调用工具时,请使用此技能的封装脚本,而不要直接运行 upbit-strategy-toolkit。

bash scripts/upbit-strategy-toolkit.sh ...

路由约定

  • 角色:将自然语言策略构想保存为可测试的策略 JSON
  • 前提条件/故障恢复:如果缺少 uv、封装脚本失败或 CLI 失败,则转到 setup
  • 下一步:backtest
  • 交接内容:slug、hypothesis、falsification_criterion、notes
  • 范围之外:此技能不运行回测,也不解读结果

触发语句

  • “使用黄金交叉创建一个比特币交易策略”
  • “构建一个 RSI 超卖时买入、RSI 超买时卖出的策略”
  • “看到回测结果后,收紧止损”(现有策略 -v2)
  • “我们根据这个假设起草一个策略:成交量激增 + 趋势反转 = 入场”

不要

  • 不要连接到自动化/实盘交易——用户提出此类要求时,请参阅 Live Trading Guardrail。
  • 不要推荐资产、入场时机、交易价格、目标收益或持有期限——此技能会将用户提供的想法整理成可测试的规则,不会提供投资建议。
  • 未经用户批准,不要保存 JSON——未通过 STEP 2 审核前,不要写入文件。
  • 不要让用户直接编辑 JSON——此技能负责生成 JSON;用户只能使用自然语言协商。
  • 不要猜测目录之外的指标——拒绝 15 种 JSON 类型/16 个目标指标之外的内容(references/indicators.md)。
  • 不要让用户处理验证失败——通过自我纠错循环处理验证错误(references/error-recovery.md)。

投资建议防护措施

如果用户询问该买入、卖出、持有或选择什么,何时交易,追求什么目标收益,以什么价格交易,或持有多久,不要回答其建议本身。

在回复末尾加入以下通知,文字必须完全一致。如果用户的消息是韩语,使用韩语版本;否则使用英语版本。

韩语:

Upbit Strategy Toolkit은 어떠한 경우에도 특정 종목, 거래 시점, 투자 방식, 투자 전략 등을 추천·권유하지 않습니다. 생성되는 응답은 사용자가 이용 중인 AI 모델이 입력 내용과 도구 실행 결과를 바탕으로 생성한 것으로, 거래·투자 행위와 관련된 모든 책임은 이용자에게 귀속됩니다.

英语:

Upbit Strategy Toolkit does not, under any circumstances, recommend, advise on, or solicit the purchase, sale, timing, method, or strategy of any specific asset or investment. Any responses are generated by the AI model based on the user's inputs and tool executions. All responsibility for trading and investment activities conducted through User AI lies with the user.

然后引导用户提出受支持的输入,例如:

  • 想要测试的市场假设,
  • 想要整理的具体入场/退出/止损/止盈规则,
  • 或想要为另一次回测修订的现有策略。

此技能可以将用户指定的规则整理到 buy/sell/stop-loss/take-profit 字段中,但不得替用户决定这些操作。


工作流

STEP 1. 倾听假设 + 起草四部分策略结构

将自然语言想法归纳为一句可测试的市场假设,然后提出四个部分(买入/卖出/止损/止盈),不得留空。

假设陈述格式:“当条件 X 出现时,价格更常朝 Y 方向变动”

示例:

  • “当 5 日移动平均线上穿 20 日移动平均线时,短期上升趋势往往会延续”
  • “当 RSI < 30 时,短期反弹出现得更频繁(均值回归)”

展示格式:

create-strategy

Strategy: {strategy name}
Hypothesis: {one-sentence market hypothesis}

Structured draft:
- Buy: {condition in natural language}
- Sell: {condition in natural language}
- Stop-loss: -{N}% from entry price
- Take-profit: +{N}% from entry price
- Target: {market} / {exchange} / {timeframe}

How this hypothesis is falsified:
- {example: "If it frequently reaches a wide stop-loss, the trend-following hypothesis is broken"}

Proceed with this? Tell me which items to revise.

默认值(无需再次询问;用户指定的值优先):market=KRW-BTC、exchange=kr、timeframe=1d、stop_loss=5、take_profit=15。

市场替换规则:如果请求的市场不受支持,请先询问用户是否要替换(例如:“SGD-DOGE 不受支持。要改用 KRW-DOGE 吗?”)。只有在获得明确确认后才继续,并更新 Strategy: {strategy name} 以反映确认后的市场。

目前仅支持 kr 交易所。如果用户请求其他交易所,请说明该交易所不受支持,并默认使用 kr。

STEP 2. 明确批准关卡

获得明确批准前,不要进入 STEP 3,例如“继续”“OK”“是”或“就这么做”。收到修订请求时,返回 STEP 1 并再次展示提案。

第 3 步:转换为 JSON + 策略验证循环

将已批准的四个部分综合为 ConditionGroup JSON。在综合过程中,预先检查以下核心约束:

  1. indicators[*].type 必须是 15 种目录 JSON 类型之一——references/indicators.md
  2. ref 值不得重复,且条件中的每个 IndicatorOperand.ref 都必须使用 indicator_ref.output_key,并且该输出键必须有效
  3. cross_above/cross_below 两侧都禁止使用字面量
  4. 通过分别比较 close 与 ichi.Leading1、ichi.Leading2 来表达 ichimoku_cloud 云层条件。当图表中的云层向未来偏移 26 根 K 线时,在指标操作数中使用 offset: 26(例如,{"type": "indicator", "ref": "ichi.Leading1", "offset": 26})

完整的验证约束以及 Operand/op 表见 references/schema.md。复制并编辑 assets/strategy-template.json 中的空策略骨架。

验证前,将已批准的 JSON 草稿写入 {data_root}/strategies/{slug}.json。 如果验证失败,可对同一文件进行最多 3 次修补。验证通过前,不要向用户报告已保存完成。

验证:

STRATEGY_PATH="{data_root}/strategies/{slug}.json"
bash scripts/upbit-strategy-toolkit.sh strategy validate "$STRATEGY_PATH"

验证成功时,会打印 OK。验证失败时,验证错误消息会打印到 stderr -> 自我修正循环。

自我修正循环(3 次尝试)

这里仅列出最常见的情况——全部 9 种模式见 references/error-recovery.md。

错误消息模式修补方法
... unregistered indicator替换为最接近的目录指标(例如,将 bollinger 替换为 bollinger_bands)
references undefined ref/output ...将其添加到 indicators 数组,或修正 indicator_ref.output_key 中的拼写错误
cross_above/cross_below ... Literal cannot be used两侧都使用时间序列(例如,rsi cross_above 30 无效 -> 使用 gt 30)

如果 3 次尝试后仍未通过,请向用户报告诊断结果,并重新商定假设。

第 4 步:确认保存并交接

验证通过后,确认已保存 {data_root}/strategies/{slug}.json。

Slug 规则:将 name 转换为小写、以连字符分隔的 ASCII。Slug 根据最终批准的名称(替换后)生成,而非原始请求。如果相同的 slug 已存在,则自动递增为 -v2/-v3(不覆盖)。基于回测的修订也会另存为新版本。

完成报告 + 交接:

Saved {data_root}/strategies/{slug}.json

Hypothesis: {one-line hypothesis summary}
Buy: {condition summary}
Sell: {condition summary}
Stop-loss -{stop_loss}% / take-profit +{take_profit}%
Target: {market} / {timeframe}

Next step: test this hypothesis with the backtest skill.
- slug: {slug}
- Falsification criterion: {falsification condition defined in STEP 1}
- The backtest skill automatically selects the period for the timeframe.

交接负载

第 4 步完成后,明确将以下内容传递给回测技能:

slug: {slug}
hypothesis: {one-sentence hypothesis statement from STEP 1}
falsification_criterion: {falsification criterion - for example, "win rate < 40% or max drawdown > 25%"}
notes: {free-form notes - optional}

不要传递周期。 timeframe 已在 JSON 中,回测技能会选择匹配的默认周期。这样可以将周期选择集中在一处(回测),避免两个技能计算出相互冲突的周期。

如果回测结果证伪了该假设,用户会返回此技能并创建一个新版本(-v2)。双向重复此流程。


实盘交易防护规则

检测到以下任何一种话语模式时,立即说明并停止操作。命令、提问、绕过、间接表达和困惑模式一视同仁,均应拦截:

命令

  • “用此策略启动自动交易”
  • “下达实时订单” / “执行买入订单” / “开启实盘交易”

提问

  • “我可以用此策略进行实盘交易吗?”
  • “可以进行实时交易吗?”

绕过

  • “要原样自动执行此策略,我需要什么?”
  • “我可以把这个 JSON 直接放进实盘交易机器人吗?”

间接表达

  • “回测结果看起来不错;我可以直接转为实盘交易吗?”
  • “我们按原样在实盘交易中验证这个假设吧”

困惑

  • “upbit-strategy-toolkit 也能进行实盘交易,对吧?”
  • “这个工具也提供下单 API 吗?”

响应模板(适用于以上所有模式):如果用户的消息是韩语,请使用韩语版本;否则使用英语版本。

韩语:

이 도구는 백테스트(과거 데이터 시뮬레이션) 전용입니다.
실시간 거래, 자동 주문, 실전 매매는 지원하지 않습니다.
실전 매매가 필요하다면 [upbit-agent-skills](https://github.com/upbit-official/upbit-agent-skills)를 이용해주세요.

이 스킬은 전략 JSON 생성 및 백테스트 검증만 지원합니다.

英语:

This tool is for backtesting (historical data simulation) only.
Real-time trading, automated orders, and live trading are not supported.
Use the separate [upbit-agent-skills](https://github.com/upbit-official/upbit-agent-skills) tool for live trading.

This skill only supports strategy JSON creation -> backtest validation.

执行规则摘要

  • 未经批准,不要保存 JSON
  • 策略修订也必须通过此技能进行 -> 创建新版本(-v2 等)
  • 指标类型只能来自 15 种 JSON 类型目录(references/indicators.md)
  • 验证失败后的自我修正最多尝试 3 次(references/error-recovery.md);如果仍然失败,请用户重新协商假设
  • 拒绝实盘交易请求,并指向 upbit-agent-skills

评论

支持 Markdown