加密货币量化交易 AI Skill。用户用自然语言描述交易规则 → AI 生成策略脚本 → 服务器回测验证 → 实时监控。 Use when user asks to create a trading strategy, backtest, or monitor crypto markets.
Resources
6Install
npx skillscat add miyaosk/dex-quant-skill Install via the SkillsCat registry.
DEX Quant Skill — 加密货币量化交易
⚠️ 行为准则(必须遵守)
- 你是执行者。你自己运行代码完成任务,不要给用户贴命令让他们手动跑。
- 不要问用户选择。不要问"你选哪种?"、"要我装依赖吗?"、"本地还是服务器?"。直接做。
- 回测 = 把脚本源码上传到服务器。服务器负责拉K线、跑信号、回测。本地不需要下载任何数据。
- 依赖直接装。不要问,直接
pip3 install httpx loguru 2>/dev/null。 - 生成策略后如果用户说回测,立刻执行,不要再确认。
- 回测失败时自动重试一次,不要问用户要不要重试。
配额规则
| 功能 | 是否免费 | 是否占配额 |
|---|---|---|
| 生成策略脚本 | 免费 | 不占 |
| 回测(无限次) | 免费 | 不占 |
| 定时监控任务 | 免费 3 个 | 占配额 |
回测可以随便跑,不占用任何配额。配额只限制「定时监控任务」的数量(免费 3 个)。
流程
用户描述想法 → 你生成策略脚本(.py) → 用户说回测 → 你读取脚本源码 + 调服务器API → 展示结果本地不需要运行策略脚本、不需要下载K线数据。脚本源码直接上传给服务器执行。
1. 策略制作
用户说交易想法时,生成 Python 策略脚本,保存到 {baseDir}/strategies/ 目录。
脚本要求:
import sys; sys.path.insert(0, '{baseDir}/scripts')导入工具库- 使用
from data_client import DataClient获取数据 - 使用
from indicators import Indicators as ind计算指标 - 实现
generate_signals(mode, start_date, end_date)函数 - 返回
{"strategy_name": "...", "signals": [...]}
信号格式:timestamp, symbol, action(buy/sell), direction(long/short), confidence, reason, price_at_signal。可选:suggested_stop_loss, suggested_take_profit。
2. 回测(服务器端执行,免费无限次,不占配额)
当用户要求回测时,立刻执行以下步骤(不要问任何问题):
步骤一:安装最少依赖
pip3 install httpx loguru 2>/dev/null只需要 httpx 和 loguru。不需要 numpy/pandas/yfinance,数据在服务器端拉取。
步骤二:读取策略脚本源码 + 调服务器回测API
import sys
sys.path.insert(0, '{baseDir}/scripts')
from api_client import QuantAPIClient
# 读取策略脚本的源码(不是运行它)
with open('{baseDir}/strategies/xxx_strategy.py', 'r') as f:
script_content = f.read()
# 把源码上传给服务器,服务器负责一切:拉K线 → 跑脚本生成信号 → 回测引擎模拟交易
client = QuantAPIClient(timeout=300.0)
bt = client.run_server_backtest(
script_content=script_content,
strategy_name="策略名",
symbol="BTCUSDT",
timeframe="4h",
start_date="2025-01-01",
end_date="2025-12-31",
leverage=3,
initial_capital=100000,
direction="long_short",
)
# 展示回测报告(已包含结论)
client.print_metrics(bt)关键:用 run_server_backtest(script_content=...) 而不是 run_backtest(signals=...)。
服务器地址和认证已内置在 api_client.py 中,无需配置。
⚠️ 展示规则(必须遵守)
回测完成后,你必须把 print_metrics(bt) 的完整输出展示给用户。只需调这一个函数,它已包含所有指标和结论。
禁止只说一句"总收益为负"这种总结。用户需要看到完整的指标数值。
如果用户随后要求查看"交易记录",用 client.print_trades(bt) 展示(bt 是之前保存的回测结果变量)。不要主动调用,仅用户要求时才调。
3. 参数优化 / 批量回测(免费不占配额)
当用户说以下任何一种时,都用 run_optimization:
- "优化参数"、"找最优参数"
- "批量回测"、"批量生成策略"
- "随机生成N个策略然后回测"
- "对比不同参数"、"跑一批"
- "用遗传算法优化"
核心思路:生成一个带 PARAMS 的策略脚本模板,把差异点做成参数。服务器自动遍历所有参数组合并排名。
不要循环调用 run_server_backtest 50 次。只调一次 run_optimization。
搜索方法(method 参数)
| method | 说明 | 适用场景 |
|---|---|---|
"grid" |
网格搜索,穷举所有参数组合 | 参数少、组合数 ≤ 200 |
"genetic" |
遗传算法(锦标赛选择 + 交叉 + 变异 + 精英保留 + 早停) | 参数多、搜索空间大(组合数 > 200) |
默认 method="grid"。当用户提到"遗传算法"、"智能搜索"、"大范围寻优",或参数组合超过 200 时,用 method="genetic"。
步骤一:生成带 PARAMS 的策略脚本
脚本中用 PARAMS['xxx'] 替代硬编码参数值:
PARAMS = {'fast_ema': 20, 'slow_ema': 60, 'rsi_threshold': 50, 'sl_pct': 0.02, 'tp_pct': 0.06}
def generate_signals(mode='backtest', start_date=None, end_date=None):
fast = PARAMS['fast_ema']
slow = PARAMS['slow_ema']
rsi_th = PARAMS['rsi_threshold']
# ... 使用这些参数计算指标和生成信号 ...步骤二:调用优化 API
import sys
sys.path.insert(0, '{baseDir}/scripts')
from api_client import QuantAPIClient
with open('{baseDir}/strategies/xxx_strategy.py', 'r') as f:
script_content = f.read()
client = QuantAPIClient(timeout=600.0)
result = client.run_optimization(
script_content=script_content,
params=[
{"name": "fast_ema", "type": "int", "low": 5, "high": 30, "step": 5},
{"name": "slow_ema", "type": "int", "low": 40, "high": 80, "step": 10},
{"name": "rsi_threshold", "type": "int", "low": 40, "high": 60, "step": 5},
{"name": "sl_pct", "type": "float", "low": 0.01, "high": 0.05, "step": 0.01},
{"name": "tp_pct", "type": "float", "low": 0.03, "high": 0.10, "step": 0.01},
],
strategy_name="BTC EMA RSI 优化",
symbol="BTCUSDT",
timeframe="4h",
start_date="2025-01-01",
end_date="2025-12-31",
leverage=3,
fitness_metric="sharpe_ratio",
max_combinations=200,
method="grid", # 或 "genetic"(遗传算法)
)
client.print_optimization(result)服务器会自动替换 PARAMS、逐一回测所有参数组合,返回按 fitness 降序排名的 Top 结果。
注意
method="grid": 控制参数组合数在 200 以内(step 不要太小)method="genetic": 搜索空间大时使用,无需严格控制组合数,算法自动收敛- fitness_metric 支持:sharpe_ratio、total_return_pct、sortino_ratio、win_rate
- 结果展示必须用
print_optimization(),展示完整排名表
4. 定时监控(占配额,免费 3 个)
用户要求监控时,运行策略脚本的 live 模式(这时候才需要本地运行和占配额):
pip3 install numpy pandas httpx loguru yfinance 2>/dev/nullimport sys
sys.path.insert(0, '{baseDir}/scripts')
from strategies.xxx_strategy import generate_signals
result = generate_signals(mode='live')项目结构
dex-quant-skill/
├── SKILL.md ← 你正在读的文件
├── scripts/
│ ├── api_client.py ← 回测服务器客户端(run_server_backtest)
│ ├── data_client.py ← K线数据获取(服务器端使用)
│ ├── indicators.py ← 技术指标库(服务器端使用)
│ ├── machine_auth.py ← 自动认证
│ └── strategy_runner.py
├── strategies/ ← 生成的策略脚本放这里
└── schemas/
└── signal_format.json