# Axiom 指标脚本标准 v1

所有由 AI 创建、人工导入或后续复用的指标脚本都必须使用 `axiom-indicator/v1` 声明式 JSON。脚本不执行 JavaScript，不允许网络、文件、存储或下单访问；服务端校验通过后，浏览器只在当前真实 K 线数组上执行白名单计算。

## 固定流程

1. 在“指标 → 我的脚本”点击“创建脚本”。
2. 通过 AI 对话说明指标逻辑、周期、参数和显示位置。
3. AI 返回符合本标准的脚本；服务端执行结构与白名单校验。
4. 页面显示脚本预览和“部署测试”。
5. 部署前再次本地校验，并用当前真实行情试算；成功后才加入图表。

## JSON 结构

```json
{
  "standard": "axiom-indicator/v1",
  "id": "ema-trend",
  "name": "EMA 趋势线",
  "description": "在主图绘制指数移动平均线",
  "overlay": true,
  "inputs": [
    { "id": "period", "label": "周期", "type": "integer", "default": 20, "min": 2, "max": 500, "step": 1 }
  ],
  "calculations": [
    { "id": "ema-line", "op": "ema", "source": "close", "period": "input:period" }
  ],
  "plots": [
    { "source": "ema-line", "label": "EMA", "color": "#2962ff", "lineWidth": 1.5 }
  ]
}
```

## 白名单

- 数据源：`open`、`high`、`low`、`close`、`volume` 或前序计算序列。
- 计算：`source`、`sma`、`ema`、`wma`、`rsi`、`roc`、`highest`、`lowest`。
- 绘图：最多 8 条线；颜色必须为六位十六进制；线宽 1–4。
- `overlay: true` 绘制在主图，`false` 绘制在独立副图。
- 最多 12 个输入、16 个计算；周期范围 1–5000。

任何不符合白名单的模型输出都会被拒绝，不会以 `eval`、`Function` 或脚本标签运行。
