con un clic
futures-trader
期货交易辅助 - 查询期货价格、分析涨跌原因、提供交易建议参考
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
期货交易辅助 - 查询期货价格、分析涨跌原因、提供交易建议参考
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
| name | futures-trader |
| description | 期货交易辅助 - 查询期货价格、分析涨跌原因、提供交易建议参考 |
何时使用此 skill:
不使用此 skill:
数据库路径:~/.claude/skills/futures-trader/futures.db
表结构:
| 表名 | 用途 | 主要字段 |
|---|---|---|
| futures_tickers | 品种信息 | symbol, name, exchange, sector |
| futures_ohlc | 行情数据 | symbol, date, open, high, low, close, volume, hold, settle, amount |
| futures_news_raw | 新闻资讯 | id, title, content, publisher, published_utc |
| futures_news_ticker | 新闻关联 | news_id, symbol |
| futures_contracts | 合约乘数 | symbol, name, multiplier, unit, exchange |
期货特有字段:
hold (持仓量) - 期货市场特有,反映市场参与度settle (结算价) - 交易所每日结算价amount (成交额) - 自动计算:成交量 × 结算价 × 合约乘数multiplier (合约乘数) - 每手合约的单位数量(如螺纹钢10吨/手)| 代码 | 名称 | 板块 |
|---|---|---|
| V0 | PVC连续 | 能源化工 |
| P0 | 棕榈油连续 | 农产品 |
| B0 | 豆二连续 | 农产品 |
| M0 | 豆粕连续 | 农产品 |
| I0 | 铁矿石连续 | 黑色系 |
| Y0 | 豆油连续 | 农产品 |
| A0 | 豆一连续 | 农产品 |
| C0 | 玉米连续 | 农产品 |
| CS0 | 玉米淀粉连续 | 农产品 |
| JD0 | 鸡蛋连续 | 农产品 |
| L0 | 塑料连续 | 能源化工 |
| PP0 | PP连续 | 能源化工 |
| FB0 | 纤维板连续 | 建材 |
| BB0 | 胶合板连续 | 建材 |
| EG0 | 乙二醇连续 | 能源化工 |
| RR0 | 粳米连续 | 农产品 |
| PG0 | 液化石油气连续 | 能源化工 |
| EB0 | 苯乙烯连续 | 能源化工 |
| LH0 | 生猪连续 | 农产品 |
| JM0 | 焦煤连续 | 黑色系 |
| 代码 | 名称 | 板块 |
|---|---|---|
| CU0 | 铜连续 | 有色金属 |
| AL0 | 铝连续 | 有色金属 |
| ZN0 | 锌连续 | 有色金属 |
| PB0 | 铅连续 | 有色金属 |
| NI0 | 镍连续 | 有色金属 |
| SN0 | 锡连续 | 有色金属 |
| AU0 | 黄金连续 | 贵金属 |
| AG0 | 白银连续 | 贵金属 |
| RB0 | 螺纹钢连续 | 黑色系 |
| WR0 | 线材连续 | 黑色系 |
| HC0 | 热卷连续 | 黑色系 |
| FU0 | 燃料油连续 | 能源化工 |
| BU0 | 沥青连续 | 能源化工 |
| RU0 | 橡胶连续 | 能源化工 |
| SP0 | 纸浆连续 | 能源化工 |
| 代码 | 名称 | 板块 |
|---|---|---|
| SR0 | 白糖连续 | 农产品 |
| CF0 | 棉花连续 | 农产品 |
| TA0 | PTA连续 | 能源化工 |
| OI0 | 菜籽油连续 | 农产品 |
| RM0 | 菜粕连续 | 农产品 |
| MA0 | 甲醇连续 | 能源化工 |
| FG0 | 玻璃连续 | 建材 |
| RS0 | 菜籽连续 | 农产品 |
| ZC0 | 动力煤连续 | 能源化工 |
| SF0 | 硅铁连续 | 黑色系 |
| SM0 | 锰硅连续 | 黑色系 |
| WH0 | 强麦连续 | 农产品 |
| JR0 | 粳稻连续 | 农产品 |
| LR0 | 晚籼连续 | 农产品 |
| AP0 | 苹果连续 | 农产品 |
| CJ0 | 红枣连续 | 农产品 |
| PK0 | 花生连续 | 农产品 |
| UR0 | 尿素连续 | 能源化工 |
| SA0 | 纯碱连续 | 能源化工 |
| PF0 | 短纤连续 | 能源化工 |
| PX0 | PX连续 | 能源化工 |
| 代码 | 名称 | 板块 |
|---|---|---|
| IF0 | 沪深300指数连续 | 金融 |
| IH0 | 上证50指数连续 | 金融 |
| IC0 | 中证500指数连续 | 金融 |
| IM0 | 中证1000指数连续 | 金融 |
| TS0 | 2年期国债连续 | 金融 |
| TF0 | 5年期国债连续 | 金融 |
| T0 | 10年期国债连续 | 金融 |
| TL0 | 30年期国债连续 | 金融 |
| 代码 | 名称 | 板块 |
|---|---|---|
| SC0 | 原油连续 | 能源化工 |
| LU0 | 低硫燃料油连续 | 能源化工 |
| BC0 | 20号胶连续 | 能源化工 |
| NR0 | 橡胶连续 | 能源化工 |
| EC0 | 集运指数连续 | 能源化工 |
| 代码 | 名称 | 板块 |
|---|---|---|
| SI0 | 工业硅连续 | 有色金属 |
| LC0 | 碳酸锂连续 | 有色金属 |
| PS0 | 多晶硅连续 | 有色金属 |
黑色系:RB0(螺纹钢), I0(铁矿石), JM0(焦煤), HC0(热卷), SF0(硅铁), SM0(锰硅)
有色金属:CU0(铜), AL0(铝), ZN0(锌), PB0(铅), NI0(镍), SN0(锡), SI0(工业硅), LC0(碳酸锂), PS0(多晶硅)
贵金属:AU0(黄金), AG0(白银)
农产品:M0(豆粕), Y0(豆油), P0(棕榈油), C0(玉米), A0(豆一), SR0(白糖), CF0(棉花)
能源化工:SC0(原油), V0(PVC), L0(塑料), PP0(PP), MA0(甲醇), TA0(PTA)
金融:IF0(沪深300), IH0(上证50), IC0(中证500), IM0(中证1000), T0(10年期国债)
从用户问题中提取:
⚠️ ⚠️⚠️ 强制规则:涨跌幅计算 ⚠️⚠️⚠️
每次计算涨跌幅时,你必须使用以下方法:
✅ 正确方法(包含跳空的真实涨跌幅):
sqlite3 ~/.claude/skills/futures-trader/futures.db <<EOF
WITH daily_change AS (
SELECT
symbol,
date,
open,
high,
low,
close,
volume,
hold,
settle,
LAG(close) OVER (PARTITION BY symbol ORDER BY date) as prev_close
FROM futures_ohlc
WHERE date >= DATE('$DATE', '-1 day')
)
SELECT
date,
open,
close,
settle,
prev_close,
ROUND((close - prev_close) / prev_close * 100, 2) as change_pct,
volume,
hold
FROM daily_change
WHERE symbol = '$SYMBOL' AND date = '$DATE' AND prev_close IS NOT NULL;
EOF
❌ 绝对禁止使用:
-- 错误:只看日内变化,忽略跳空
(close - open) / open * 100
原因:跳空是重要的市场信号,忽略它会导致严重错误。
方式 1:按品种代码查询新闻
sqlite3 ~/.claude/skills/futures-trader/futures.db <<EOF
SELECT
fnr.title,
fnr.content,
fnr.publisher,
fnr.published_utc,
DATE(fnr.published_utc) as '发布日期'
FROM futures_news_raw fnr
JOIN futures_news_ticker fnt ON fnr.id = fnt.news_id
WHERE fnt.symbol = '$SYMBOL'
AND DATE(fnr.published_utc) BETWEEN DATE('$DATE', '-3 days') AND DATE('$DATE', '+3 days')
ORDER BY fnr.published_utc DESC;
EOF
方式 2:查询最新N条新闻(不限定品种)
sqlite3 ~/.claude/skills/futures-trader/futures.db <<EOF
SELECT
fnr.title,
fnr.content,
fnr.publisher,
fnr.published_utc
FROM futures_news_raw fnr
ORDER BY fnr.published_utc DESC
LIMIT 20;
EOF
基于查询结果,提供以下分析:
价格变动摘要
相关新闻汇总
市场活跃度分析
交易建议参考(不作为投资建议)
查询单个品种历史数据(最近N天)
sqlite3 ~/.claude/skills/futures-trader/futures.db <<EOF
WITH daily_change AS (
SELECT
fo.symbol,
fo.date,
fo.open,
fo.high,
fo.low,
fo.close,
fo.settle,
fo.volume,
fo.hold,
LAG(fo.close) OVER (PARTITION BY fo.symbol ORDER BY fo.date) as prev_close
FROM futures_ohlc fo
WHERE fo.symbol = '$SYMBOL'
)
SELECT
date,
open,
high,
low,
close,
settle,
ROUND((close - prev_close) / prev_close * 100, 2) as '涨跌幅(%)',
volume,
hold
FROM daily_change
WHERE prev_close IS NOT NULL
ORDER BY date DESC
LIMIT $N;
EOF
查询单个品种具体日期数据
sqlite3 ~/.claude/skills/futures-trader/futures.db <<EOF
SELECT
date,
open,
high,
low,
close,
settle,
volume,
hold
FROM futures_ohlc
WHERE symbol = '$SYMBOL' AND date = '$DATE';
EOF
查询所有品种最新数据
sqlite3 ~/.claude/skills/futures-trader/futures.db <<EOF
WITH latest_data AS (
SELECT
symbol,
date,
close,
volume,
hold,
LAG(close) OVER (PARTITION BY symbol ORDER BY date) as prev_close
FROM futures_ohlc
WHERE date >= (SELECT MAX(date) FROM futures_ohlc) OR date >= DATE((SELECT MAX(date) FROM futures_ohlc), '-7 days')
)
SELECT
ld.symbol,
ft.name,
ld.date,
ld.close,
ROUND((ld.close - ld.prev_close) / ld.prev_close * 100, 2) as '涨跌幅(%)',
ld.volume,
ld.hold
FROM latest_data ld
JOIN futures_tickers ft ON ld.symbol = ft.symbol
WHERE ld.prev_close IS NOT NULL
ORDER BY ld.date DESC, ld.volume DESC;
EOF
按板块统计成交量排名
sqlite3 ~/.claude/skills/futures-trader/futures.db <<EOF
SELECT
ft.symbol,
ft.name,
ft.sector,
fo.date,
fo.close,
fo.volume,
fo.hold,
ROUND((fo.close - LAG(fo.close) OVER (PARTITION BY fo.symbol ORDER BY fo.date)) / LAG(fo.close) OVER (PARTITION BY fo.symbol ORDER BY fo.date) * 100, 2) as '涨跌幅(%)'
FROM futures_ohlc fo
JOIN futures_tickers ft ON fo.symbol = ft.symbol
WHERE ft.sector = '$SECTOR'
AND fo.date >= (SELECT MAX(date) FROM futures_ohlc)
AND fo.date >= DATE((SELECT MAX(date) FROM futures_ohlc), '-1 day')
ORDER BY fo.volume DESC
LIMIT 20;
EOF
持仓量变化分析
sqlite3 ~/.claude/skills/futures-trader/futures.db <<EOF
WITH position_change AS (
SELECT
fo.symbol,
fo.date,
fo.close,
fo.volume,
fo.hold,
LAG(fo.hold) OVER (PARTITION BY fo.symbol ORDER BY fo.date) as prev_hold,
ROUND((fo.hold - LAG(fo.hold) OVER (PARTITION BY fo.symbol ORDER BY fo.date)) * 1.0 / LAG(fo.hold) OVER (PARTITION BY fo.symbol ORDER BY fo.date) * 100, 2) as '持仓变化(%)'
FROM futures_ohlc fo
WHERE fo.date >= DATE((SELECT MAX(date) FROM futures_ohlc), '-2 days')
)
SELECT
pc.symbol,
ft.name,
pc.date,
pc.close,
pc.volume,
pc.hold,
pc.prev_hold,
pc.'持仓变化(%)'
FROM position_change pc
JOIN futures_tickers ft ON pc.symbol = ft.symbol
WHERE pc.prev_hold IS NOT NULL
ORDER BY ABS(pc.'持仓变化(%)') DESC;
EOF
查询品种基本信息
sqlite3 ~/.claude/skills/futures-trader/futures.db <<EOF
SELECT
symbol,
name,
exchange,
sector
FROM futures_tickers
WHERE symbol LIKE '%$KEYWORD%' OR name LIKE '%$KEYWORD%'
ORDER BY sector, symbol;
EOF
查询数据库日期范围
sqlite3 ~/.claude/skills/futures-trader/futures.db <<EOF
SELECT
'OHLC数据范围' as '数据类型',
MIN(date) as '最早日期',
MAX(date) as '最新日期',
COUNT(*) as '总记录数'
FROM futures_ohlc
UNION ALL
SELECT
'新闻数据范围',
DATE(MIN(published_utc)),
DATE(MAX(published_utc)),
COUNT(*)
FROM futures_news_raw;
EOF
## 📊 [SYMBOL] - [NAME] 价格分析
### 价格表现
- 日期: [DATE]
- 前收盘: [PREV_CLOSE]
- 开盘: [OPEN]
- 最高: [HIGH]
- 最低: [LOW]
- 收盘: [CLOSE]
- 结算价: [SETTLE]
- **真实涨跌幅**: [CHANGE]%
- 成交量: [VOLUME]
- 持仓量: [HOLD]
### 📰 相关新闻 ([N] 条)
**[Publisher] [Date]**
- [Title]
[Content摘要]
### 💡 分析要点
[基于价格和持仓量变化的分析]
## 📊 [SECTOR] 板块分析
### 成交量排名 ([DATE])
| 排名 | 代码 | 名称 | 收盘价 | 涨跌幅 | 成交量 | 持仓量 |
|------|------|------|--------|--------|--------|--------|
| 1 | ... | ... | ... | ... | ... | ... |
### 活跃品种推荐
[基于成交量和持仓量变化推荐关注品种]
---
数据来源: 期货数据库 (AKShare + 上海金属网)
注:涨跌幅计算包含跳空 (当天收盘 vs 前一天收盘)
date -v-1d +%Y-%m-%d (macOS) 或 date -d "yesterday" +%Y-%m-%d (Linux)验证期货代码:
sqlite3 ~/.claude/skills/futures-trader/futures.db <<EOF
SELECT symbol, name, exchange, sector
FROM futures_tickers
WHERE symbol LIKE '%$SYMBOL%' OR name LIKE '%$KEYWORD%'
ORDER BY sector, symbol;
EOF
按板块查询所有品种:
sqlite3 ~/.claude/skills/futures-trader/futures.db <<EOF
SELECT symbol, name, exchange
FROM futures_tickers
WHERE sector = '$SECTOR'
ORDER BY symbol;
EOF
用户说:
# 检查数据库最新 OHLC 日期
sqlite3 ~/.claude/skills/futures-trader/futures.db "SELECT MAX(date) as latest_ohlc FROM futures_ohlc;"
# 检查数据库最新新闻日期
sqlite3 ~/.claude/skills/futures-trader/futures.db "SELECT MAX(published_utc) as latest_news FROM futures_news_raw;"
# 获取今天日期
date +%Y-%m-%d
⚠️ ⚠️⚠️ 强制规则:数据完整性 ⚠️⚠️⚠️
添加或更新期货品种时,必须同时获取两种数据:
futures_zh_daily_sina(symbol=code)futures_news_shmet(symbol=category)绝对禁止:
原因:价格数据和新闻数据是分析涨跌原因的双支柱,缺一不可。
执行方法:
⚠️ ⚠️⚠️ 重要:使用正确的 Python 环境 ⚠️⚠️⚠️
必须使用 /usr/local/bin/python3.14 - 这是唯一已安装 akshare 依赖的环境。
cd ~/.claude/skills/futures-trader
/usr/local/bin/python3.14 -c "
from backend.updater import FuturesUpdater
updater = FuturesUpdater()
updater.run_daily_update()
updater.close()
"
或者更新特定品种:
cd ~/.claude/skills/futures-trader
/usr/local/bin/python3.14 -c "
from backend.updater import FuturesUpdater
updater = FuturesUpdater()
updater.update_all_ohlc(symbols=['RB0', 'CU0', 'JM0'])
updater.close()
"
添加新品种时的完整流程:
# 1. 添加品种信息到 constants.py
# 2. 获取OHLCV数据
df_ohlc = fetch_ohlc(symbol='PS0')
# 3. 获取新闻数据(根据品种选择对应category)
df_news = fetch_news(category='小金属')
# 4. 保存两种数据到数据库
save_ohlc(symbol='PS0', df=df_ohlc)
save_news(df=df_news, symbols=['PS0'])
# 确认数据库最新日期
sqlite3 ~/.claude/skills/futures-trader/futures.db "SELECT MAX(date) as latest_ohlc FROM futures_ohlc;"
用户:"查询RB0最近一周的表现"
执行步骤:
用户:"为什么焦煤最近跌了?"
执行步骤:
用户:"哪些黑色系品种成交量最大?"
执行步骤:
用户:"推荐几个活跃的有色金属品种"
执行步骤:
~/.claude/skills/futures-trader/futures.db~/.claude/skills/futures-trader/backend/本技能提供的数据和分析仅供参考,不构成任何投资建议。期货交易有风险,投资需谨慎。