# 市场行情自动识别与 MARKET_SCHEME 更新

## 1. 功能说明

`update_market_scheme.py` 基于 Binance 公开 API 自动识别当前市场行情（牛/熊/正常），并可选更新全局配置 `MARKET_SCHEME`，从而自动切换止损、仓位、4H 趋势过滤等参数。

**数据来源（无需 API Key）：**

- 24h 涨跌幅：`/fapi/v1/ticker/24hr`
- 资金费率：`/fapi/v1/premiumIndex`
- 大户多空比：`/futures/data/topLongShortPositionRatio`
- 4H K 线：`/fapi/v1/klines`（计算 trend_4h）

**打分规则：**

| 指标         | 偏多 (+1)   | 偏空 (-1)    |
|--------------|-------------|--------------|
| 24h 涨跌幅   | ≥ 2%        | ≤ -2%        |
| 4H 趋势      | up          | down         |
| 资金费率     | ≥ 0.00005   | ≤ -0.00005   |
| 大户多空比   | ≥ 1.1       | ≤ 0.9        |

总分 ≥ 2 → bull，≤ -2 → bear，否则 normal。

## 2. 使用方式

```bash
# 仅检测并打印（不更新 DB）
python scripts/update_market_scheme.py

# 若开启 AUTO_MARKET_SCHEME_ENABLED，则更新 DB
python scripts/update_market_scheme.py --apply

# 强制更新（忽略 AUTO_MARKET_SCHEME_ENABLED 开关）
python scripts/update_market_scheme.py --apply --force
```

## 3. 启用自动更新

1. 在「全局配置」中设置 `AUTO_MARKET_SCHEME_ENABLED` 为 `true`
2. 或执行一次同步默认配置：`cd backend && python sync_global_config_defaults.py`，然后在全局配置页手动改为 true
3. 配置 crontab 定时执行 `update_market_scheme.py --apply`

## 4. Crontab 配置示例

每 4 小时执行一次（0 点、4 点、8 点…）：

```cron
0 */4 * * * cd /path/to/auto_trade_sys && /path/to/.venv/bin/python scripts/update_market_scheme.py --apply >> /tmp/update_market_scheme.log 2>&1
```

或每 6 小时：

```cron
0 */6 * * * cd /path/to/auto_trade_sys && /path/to/.venv/bin/python scripts/update_market_scheme.py --apply >> /tmp/update_market_scheme.log 2>&1
```

## 5. 注意事项

- 脚本会清除 `global_strategy_config_v5` Redis 缓存，使交易进程下次读取时从 DB 获取最新配置
- 若希望立即生效，可在前端点击「清除全局缓存」并「重启所有账号交易」
- 若不开启 `AUTO_MARKET_SCHEME_ENABLED`，脚本仅打印识别结果，不修改 DB；可用 `--force` 临时强制更新
