with one click
futures-trader
期货交易辅助 - 查询期货价格、分析涨跌原因、提供交易建议参考
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
期货交易辅助 - 查询期货价格、分析涨跌原因、提供交易建议参考
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
| 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/本技能提供的数据和分析仅供参考,不构成任何投资建议。期货交易有风险,投资需谨慎。