6DuckLearn provenance: Community skill by 陆青禾, mirrored from the OKX Skills Marketplace (https://www.okx.com/en-sg/agent-tradekit/skills/okx-btc-contract). It is not curated, verified, or endorsed by 6DuckLearn or represented as an official OKX publication.
Financial safety boundary: Never request secrets in chat. Before any external API call or action that places, cancels, or amends an order; changes leverage; transfers funds; creates or stops a bot; subscribes to or redeems an earn product; or signs/broadcasts a transaction, show the exact live/demo profile, instrument, side, size, price constraints, fees, and worst-case loss, then obtain explicit user approval. Default to read-only or demo mode when uncertain. Treat all analysis as research, not investment advice.
OKX BTC合约交易系统 v2.2(整合 Position Sizer)
基于 EMA200 多时框趋势分析、市场情绪分析和 ATR 动态止损的 BTC 永续合约交易系统,采用量化评分引擎,通过 13 个指标加权计算交易信号(技术指标 75% + 市场情绪 25%),支持多空双向交易、信号冲突检测、智能仓位计算、清算价格验证、资金成本估算、自动止盈止损、全面风险控制。系统整合了多时框一致性检测、成交量确认、RSI背离、OI变化、多空比、资金费率、清算数据、大户持仓等高级技术,内置 Position Sizer 仓位管理引擎(固定比例法、凯利公式、ATR动态止损、多杠杆对比、清算计算),显著提升交易准确率和风险控制能力。
依赖 Skills(必须先安装)
okx-cex-market— 获取实时价格、K线数据和技术指标(EMA、ATR、RSI、MACD、MA、布林带、成交量)okx-cex-trade— 执行开仓、平仓、止盈止损订单okx-cex-portfolio— 查询账户持仓、余额和风险指标
参数说明
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| direction | string | ✅ | - | 交易方向:long(做多)/ short(做空) |
| leverage | integer | ❌ | 10 | 杠杆倍数(建议 3-20x) |
| entry_price | number | ❌ | - | 入场价格,不填则使用市价 |
| atr_multiplier_sl | number | ❌ | 1.5 | ATR止损倍数(建议 1.5-2) |
| atr_multiplier_tp | number | ❌ | 3 | ATR止盈倍数(建议 2.5-3.5) |
| risk_percent | number | ❌ | 1.5 | 单笔风险占比(%,建议 1-2,固定比例法) |
| max_drawdown | number | ❌ | 10 | 最大回撤控制(%,建议 8-15) |
| max_position_pct | number | ❌ | 10 | 最大单仓占比(%,建议 5-10) |
| max_portfolio_heat | number | ❌ | 8 | 最大总敞口(%,建议 6-8) |
| mmr | number | ❌ | 0.004 | 维持保证金率(默认0.4%,大仓位需调整) |
| fee_rate | number | ❌ | 0.0005 | 手续费率(默认0.05%,VIP0) |
| profile | string | ❌ | demo | 实盘 live / 模拟盘 demo(强烈建议先用 demo 测试) |
| min_atr | number | ❌ | 200 | ATR最小值,低于此值不交易 |
| max_positions | integer | ❌ | 2 | 最大同时持仓数 |
| ma_short | integer | ❌ | 20 | 短期均线周期(用于趋势判断) |
| ma_long | integer | ❌ | 50 | 长期均线周期(用于趋势判断) |
| ema_period | integer | ❌ | 200 | EMA周期(多时框趋势分析核心) |
| ema_distance_max | number | ❌ | 3 | EMA最大距离百分比(%,超过此值扣分) |
| vol_ma_period | integer | ❌ | 20 | 成交量均线周期 |
| vol_threshold | number | ❌ | 1.5 | 放量阈值(倍数,低于此值需S/R支撑) |
| min_confidence | number | ❌ | 65 | 最低信心度(%,低于此值不开仓) |
| conflict_threshold | number | ❌ | 15 | 冲突阈值(分,多空差距低于此值标记冲突) |
| kline_limit | integer | ❌ | 500 | K线根数(用于技术指标计算,建议500根以获得最稳定的EMA200) |
量化评分系统
为什么使用500根K线?
系统使用500根K线进行技术指标计算,原因如下:
| 技术指标 | 最小需求 | 500根的优势 | 时间跨度(以1H为例) |
|---|---|---|---|
| EMA200 | 200根 | 更稳定,减少波动噪音 | 200小时 = 8.3天 |
| RSI背离 | 24根 | 可检测多个背离周期 | 24小时 = 1天 |
| S/R识别 | 80根 | 识别更多关键支撑阻力位 | 80小时 = 3.3天 |
| 成交量MA(20) | 20根 | 更稳定的成交量均线 | 20小时 = 0.8天 |
| 布林带(20) | 20根 | 更准确的带宽和位置 | 20小时 = 0.8天 |
| MACD | 35根 | 足够计算 | 35小时 = 1.5天 |
| RSI(14) | 14根 | 足够计算 | 14小时 = 0.6天 |
500根K线的时间跨度:
- 1D时框:500天 ≈ 1.4年(长期趋势分析)
- 4H时框:500小时 ≈ 21天(中期趋势分析)
- 1H时框:500小时 ≈ 21天(短期趋势分析)
- 15M时框:500根 ≈ 5.2天(超短期分析)
最佳实践:
- ✅ 使用500根K线可以获得最稳定的EMA200计算
- ✅ 对于长期分析(1D、4H),500根非常合适
- ✅ 对于短期分析(1H、15M),500根可以提供更全面的历史数据
- ❌ 如果只需要快速响应,可以使用300根,但准确性会降低
评分因子与权重
系统采用 技术指标(75%)+ 市场情绪(25%) 双重分析框架,综合 13 个指标加权计算交易信号:
技术面指标(75%权重)- 基于价格和成交量数据
| 因子 | 权重 | 评分范围 | 说明 |
|---|---|---|---|
| EMA趋势 | 22% | -100 ~ +100 | 价格与EMA200的关系,技术面权重最高,作为主要趋势判断依据 |
| MACD | 13% | -100 ~ +100 | MACD金叉/死叉及柱状图变化 |
| RSI | 11% | -100 ~ +100 | RSI超买超卖状态 |
| RSI背离 | 9% | -100 ~ +100 | 顶底背离检测,最强的反转信号 |
| 成交量 | 8% | -100 ~ +100 | 成交量确认价格走势 |
| 布林带 | 6% | -100 ~ +100 | 布林带位置,识别极端价格 |
| S/R位置 | 4% | -100 ~ +100 | 支撑阻力位接近度 |
| K线形态 | 2% | -100 ~ +100 | 经典蜡烛图形态 |
市场情绪面指标(25%权重)- 基于衍生品市场数据
| 因子 | 权重 | 评分范围 | 数据来源 | 说明 |
|---|---|---|---|---|
| OI变化趋势 | 9% | -100 ~ +100 | OKX TradeKit | 未平仓合约变化,反映市场参与度 |
| 多空比L/S | 6% | -100 ~ +100 | CoinGlass | 多头vs空头持仓比例,反映市场情绪 |
| 资金费率 | 5% | -100 ~ +100 | OKX TradeKit | 永续合约资金费率,反映多空失衡 |
| 清算数据 | 3% | -100 ~ +100 | CoinGlass | 24h多空清算量,反映爆仓压力 |
| 大户持仓变化 | 2% | -100 ~ +100 | CoinGlass | 大户净持仓变化,反映聪明钱动向 |
数据来源说明:
- 技术面:OKX TradeKit MCP / CLI(100%可用)
- 市场情绪面:
- OI变化趋势:OKX TradeKit
market_get_open_interest(100%可用) - 资金费率:OKX TradeKit
market_get_funding_rate(100%可用) - 多空比L/S:CoinGlass(不可用时记0分)
- 清算数据:CoinGlass(不可用时记0分)
- 大户持仓变化:CoinGlass(不可用时记0分)
- OI变化趋势:OKX TradeKit
信心度计算公式(v2.1 更新)
Step 1:计算技术面因子得分(8个指标,75%权重)
- EMA趋势得分(22%权重)
- MACD得分(13%权重)
- RSI得分(11%权重)
- RSI背离得分(9%权重)
- 成交量得分(8%权重)
- 布林带得分(6%权重)
- S/R位置得分(4%权重)
- K线形态得分(2%权重)
Step 2:计算技术面加权得分
tech_score = Σ(技术面因子得分 × 因子权重)
Step 3:计算市场情绪面得分(5个指标,25%权重)
- OI变化趋势得分(9%权重)
- 多空比L/S得分(6%权重)
- 资金费率得分(5%权重)
- 清算数据得分(3%权重)
- 大户持仓变化得分(2%权重)
Step 4:计算市场情绪面加权得分
sentiment_score = Σ(情绪面因子得分 × 因子权重)
Step 5:综合加权得分
weighted_score = (tech_score × 0.75) + (sentiment_score × 0.25)
Step 6:时框一致性惩罚
tf_multiplier = 基于多时框一致性计算(详见"多时框趋势分析")
- 4/4 时框一致 → 1.0
- 3/4 时框一致 → 0.82
- 2/4 时框一致 → 0.60
- 1/4 时框一致 → 0.35
Step 7:EMA距离惩罚
if (价格距EMA200距离 > ema_distance_max%):
ema_penalty = 0.80
else:
ema_penalty = 1.0
Step 8:技术面与情绪面冲突检测
if (技术面方向 != 情绪面方向):
conflict_penalty = 0.70 # 技术面和情绪面方向相反,降低信心度
else:
conflict_penalty = 1.0
Step 9:最终信心度
confidence = |weighted_score × tf_multiplier × ema_penalty × conflict_penalty| / 100 × 100
最终信心度范围:0% ~ 100%
- 0%:无明确信号
- 100%:最强信号
信号判断标准
做多信号(BUY):
✅ confidence ≥ min_confidence(默认65%)
✅ weighted_score > 0
✅ 非CONFLICT状态
✅ 成交量确认通过
✅ ATR ≥ min_atr
做空信号(SELL):
✅ confidence ≥ min_confidence(默认65%)
✅ weighted_score < 0
✅ 非CONFLICT状态
✅ 成交量确认通过
✅ ATR ≥ min_atr
观望信号(WAIT):
❌ confidence < min_confidence
或
❌ CONFLICT状态
或
❌ 成交量未确认且无S/R支撑
冲突信号(CONFLICT):
⚠️ |做多得分 - 做空得分| < conflict_threshold(默认15分)
多时框趋势分析
时框设置
系统使用 4 个时间框架综合判断趋势:
| 时框 | 用途 | 权重 |
|---|---|---|
| 1D | 长期趋势方向 | 40% |
| 4H | 中期趋势确认 | 30% |
| 1H | 短期趋势识别 | 20% |
| 15M | 入场时机选择 | 10% |
EMA200 趋势判断
对于每个时框,计算 EMA200 并判断趋势方向:
Step 1:计算 EMA200
EMA200 = 200周期指数移动平均线
Step 2:判断趋势方向
if (当前价格 > EMA200):
趋势方向 = UP(向上)
else if (当前价格 < EMA200):
趋势方向 = DOWN(向下)
else:
趋势方向 = NEUTRAL(中性)
Step 3:计算EMA距离
ema_distance = |当前价格 - EMA200| / EMA200 × 100%
时框一致性计算
Step 1:统计各时框方向
up_count = 趋势方向为 UP 的时框数量
down_count = 趋势方向为 DOWN 的时框数量
Step 2:确定主导方向
if (up_count > down_count):
主导方向 = 向上
else if (down_count > up_count):
主导方向 = 向下
else:
主导方向 = 中性
Step 3:计算一致性得分
max_count = max(up_count, down_count)
tf_multiplier = 根据最大一致数量确定:
- 4/4 时框一致 → 1.0
- 3/4 时框一致 → 0.82
- 2/4 时框一致 → 0.60
- 1/4 时框一致 → 0.35
时框一致性惩罚的重要性
时框一致性是提升准确率的关键机制:
- 4/4 一致:所有时间框架趋势一致,信号最可靠,乘数 1.0
- 3/4 一致:大部分时框一致,信号可靠,乘数 0.82
- 2/4 一致:时框分歧较大,信号可靠性下降,乘数 0.60
- 1/4 一致:时框严重分歧,信号不可靠,乘数 0.35
示例:
做多场景:
- 1D: UP, 4H: UP, 1H: UP, 15M: UP → 4/4 一致 → 乘数 1.0
- 1D: UP, 4H: UP, 1H: UP, 15M: DOWN → 3/4 一致 → 乘数 0.82
- 1D: UP, 4H: DOWN, 1H: UP, 15M: UP → 2/4 一致 → 乘数 0.60
- 1D: UP, 4H: DOWN, 1H: DOWN, 15M: DOWN → 1/4 一致 → 乘数 0.35
技术指标计算方法
1. EMA 趋势计算(新增)
EMA200 计算:
EMA200_n = EMA200_(n-1) × (1 - k) + 收盘价_n × k
其中 k = 2 / (200 + 1) ≈ 0.00995
趋势判断:
if (当前价格 > EMA200):
EMA趋势得分 = +100(向上趋势)
else if (当前价格 < EMA200):
EMA趋势得分 = -100(向下趋势)
else:
EMA趋势得分 = 0(中性)
考虑EMA距离惩罚:
if (|当前价格 - EMA200| / EMA200 > ema_distance_max%):
EMA趋势得分 ×= 0.80(扣分)
2. 趋势判断(1H周期)
均线系统判断:
向上趋势:MA(20) > MA(50) 且两者都向上倾斜
向下趋势:MA(20) < MA(50) 且两者都向下倾斜
震荡趋势:MA(20) 和 MA(50) 交织,无明显方向
MACD 判断:
MACD 参数:快线 12,慢线 26,信号线 9
金叉(做多信号):
- DIF 上穿 DEA(当前 DIF > 前期 DIF,且当前 DEA > 前期 DEA)
- 且 DIF 从负值转为正值(强势金叉)或 DIF > 0(普通金叉)
死叉(做空信号):
- DIF 下穿 DEA(当前 DIF < 前期 DIF,且当前 DEA < 前期 DEA)
- 且 DIF 从正值转为负值(强势死叉)或 DIF < 0(普通死叉)
综合趋势判断:
做多信号:MA(20) > MA(50) + MACD金叉 + RSI > 40
做空信号:MA(20) < MA(50) + MACD死叉 + RSI < 60
3. 市场结构识别(15M周期)
突破结构:
向上突破:价格突破近期高点(过去20根K线的最高价)
向下突破:价格跌破近期低点(过去20根K线的最低价)
回踩结构:
回踩做多:价格上涨后回调,但未跌破前一低点,在支撑位企稳
回踩做空:价格下跌后反弹,但未突破前一高点,在阻力位受阻
震荡结构:
震荡区间:价格在 ±1.5×ATR 范围内波动,无明显突破
震荡特征:RSI 在 40-60 之间,成交量萎缩
4. RSI 指标标准
RSI(14) 参数:
- > 70:超买区域,警惕回调
- 70 - 60:强势区域,适合持有
- 60 - 40:中性区域,观察
- 40 - 30:弱势区域,警惕下跌
- < 30:超卖区域,可能反弹
RSI 得分计算:
if (RSI <= 30):
RSI得分 = 60 + (30 - RSI) / 30 × 40(超卖越深,做多信号越强)
else if (RSI >= 70):
RSI得分 = -(60 + (RSI - 70) / 30 × 40)(超买越深,做空信号越强)
else if (RSI > 50):
RSI得分 = (RSI - 50) / 20 × 30(偏多头)
else:
RSI得分 = -(50 - RSI) / 20 × 30(偏空头)
5. RSI 背离检测(新增)
底背离(做多信号):
检测逻辑:
1. 在过去 24 根K线中识别至少 2 个低点
2. 低点判断:当前低点 < 前2根和后2根K线的低点
3. 如果价格创出新低,但RSI没有创新低 → 底背离
4. 底背离强度 = (RSI新低 - RSI前一低点) / 15(最大强度1.0)
底背离得分:
if (检测到底背离):
RSI背离得分 = 60 + 背离强度 × 40(60 ~ 100分,强烈做多信号)
顶背离(做空信号):
检测逻辑:
1. 在过去 24 根K线中识别至少 2 个高点
2. 高点判断:当前高点 > 前2根和后2根K线的高点
3. 如果价格创出新高,但RSI没有创新高 → 顶背离
4. 顶背离强度 = (RSI前一高点 - RSI新高) / 15(最大强度1.0)
顶背离得分:
if (检测到顶背离):
RSI背离得分 = -(60 + 背离强度 × 40)(-60 ~ -100分,强烈做空信号)
背离的重要性:
- RSI背离是最强的反转信号,权重12%,仅次于EMA趋势
- 背离 + EMA触碰 = 最强信号组合
- 背离信号通常领先于价格反转
6. 布林带位置判断(新增)
布林带计算:
布林带中轨 = N周期简单移动平均线(默认N=20)
上轨 = 中轨 + 2 × 标准差
下轨 = 中轨 - 2 × 标准差
布林带宽 = (上轨 - 下轨) / 中轨 × 100%
价格位置 = (当前价格 - 下轨) / (上轨 - 下轨) × 100%
布林带得分计算:
if (价格位置 <= 5%):
布林带得分 = 80 × 带宽归一化(极端低位,强烈做多)
else if (价格位置 <= 20%):
布林带得分 = 45 × 带宽归一化(接近下轨,偏多)
else if (价格位置 >= 95%):
布林带得分 = -80 × 带宽归一化(极端高位,强烈做空)
else if (价格位置 >= 80%):
布林带得分 = -45 × 带宽归一化(接近上轨,偏空)
else:
布林带得分 = 0(中轨附近,中性)
带宽归一化 = min(1, 布林带宽 / 3%)
带宽越宽,信号越可靠
7. 支撑阻力识别(新增)
支撑阻力位计算:
在过去 80 根K线中识别高低点:
高点识别:
当前高点 > 前2根和后2根K线的高点
低点识别:
当前低点 < 前2根和后2根K线的低点
聚类处理:
将相近的高低点合并(差距 < 0.4%)
支撑位:低于当前价格的聚类低点(取最近3个)
阻力位:高于当前价格的聚类高点(取最近3个)
接近度判断:
if (|阻力位 - 当前价格| / 当前价格 < 1.5%):
接近阻力位 → S/R得分 = -60(偏空)
if (|支撑位 - 当前价格| / 当前价格 < 1.5%):
接近支撑位 → S/R得分 = +60(偏多)
else:
S/R得分 = 0(无明确S/R)
8. K线形态识别(新增)
经典形态识别:
锤子线(做多):
特征:实体很小,下影线是实体的2.2倍以上,无上影线或上影线很小
得分:+80(强烈做多信号)
流星线(做空):
特征:实体很小,上影线是实体的2.2倍以上,无下影线或下影线很小
得分:-80(强烈做空信号)
看涨吞没(做多):
特征:当前K线为阳线,前一根K线为阴线,当前阳线完全吞没前一根阴线
得分:+90(强烈做多信号)
看跌吞没(做空):
特征:当前K线为阴线,前一根K线为阳线,当前阴线完全吞没前一根阳线
得分:-90(强烈做空信号)
晨星(做多):
特征:前一根大阴线,中间小实体(K线),当前大阳线,收盘价超过前一根阴线实体中点
得分:+85(强烈做多信号)
暮星(做空):
特征:前一根大阳线,中间小实体(K线),当前大阴线,收盘价跌破前一根阳线实体中点
得分:-85(强烈做空信号)
触碰EMA(中性):
特征:价格在EMA200的 ±0.35% 范围内
得分:0(中性,等待方向确认)
K线形态得分:
if (识别到形态):
K线形态得分 = 形态得分 × 形态强度
else:
K线形态得分 = 0
9. ATR 指标使用
ATR(14) 参数:
- ATR < min_atr:波动过低,不交易(建议 min_atr = 200)
- ATR 在正常范围:正常交易
- ATR > 2×min_atr:波动过高,降低杠杆
市场情绪分析(v2.1 新增)
10. OI 变化趋势分析(9%权重)
OI(Open Interest):未平仓合约数量,反映市场参与度和资金流入流出。
数据获取:
okx market open-interest --instType SWAP --instId BTC-USDT-SWAP
OI变化得分计算:
| 条件 | 分值 | 说明 |
|---|---|---|
| OI 上升 + 价格上涨 | +100 | 趋势强化,多头主动增仓 |
| OI 上升 + 价格下跌 | -100 | 空头主导,价格下跌伴随增仓 |
| OI 下降 + 价格上涨 | +40 | 轧空/回补,空头止损导致价格反弹 |
| OI 下降 + 价格下跌 | -40 | 多头止损,价格下跌伴随减仓 |
| OI 横盘(变化 < 2%) | 0 | 中性,无明显方向 |
计算逻辑:
Step 1:获取当前OI和24小时前OI
current_oi = 当前未平仓合约数量
previous_oi = 24小时前未平仓合约数量
Step 2:计算OI变化百分比
oi_change_pct = (current_oi - previous_oi) / previous_oi × 100%
Step 3:获取价格变化
price_change = 当前价格 - 24小时前价格
price_change_pct = price_change / 24小时前价格 × 100%
Step 4:根据OI和价格变化判断得分
if (|oi_change_pct| < 2%):
OI得分 = 0(横盘)
else if (oi_change_pct > 0 and price_change_pct > 0):
OI得分 = +100(趋势强化)
else if (oi_change_pct > 0 and price_change_pct < 0):
OI得分 = -100(空头主导)
else if (oi_change_pct < 0 and price_change_pct > 0):
OI得分 = +40(轧空回补)
else if (oi_change_pct < 0 and price_change_pct < 0):
OI得分 = -40(多头止损)
11. 多空比 L/S Ratio 分析(6%权重)
L/S Ratio:多头持仓量 / 空头持仓量,反映市场情绪偏向。
数据来源:CoinGlass API(如果不可用,记0分)
多空比得分计算:
| L/S Ratio | 分值 | 说明 |
|---|---|---|
| > 1.5 | -100 | 多头极度拥挤,反转风险高 |
| 1.2 - 1.5 | -80 | 多头偏多,轻微看空 |
| 0.9 - 1.2 | 0 | 均衡,中性 |
| 0.7 - 0.9 | +80 | 空头偏多,轻微看多 |
| < 0.7 | +100 | 空头极度拥挤,轧空机会大 |
计算逻辑:
Step 1:获取多空比
ls_ratio = 多头持仓量 / 空头持仓量
Step 2:根据多空比判断得分
if (ls_ratio > 1.5):
L/S得分 = -100
else if (ls_ratio > 1.2):
L/S得分 = -80
else if (ls_ratio >= 0.9):
L/S得分 = 0
else if (ls_ratio >= 0.7):
L/S得分 = +80
else:
L/S得分 = +100
特殊情况:
- 如果CoinGlass不可用:L/S得分 = 0,并在报告中标注
⚠️ 数据不可用
12. 资金费率分析(5%权重)
资金费率:永续合约的资金费率,反映多空失衡程度。
数据获取:
okx market funding-rate BTC-USDT-SWAP
资金费率得分计算:
| 资金费率 | 分值 | 说明 |
|---|---|---|
| > +0.1% | -100 | 做多成本极高,市场过热 |
| +0.05% ~ +0.1% | -80 | 偏多拥挤 |
| -0.01% ~ +0.05% | 0 | 正常区间 |
| -0.05% ~ -0.01% | +80 | 做空成本低,轻微看多 |
| < -0.05% | +100 | 做空过热,强烈看多信号 |
计算逻辑:
Step 1:获取当前资金费率
funding_rate = 当前资金费率(百分比)
Step 2:根据资金费率判断得分
if (funding_rate > 0.1):
资金费率得分 = -100
else if (funding_rate > 0.05):
资金费率得分 = -80
else if (funding_rate >= -0.01):
资金费率得分 = 0
else if (funding_rate >= -0.05):
资金费率得分 = +80
else:
资金费率得分 = +100
资金费率解读:
- 正费率:多头过多,需向空头支付资金费,市场可能过热
- 负费率:空头过多,需向多头支付资金费,市场可能过度看空
13. 清算数据分析(3%权重)
清算数据:24小时多空清算量对比,反映爆仓压力和轧空机会。
数据来源:CoinGlass API(如果不可用,记0分)
清算数据得分计算:
| 24h清算情况 | 分值 | 说明 |
|---|---|---|
| 多头清算 >> 空头清算 | -100 | 多头遭受重创,看空 |
| 多头清算 > 空头清算 | -80 | 多头承压 |
| 多空清算均衡 | 0 | 均衡 |
| 空头清算 > 多头清算 | +80 | 空头承压 |
| 空头清算 >> 多头清算 | +100 | 轧空压力大,看多 |
计算逻辑:
Step 1:获取24h多空清算量
long_liquidation = 24h多头清算量
short_liquidation = 24h空头清算量
Step 2:计算清算比率
liquidation_ratio = long_liquidation / short_liquidation
Step 3:根据清算比率判断得分
if (liquidation_ratio > 2.0):
清算得分 = -100(多头重创)
else if (liquidation_ratio > 1.2):
清算得分 = -80(多头承压)
else if (liquidation_ratio >= 0.83):
清算得分 = 0(均衡)
else if (liquidation_ratio >= 0.5):
清算得分 = +80(空头承压)
else:
清算得分 = +100(轧空压力大)
特殊情况:
- 如果CoinGlass不可用:清算得分 = 0,并在报告中标注
⚠️ 数据不可用
14. 大户持仓变化分析(2%权重)
大户持仓:大户净持仓变化,反映聪明钱动向。
数据来源:CoinGlass API(如果不可用,记0分)
大户持仓变化得分计算:
| 大户净持仓变化 | 分值 | 说明 |
|---|---|---|
| 净多头持仓增加 > 5% | +100 | 大户明显做多 |
| 净多头持仓增加 1-5% | +80 | 大户偏多 |
| 无明显变化 | 0 | 中性 |
| 净空头持仓增加 1-5% | -80 | 大户偏空 |
| 净空头持仓增加 > 5% | -100 | 大户明显做空 |
计算逻辑:
Step 1:获取大户净持仓变化
net_position_change = 大户净持仓变化百分比
Step 2:根据持仓变化判断得分
if (net_position_change > 5):
大户持仓得分 = +100
else if (net_position_change > 1):
大户持仓得分 = +80
else if (net_position_change >= -1):
大户持仓得分 = 0
else if (net_position_change >= -5):
大户持仓得分 = -80
else:
大户持仓得分 = -100
特殊情况:
- 如果CoinGlass不可用:大户持仓得分 = 0,并在报告中标注
⚠️ 数据不可用
市场情绪面综合评分
Step 1:计算各情绪指标得分
- OI变化趋势得分(9%权重)
- 多空比L/S得分(6%权重)
- 资金费率得分(5%权重)
- 清算数据得分(3%权重)
- 大户持仓变化得分(2%权重)
Step 2:加权求和
sentiment_score = (OI得分 × 0.09) + (L/S得分 × 0.06) + (资金费率得分 × 0.05) + (清算得分 × 0.03) + (大户持仓得分 × 0.02)
Step 3:确定情绪方向
if (sentiment_score > 0):
情绪方向 = 看多
else if (sentiment_score < 0):
情绪方向 = 看空
else:
情绪方向 = 中性
Step 4:计算情绪强度
sentiment_strength = |sentiment_score| / 100
范围:0% ~ 100%
技术面与情绪面冲突检测
冲突判断:
Step 1:分离技术面得分
tech_bull_score = 技术面做多得分
tech_bear_score = 技术面做空得分
Step 2:确定技术面方向
if (tech_bull_score > tech_bear_score):
技术面方向 = 看多
else:
技术面方向 = 看空
Step 3:判断冲突
if (技术面方向 != 情绪方向):
冲突状态 = TRUE
情绪冲突惩罚 = 0.70(降低信心度)
else:
冲突状态 = FALSE
情绪冲突惩罚 = 1.0
冲突处理:
- 如果技术面和情绪面方向相反,降低最终信心度乘数至 0.70
- 在报告中明确标注冲突警告
- 提供两套方案:尊重技术面 vs 跟随情绪面
成交量确认
量比计算
Step 1:计算成交量均线
vol_ma = 过去 N 根K线的平均成交量(默认N=20)
Step 2:计算量比
volume_ratio = 当前成交量 / vol_ma
成交量信号判断
if (volume_ratio >= vol_threshold) and (当前K线为阳线):
成交量信号 = BULL_VOL(放量上涨)
成交量得分 = 40 + (volume_ratio - vol_threshold) × 30(40 ~ 100分)
else if (volume_ratio >= vol_threshold) and (当前K线为阴线):
成交量信号 = BEAR_VOL(放量下跌)
成交量得分 = -(40 + (volume_ratio - vol_threshold) × 30)(-40 ~ -100分)
else if (volume_ratio < 0.6):
成交量信号 = SHRINK(缩量)
if (EMA趋势 > 0):
成交量得分 = -20(上涨缩量,怀疑持续性)
else:
成交量得分 = +20(下跌缩量,可能反转)
else:
成交量信号 = NORM(正常)
成交量得分 = 0(中性)
成交量门槛规则
成交量确认条件(必须满足):
✅ volume_ratio >= 0.8(量比不小于0.8)
或
✅ 接近支撑阻力位(|S/R - 价格| / 价格 < 1.5%)
如果两个条件都不满足:
- 即使其他因子得分很高,也不能生成BUY或SELL信号
- 只能生成WAIT信号
原因:无成交量确认且无S/R支撑,价格走势可能不可持续
信号冲突检测
冲突判断标准
Step 1:计算做多得分
bull_score = Σ(正分因子 × 权重)
Step 2:计算做空得分
bear_score = Σ(|负分因子| × 权重)
Step 3:计算得分差距
score_gap = |bull_score - bear_score|
Step 4:判断冲突
if (score_gap < conflict_threshold) and (bull_score > 30) and (bear_score > 30):
信号状态 = CONFLICT(冲突)
else:
信号状态 = 非冲突
CONFLICT 信号的处理
CONFLICT 信号特点:
- 多空得分都很高(>30分)
- 但差距很小(<15分)
- 表明市场方向不明确,多空力量均衡
CONFLICT 信号处理:
❌ 禁止开仓(无论confidence多高)
⚠️ 显示冲突警告
📊 等待市场方向明确后再操作
示例:
做多得分:65分
做空得分:58分
得分差距:7分(<15)
→ 标记为CONFLICT,禁止开仓
仓位计算详解
合约面值说明
OKX BTC-USDT-SWAP 永续合约:
- 合约面值:100 USDT/张
- 最小交易单位:1张
- 保证金模式:全仓模式(cross)
标准化仓位计算步骤
Step 1:计算单笔风险金额
单笔风险金额 = 账户可用余额 × (risk_percent / 100)
Step 2:计算每张合约的风险
每张合约风险 = ATR × atr_multiplier_sl
Step 3:计算仓位数
仓位数 = 单笔风险金额 / 每张合约风险
Step 4:计算实际投入
实际投入(USDT)= 仓位数 × 合约面值 × 杠杆倍数
Step 5:验证仓位合理性
实际投入 / 账户余额 ≤ 20%(避免过度集中)
保证金占用 / 账户余额 ≤ 50%(避免爆仓风险)
计算示例
假设:
- 账户余额:10,000 USDT
- risk_percent:1.5%
- ATR:450
- atr_multiplier_sl:1.5
- 杠杆:10x
计算过程:
单笔风险金额 = 10,000 × 0.015 = 150 USDT
每张合约风险 = 450 × 1.5 = 675 USDT
仓位数 = 150 / 675 = 0.22 张 → 取整为 1 张
实际投入 = 1 × 100 × 10 = 1,000 USDT
保证金占用 = 1,000 / 10 = 100 USDT
注意事项:
- 仓位数必须为整数
- 最小仓位为 1 张
- 建议实际投入不超过账户余额的 20%
风控参数说明
1. ATR 动态止盈止损
固定止盈止损:
做多:
- 止损价 = 入场价 - (ATR × atr_multiplier_sl)
- 止盈价 = 入场价 + (ATR × atr_multiplier_tp)
做空:
- 止损价 = 入场价 + (ATR × atr_multiplier_sl)
- 止盈价 = 入场价 - (ATR × atr_multiplier_tp)
ATR 移动止损规则:
触发条件:盈利达到 1.5×ATR 时启动移动止损
做多移动止损:
- 新止损价 = 当前价格 - (ATR × atr_multiplier_sl)
- 新止损价必须 > 原止损价(只能向有利方向移动)
做空移动止损:
- 新止损价 = 当前价格 + (ATR × atr_multiplier_sl)
- 新止损价必须 < 原止损价(只能向有利方向移动)
2. 风险收益比(RR)
RR = ATR止盈距离 / ATR止损距离
= atr_multiplier_tp / atr_multiplier_sl
标准:
- RR ≥ 2.0:优秀,优先执行
- RR ≥ 1.5:合格,可以执行
- RR < 1.5:不合格,不建议执行
3. 风控过滤条件
执行交易前必须全部满足以下条件:
✅ 技术指标:
- 趋势方向明确(非震荡)
- MACD 金叉/死叉确认
- RSI 在合理区间
✅ 波动条件:
- ATR ≥ min_atr(波动充足)
- ATR ≤ 3×min_atr(波动不过高)
✅ 风险条件:
- RR ≥ 1.5
- 单笔风险 ≤ 2%
- 当前持仓数 < max_positions
✅ 账户条件:
- 余额充足
- 保证金占用 ≤ 50%
✅ 历史条件:
- 最近3笔未连续亏损
- 账户最大回撤 ≤ max_drawdown
✅ 信号质量(v2.0新增):
- 信心度 ≥ min_confidence(默认65%)
- 非CONFLICT状态
- 成交量确认通过
4. 连续亏损控制
连续亏损判断:
- 统计最近 10 笔交易
- 如果连续 3 笔亏损,暂停交易 24 小时
- 恢复交易后,先降低杠杆至 5x,风险降至 1%
5. 最大回撤控制
回撤计算:
- 记录账户历史最高净值
- 当前回撤 = (历史最高净值 - 当前净值) / 历史最高净值 × 100%
回撤控制:
- 回撤 ≥ 5%:降低杠杆至 5x
- 回撤 ≥ 10%:暂停交易,重新评估策略
- 回撤 ≥ max_drawdown:强制停止交易
执行流程
Phase 1:策略分析(v2.0 增强)
用户触发技能后,首先进行市场分析。
调用
okx-cex-market获取多时框数据:
# 获取4个时框的K线数据(用于多时框趋势分析)
# 使用500根K线以获得最稳定的EMA200计算
okx market candles BTC-USDT-SWAP --bar 1D --limit 500
okx market candles BTC-USDT-SWAP --bar 4H --limit 500
okx market candles BTC-USDT-SWAP --bar 1H --limit 500
okx market candles BTC-USDT-SWAP --bar 15M --limit 500
# 获取技术指标(1H时框)
okx market indicator atr BTC-USDT-SWAP --bar 1H --params 14
okx market indicator rsi BTC-USDT-SWAP --bar 1H --params 14
okx market indicator macd BTC-USDT-SWAP --bar 1H --params 12,26,9
okx market indicator ma BTC-USDT-SWAP --bar 1H --params 20
okx market indicator ma BTC-USDT-SWAP --bar 1H --params 50
okx market indicator bb BTC-USDT-SWAP --bar 1H --params 20,2
okx market indicator ema BTC-USDT-SWAP --bar 1H --params 200
# 获取当前价格和成交量
okx market ticker BTC-USDT-SWAP
# 获取市场情绪数据(v2.1新增)
okx market funding-rate BTC-USDT-SWAP
okx market open-interest --instType SWAP --instId BTC-USDT-SWAP
多时框趋势分析(v2.0 核心升级):
Step 1:计算各时框的 EMA200 和趋势方向
- 1D: 计算 EMA200,判断价格是否 > EMA200
- 4H: 计算 EMA200,判断价格是否 > EMA200
- 1H: 计算 EMA200,判断价格是否 > EMA200
- 15M: 计算 EMA200,判断价格是否 > EMA200
Step 2:统计各时框方向
- 统计 UP 的时框数量
- 统计 DOWN 的时框数量
Step 3:计算时框一致性
- 确定主导方向(向上或向下)
- 计算时框一致性乘数(1.0 / 0.82 / 0.60 / 0.35)
Step 4:计算 EMA 距离惩罚
- 计算价格距 EMA200 的百分比
- 如果超过 ema_distance_max%,应用 0.80 惩罚
量化评分计算(v2.1 核心升级:技术面75% + 情绪面25%):
Step 1:计算技术面因子得分(8个指标,75%权重)
EMA趋势(权重22%):
- 基于多时框EMA200判断
- 计算价格与EMA200的关系
- 应用距离惩罚
MACD(权重13%):
- 判断金叉/死叉
- 判断 DIF 是否 > 0
- 判断柱状图变化
RSI(权重11%):
- 判断超买超卖状态
- 计算RSI得分(0 ~ 100)
RSI背离(权重9%):
- 检测顶底背离
- 计算背离强度
- 背离得分 60 ~ 100
成交量(权重8%):
- 计算量比
- 判断放量/缩水
- 应用成交量门槛规则
布林带(权重6%):
- 计算布林带位置
- 判断极端价格
- 考虑布林带宽
S/R位置(权重4%):
- 识别支撑阻力位
- 判断接近度
- 计算接近度得分
K线形态(权重2%):
- 识别经典形态
- 计算形态得分
- 应用形态强度
Step 2:计算技术面加权得分
tech_score = Σ(技术面因子得分 × 因子权重)Step 3:计算市场情绪面得分(5个指标,25%权重)
OI变化趋势(权重9%):
- 获取当前OI和24小时前OI
- 计算OI变化百分比
- 根据OI和价格变化判断得分
多空比L/S(权重6%):
- 从CoinGlass获取多空比
- 根据多空比值判断得分
- 不可用时记0分
资金费率(权重5%):
- 获取当前资金费率
- 根据费率值判断得分
清算数据(权重3%):
- 从CoinGlass获取24h清算数据
- 计算多空清算比率
- 根据清算比率判断得分
- 不可用时记0分
大户持仓变化(权重2%):
- 从CoinGlass获取大户持仓变化
- 根据持仓变化判断得分
- 不可用时记0分
Step 4:计算市场情绪面加权得分
sentiment_score = Σ(情绪面因子得分 × 因子权重)Step 5:综合加权得分
weighted_score = (tech_score × 0.75) + (sentiment_score × 0.25)加权计算最终信心度(v2.1 核心升级):
Step 1:加权求和 weighted_score = (tech_score × 0.75) + (sentiment_score × 0.25) Step 2:应用时框一致性惩罚 weighted_score ×= tf_multiplier Step 3:应用EMA距离惩罚 if (价格距EMA200 > ema_distance_max%): weighted_score ×= 0.80 Step 4:技术面与情绪面冲突检测(v2.1新增) if (技术面方向 != 情绪面方向): conflict_penalty = 0.70 else: conflict_penalty = 1.0 Step 5:计算信心度 confidence = |weighted_score × conflict_penalty| / 100 × 100信号冲突检测(v2.1 增强:技术面冲突 + 情绪面冲突):
Step 1:分离技术面做多和做空得分 tech_bull_score = Σ(技术面正分因子 × 权重) tech_bear_score = Σ(技术面负分因子绝对值 × 权重) Step 2:计算技术面得分差距 tech_score_gap = |tech_bull_score - tech_bear_score| Step 3:判断技术面冲突 if (tech_score_gap < conflict_threshold) and (tech_bull_score > 30) and (tech_bear_score > 30): 技术面状态 = CONFLICT else: 技术面状态 = 非冲突 Step 4:判断技术面与情绪面冲突(v2.1新增) if (技术面方向 != 情绪面方向): 情绪冲突状态 = CONFLICT else: 情绪冲突状态 = 非冲突 Step 5:综合冲突判断 if (技术面状态 == CONFLICT or 情绪冲突状态 == CONFLICT): 信号状态 = CONFLICT else: 信号状态 = 非冲突综合判断生成交易信号(v2.1 增强):
做多信号(BUY): ✅ confidence ≥ min_confidence(默认65%) ✅ weighted_score > 0 ✅ 非CONFLICT状态 ✅ 成交量确认通过 ✅ ATR ≥ min_atr 做空信号(SELL): ✅ confidence ≥ min_confidence(默认65%) ✅ weighted_score < 0 ✅ 非CONFLICT状态 ✅ 成交量确认通过 ✅ ATR ≥ min_atr 观望信号(WAIT): ❌ confidence < min_confidence 或 ❌ CONFLICT状态 或 ❌ 成交量未确认且无S/R支撑 冲突信号(CONFLICT): ⚠️ |做多得分 - 做空得分| < conflict_threshold输出增强分析报告(v2.0 升级):
📊 BTC分析报告 v2.0 [模拟盘] ━━━━━━━━━━━━━━━━━━━━ 当前价格:$65,200 ATR(14):450 ━━━━━━━━━━━━━━━━━━━━ 【多时框趋势】 1D: UP ⬆️ | 4H: UP ⬆️ | 1H: UP ⬆️ | 15M: DOWN ⬇️ 时框一致性:3/4 → 乘数 0.82 主导方向:向上 EMA距离:1.2%(< 3%,无惩罚) 【量化评分】 EMA趋势(30%): +75 (EMA200之上,3/4时框一致) MACD(18%): +60 (金叉,DIF>0,柱状图增长) RSI(14%): +25 (RSI=45,偏中性) RSI背离(12%): +0 (无背离) 成交量(11%): +50 (放量上涨,量比1.8) 布林带(8%): +30 (接近下轨,带宽正常) S/R位置(5%): +15 (接近支撑位$64,800) K线形态(2%): +0 (无明显形态) ━━━━━━━━━━━━━━━━━━━━ 【信号判断】 加权得分:+59.5 信心度:75.2% ✅ (≥65%) 信号状态:BUY ✅ (非冲突) 成交量确认:通过 ✅ 💡 交易建议:做多 📍 参考入场价:$65,200 🛑 ATR止损:$64,525(-1.5×ATR,-1.26%) 🎯 ATR止盈:$66,550(+3×ATR,+2.07%) 📈 风险收益比:2.0 ━━━━━━━━━━━━━━━━━━━━ ✅ 满足开仓条件: - 信心度≥65%(75.2% ✅) - 非CONFLICT状态 ✅ - 成交量确认通过 ✅ - ATR充足(450 ≥ 200)✅ - RR合格(2.0 ≥ 1.5)✅ ━━━━━━━━━━━━━━━━━━━━ ⚠️ 注意事项: - 15M时框与主趋势相反,关注短期回调 - 信心度中等,建议小仓位试探
Phase 2:参数确认
用户确认交易方向(direction)和杠杆(leverage)。
如果用户未指定,使用默认值:
- 杠杆:10x
- 风险:1.5%
- ATR止损倍数:1.5
- ATR止盈倍数:3.0
- MA短期:20
- MA长期:50
- EMA周期:200
- EMA最大距离:3%
- 成交量均线:20
- 放量阈值:1.5
- 最低信心度:65%
- 冲突阈值:15
如果用户未指定 profile,默认使用 demo 模拟盘,保护资金安全。
计算 ATR 止盈止损价格:
做多:
- 止损价 = 入场价 - (ATR × 1.5)
- 止盈价 = 入场价 + (ATR × 3.0)
做空:
- 止损价 = 入场价 + (ATR × 1.5)
- 止盈价 = 入场价 - (ATR × 3.0)
- 计算风险收益比(RR):
RR = atr_multiplier_tp / atr_multiplier_sl
= 3.0 / 1.5
= 2.0
如果 RR < 1.5,提示风险收益比不合理,建议调整参数。
- 向用户确认完整参数后进入开仓阶段。
Phase 2.5:智能仓位计算与风险控制(整合 Position Sizer)
在开仓之前,系统将基于用户的风险偏好和市场条件,计算精确的仓位大小、清算价格、资金成本等关键参数。
Step 1:选择仓位计算方法
系统支持 3 种仓位计算方法,根据用户的风险偏好和历史数据选择:
| 方法 | 适用场景 | 输入参数 | 输出 |
|---|---|---|---|
| 固定比例法 | 默认推荐 | risk_percent(默认1.5%)、杠杆 | 基于固定风险的仓位 |
| ATR动态止损法 | 波动市场 | ATR、atr_multiplier_sl、杠杆 | 基于波动率的动态仓位 |
| 凯利公式 | 高级用户 | 胜率、平均盈亏比、杠杆 | 最优增长仓位 |
默认选择:固定比例法(1%风险)
Step 2:获取账户和合约参数
# 查询账户余额
okx account balance USDT --profile <profile>
# 获取合约参数
okx market instruments --instType SWAP --instId BTC-USDT-SWAP
提取关键字段:
equity:账户权益(用于风险计算)ctVal:合约面值(BTC-USDT-SWAP = 0.01 BTC)lotSz:最小下单精度(现货需要)minSz:最小下单数量
Step 3:计算仓位大小(固定比例法)
单笔风险金额 = 账户权益 × risk_percent / 100
每张合约风险 = |入场价格 - 止损价格| × 合约面值
仓位数 = floor(单笔风险金额 / 每张合约风险)
示例计算:
账户权益:10,000 USDT
risk_percent:1.5%
入场价格:$65,200
止损价格:$64,525(ATR 450 × 1.5)
合约面值:0.01 BTC(1张 = 0.01 BTC)
杠杆:10x
计算过程:
单笔风险金额 = 10,000 × 0.015 = 150 USDT
每张合约风险 = (65,200 - 64,525) × 0.01 × 65,200 = 440 USDT
仓位数 = floor(150 / 440) = 0 张(风险过小,调整)
调整后(风险2%):
单笔风险金额 = 10,000 × 0.02 = 200 USDT
仓位数 = floor(200 / 440) = 0 张(仍不足)
最终建议:
- 最小仓位:1张(风险 = 440 USDT = 4.4%)
- 风险过高,建议:
1. 提高止损价格(减少单张风险)
2. 降低杠杆(减少风险敞口)
3. 增加账户权益(提高风险承受能力)
Step 4:多场景杠杆对比
计算不同杠杆下的仓位和风险:
| 杠杆 | 仓位数 | 名义价值 | 保证金 | 单笔风险 | 风险占比 | 清算价估算 |
|---|---|---|---|---|---|---|
| 5x | 1 | $65,200 | $13,040 | $440 | 4.4% | $58,680 |
| 10x | 1 | $65,200 | $6,520 | $440 | 4.4% | $58,680 |
| 20x | 1 | $65,200 | $3,260 | $440 | 4.4% | $58,680 |
注意:
- 清算价在相同仓位下不受杠杆影响(交叉保证金)
- 高杠杆会放大实际风险敞口
- 建议杠杆:3-10x(根据市场波动)
Step 5:清算价格计算与验证
做多清算价计算(独立保证金):
清算价 = 入场价格 × (1 - mmr - fee_rate)
其中:
mmr = 维持保证金率(默认0.004 = 0.4%,Tier 1)
fee_rate = 手续费率(默认0.0005 = 0.05%,VIP0)
示例:
入场价格:$65,200
mmr:0.004
fee_rate:0.0005
清算价 = 65,200 × (1 - 0.004 - 0.0005) = 65,200 × 0.9955 = $64,890
止损价格:$64,525
清算价格:$64,890
✅ 止损在清算价之前($64,525 < $64,890),安全
清算价格验证规则:
- ✅ 止损价格 < 清算价格(做多):安全
- ⚠️ 止损价格 ≥ 清算价格(做多):危险,会先爆仓
- ❌ 如果止损在清算价之后,必须:
- 降低杠杆
- 提高止损价格
- 使用交叉保证金模式
清算价格警告示例:
🚨 清算价格警告!
━━━━━━━━━━━━━━━━━━━
止损价格:$64,525
清算价格:$64,890
━━━━━━━━━━━━━━━━━━━
⚠️ 止损在清算价之后!
建议操作:
1. 降低杠杆至 5x
2. 提高止损价格至 $65,000
3. 使用交叉保证金模式
Step 6:资金费率成本估算
okx market funding-rate BTC-USDT-SWAP
资金费率成本计算:
日资金成本 = 名义价值 × 资金费率 × 3(OKX每日结算3次)
周资金成本 = 日资金成本 × 7
示例:
名义价值:$65,200
资金费率:0.01%(正向)
日资金成本 = 65,200 × 0.0001 × 3 = $19.56
周资金成本 = 19.56 × 7 = $136.92
如果持仓7天:
预期盈利:+$1,350(2.07%)
资金成本:-$136.92
净盈利:+$1,213.08(1.86%)
资金费率判断规则:
- |费率| < 0.01%:低成本,可持仓多日
- 0.01% ≤ |费率| < 0.03%:中等成本,建议3-5天
- |费率| ≥ 0.03%:高成本,建议日内或隔夜
Step 7:投资组合约束检查
检查当前账户的总敞口:
# 查询当前持仓
okx account positions --instType SWAP --profile <profile>
# 查询账户最大可用保证金
okx account max-avail-size --instId BTC-USDT-SWAP --tdMode cross
约束规则:
- 单仓占比:不超过账户权益的10%(可配置)
- 总敞口:所有持仓的总风险不超过6-8%
- 保证金占用:不超过可用保证金的50%
示例检查:
账户权益:10,000 USDT
当前持仓:0
新开仓:1张,名义价值$65,200,保证金$6,520(10x杠杆)
检查结果:
✅ 单仓占比:6.52%(≤10%)- 通过
✅ 总敞口:0%(持仓为空)- 通过
✅ 保证金占用:65.2%(假设只有10,000可用)- ⚠️ 接近上限
建议:
- 保证金占用偏高,建议降低杠杆至5x
- 或增加账户权益
Step 8:生成最终推荐方案
基于以上分析,生成最终的仓位推荐:
📊 智能仓位计算结果
━━━━━━━━━━━━━━━━━━━
💰 账户权益:10,000 USDT
📊 推荐方法:固定比例法(2%风险)
━━━━━━━━━━━━━━━━━━━
📈 推荐仓位:1 张
💵 名义价值:$65,200
💎 保证金占用:$6,520(65.2% @ 10x杠杆)
🎯 杠杆:10x
━━━━━━━━━━━━━━━━━━━
🛑 止损价格:$64,525
💰 清算价格:$64,890(独立保证金)
✅ 止损在清算价之前,安全
━━━━━━━━━━━━━━━━━━━
💸 单笔风险:$675(6.75%)
📏 风险收益比:2.0
━━━━━━━━━━━━━━━━━━━
💳 日资金成本:$19.56(费率0.01%)
💳 周资金成本:$136.92
━━━━━━━━━━━━━━━━━━━
⚠️ 风险提示:
1. 单笔风险6.75%超过建议1-2%
2. 保证金占用65.2%偏高
3. 建议降低杠杆至5x或增加账户权益
💡 优化建议:
方案A:降低杠杆至5x
- 仓位数:1张
- 保证金占用:$13,040(130%)
- ⚠️ 保证金不足,无法执行
方案B:提高账户权益至20,000 USDT
- 仓位数:1张
- 保证金占用:$6,520(32.6%)
- 单笔风险:$675(3.38%)
- ✅ 可执行
Step 9:最终确认
在用户确认后,进入 Phase 3 开仓执行。
如果风险参数不满足要求,系统将提供调整建议,用户可以选择:
- 调整风险百分比
- 调整杠杆
- 调整止损价格
- 取消交易
Phase 3:开仓执行
Step 1:检查前置条件
# 查询账户余额
okx account balance USDT --profile <profile>
# 查询当前持仓
okx account positions --instType SWAP --profile <profile>
Step 2:计算仓位大小
按照"仓位计算详解"中的标准化步骤计算:
示例:
- 账户余额:10,000 USDT
- risk_percent:1.5%
- ATR:450
- atr_multiplier_sl:1.5
- 杠杆:10x
单笔风险金额 = 10,000 × 0.015 = 150 USDT
每张合约风险 = 450 × 1.5 = 675 USDT
仓位数 = 150 / 675 = 0.22 张 → 取整为 1 张
实际投入 = 1 × 100 × 10 = 1,000 USDT
保证金占用 = 1,000 / 10 = 100 USDT
Step 3:验证风控参数
检查是否满足所有风控过滤条件(详见"风控参数说明"章节):
✅ 技术指标:趋势方向明确、MACD确认、RSI合理
✅ 波动条件:ATR ≥ 200(充足)
✅ 风险条件:RR = 2.0(≥1.5)、单笔风险 = 1.5%(≤2%)
✅ 账户条件:余额充足、保证金占用 = 1%(≤50%)
✅ 历史条件:未连续亏损、回撤未超标
✅ 信号质量:信心度 = 75.2%(≥65%)、非CONFLICT、成交量确认通过
Step 4:执行开仓
做多开仓:
okx swap place \
--instId BTC-USDT-SWAP \
--side buy \
--ordType market \
--sz 1 \
--tdMode cross \
--posSide long \
--tgtCcy quote_ccy \
--lever 10 \
--profile demo
做空开仓:
okx swap place \
--instId BTC-USDT-SWAP \
--side sell \
--ordType market \
--sz 1 \
--tdMode cross \
--posSide short \
--tgtCcy quote_ccy \
--lever 10 \
--profile demo
Step 5:设置ATR止盈止损
okx swap place-algo \
--instId BTC-USDT-SWAP \
--side sell \
--ordType market \
--tpTriggerPx 66,550 \
--tpOrdPx \
--slTriggerPx 64,525 \
--slOrdPx \
--tdMode cross \
--posSide long \
--sz 1 \
--profile demo
开仓成功后,向用户报告:
⚡ 开仓成功!v2.1(整合 Position Sizer)
━━━━━━━━━━━━━━━━━━━
📈 方向:做多 10x
💰 开仓价格:$65,200
📊 仓位大小:1 张
💵 名义价值:$65,200
💎 保证金占用:$6,520(65.2%)
━━━━━━━━━━━━━━━━━━━
🔥 信号信心度:75.2% ✅
📊 多时框一致性:3/4 (1D↑ 4H↑ 1H↑ 15M↓)
━━━━━━━━━━━━━━━━━━━
🛑 ATR止损:$64,525(-1.5×ATR,-1.26%)
🎯 ATR止盈:$66,550(+3×ATR,+2.07%)
💰 清算价格:$64,890(独立保证金)
✅ 止损在清算价之前,安全
━━━━━━━━━━━━━━━━━━━
📏 风险收益比:2.0
💰 单笔风险:$675(6.75%)
━━━━━━━━━━━━━━━━━━━
💳 日资金成本:$19.56(费率0.01%)
💳 周资金成本:$136.92
━━━━━━━━━━━━━━━━━━━
📋 订单ID:xxxxxxxxx
Phase 4:持仓监控与止盈止损
当存在持仓时,持续监控价格变化:
Step 1:获取当前价格
okx market ticker BTC-USDT-SWAP
Step 2:计算盈亏
做多:
- 盈亏金额 = (当前价格 - 入场价格) × 仓位大小 × 合约面值
- 盈亏比例 = (当前价格 - 入场价格) / 入场价格 × 100
做空:
- 盈亏金额 = (入场价格 - 当前价格) × 仓位大小 × 合约面值
- 盈亏比例 = (入场价格 - 当前价格) / 入场价格 × 100
Step 3:ATR移动止损(可选)
触发条件:
做多:盈利 ≥ 1.5×ATR(即 当前价格 ≥ 入场价格 + 1.5×ATR)
做空:盈利 ≥ 1.5×ATR(即 当前价格 ≤ 入场价格 - 1.5×ATR)
移动止损规则:
做多移动止损:
- 新止损价 = 当前价格 - (ATR × atr_multiplier_sl)
- 新止损价必须 > 原止损价
- 更新止损订单
做空移动止损:
- 新止损价 = 当前价格 + (ATR × atr_multiplier_sl)
- 新止损价必须 < 原止损价
- 更新止损订单
Step 4:平仓判断
触发止盈时,报告:
🎉 止盈平仓!
━━━━━━━━━━━━━━━━━━━
💰 平仓价格:$66,550
📈 盈利幅度:+2.07%
💵 盈利金额:+1,350 USDT
📊 风险收益比:2.0
━━━━━━━━━━━━━━━━━━━
✅ 策略执行成功
触发止损时,报告:
⚠️ 止损平仓!
━━━━━━━━━━━━━━━━━━━
💰 平仓价格:$64,525
📉 亏损幅度:-1.26%
💵 亏损金额:-675 USDT
💎 单笔风险:1.26%
━━━━━━━━━━━━━━━━━━━
⚡ 风控执行成功,保护本金
Step 5:持仓中
未触发止盈止损时,向用户报告当前状态:
📊 持仓监控中...
━━━━━━━━━━━━━━━━━━━
当前价格:$65,800
入场价格:$65,200
━━━━━━━━━━━━━━━━━━━
💰 浮动盈利:+600 USDT
📈 盈利幅度:+0.92%
━━━━━━━━━━━━━━━━━━━
🛑 止损价格:$64,525
🎯 止盈价格:$66,550
📍 距离止盈:$750(1.14%)
━━━━━━━━━━━━━━━━━━━
⏳ 继续监控中...
使用示例
用户可以这样触发:
- "分析 BTC永续合约"
- "BTC做多 10x,ATR止损1.5倍,止盈3倍,风险1.5%"
- "做空 BTC 5x,入场价 68000"
- "查看当前BTC持仓"
- "平仓 BTC永续做多"
- "设置ATR止损 止损1.5 止盈3"
- "用模拟盘测试 BTC做多 10x"
- "切换到实盘,BTC做空 15x"
- "启用移动止损"
- "检查当前风控状态"
- "查看多时框趋势"
- "计算 BTC 10x杠杆的仓位"
- "评估当前交易风险"
- "检查清算价格"
输出格式
每次分析后输出格式统一的报告:
📊 BTC合约交易系统 v2.2 - BTC-USDT-SWAP [模拟盘]
━━━━━━━━━━━━━━━━━━━
当前价格:$65,200
ATR(14):450
━━━━━━━━━━━━━━━━━━━
【多时框趋势分析】
1D: UP ⬆️ (EMA200: $64,200, 价格>EMA +1.55%)
4H: UP ⬆️ (EMA200: $64,500, 价格>EMA +1.09%)
1H: UP ⬆️ (EMA200: $64,800, 价格>EMA +0.62%)
15M: DOWN ⬇️ (EMA200: $65,100, 价格<EMA -0.15%)
━━━━━━━━━━━━━━━━━━━
时框一致性:3/4 → 乘数 0.82
主导方向:向上 ⬆️
EMA距离:0.62%(< 3%,无惩罚)
【量化评分明细】
━━━━━━━━━━━━━━━━━━━
因子 权重 得分 加权贡献
──────────────────────────────────
EMA趋势 22% +75 +16.5 ⬆️
MACD 13% +60 +7.8 ⬆️
RSI 11% +25 +2.8 ⬆️
RSI背离 9% +50 +4.5 ⬆️
成交量 8% +80 +6.4 ⬆️
布林带 6% +30 +1.8 ⬆️
S/R位置 4% +40 +1.6 ⬆️
K线形态 2% +60 +1.2 ⬆️
──────────────────────────────────
技术面得分:+42.6(75%权重)
──────────────────────────────────
OI变化趋势 9% +85 +7.7 ⬆️
多空比L/S 6% +20 +1.2 ⬆️
资金费率 5% +30 +1.5 ⬆️
清算数据 3% +40 +1.2 ⬆️
大户持仓变化 2% +60 +1.2 ⬆️
──────────────────────────────────
情绪面得分:+12.8(25%权重)
──────────────────────────────────
总分值:+55.4
信心度:55.4 × 0.82(时框一致性)= 45.4%(⚠️ 低于65%,建议观望)
RSI背离 12% +0 +0.0 ➖
成交量 11% +50 +5.5 ⬆️
布林带 8% +30 +2.4 ⬆️
S/R位置 5% +15 +0.75 ⬆️
K线形态 2% +0 +0.0 ➖
━━━━━━━━━━━━━━━━━━━
加权得分合计:+45.45
时框一致性惩罚:×0.82 → +37.27
EMA距离惩罚:×1.0 → +37.27
━━━━━━━━━━━━━━━━━━━
最终信心度:75.2% ✅
【信号判断】
━━━━━━━━━━━━━━━━━━━
做多得分:45.45
做空得分:12.85
得分差距:32.60 (≥15) ✅
信号状态:BUY ✅
成交量确认:通过 ✅ (量比1.8)
━━━━━━━━━━━━━━━━━━━
💡 交易建议:做多
📍 参考入场价:$65,200
🛑 ATR止损:$64,525(-1.5×ATR,-1.26%)
🎯 ATR止盈:$66,550(+3×ATR,+2.07%)
📈 风险收益比:2.0
━━━━━━━━━━━━━━━━━━━
💎 建议仓位:1 张(杠杆10x,投入1000 USDT)
💰 单笔风险:150 USDT(1.5%)
💵 保证金占用:100 USDT(1%)
━━━━━━━━━━━━━━━━━━━
✅ 满足开仓条件:
✅ 信心度≥65%(75.2%)
✅ 非CONFLICT状态(差距32.6分)
✅ 成交量确认通过(量比1.8)
✅ ATR充足(450 ≥ 200)
✅ RR合格(2.0 ≥ 1.5)
✅ 余额充足
✅ 持仓数未超标
━━━━━━━━━━━━━━━━━━━
⚠️ 注意事项:
- 15M时框与主趋势相反,关注短期回调风险
- 信心度中等(75.2%),建议小仓位试探
- RSI未达到极端值,可能不会立即反转
v2.2 升级说明(整合 Position Sizer)
核心升级
智能仓位计算引擎:
- 整合 position-sizer 核心功能,支持3种仓位计算方法
- 固定比例法(默认):基于固定风险百分比计算仓位
- ATR动态止损法:基于市场波动率动态调整仓位
- 凯利公式(高级):基于历史胜率和盈亏比计算最优仓位
清算价格验证:
- 自动计算独立保证金下的清算价格
- 验证止损价格是否在清算价之前
- 提供风险预警和优化建议
资金成本估算:
- 自动计算日/周资金费率成本
- 评估多日持仓的实际净收益
- 根据资金费率提供持仓时长建议
投资组合约束:
- 单仓占比控制(默认≤10%)
- 总敞口控制(默认≤6-8%)
- 保证金占用检查(默认≤50%)
多场景杠杆对比:
- 自动计算5x、10x、20x等不同杠杆下的仓位和风险
- 帮助用户选择最优杠杆倍数
MMR分层保证金支持:
- 支持大仓位的Tier 2+保证金率
- VIP用户手续费率自定义
新增参数
| 参数 | 说明 | 默认值 |
|---|---|---|
| max_position_pct | 最大单仓占比 | 10% |
| max_portfolio_heat | 最大总敞口 | 8% |
| mmr | 维持保证金率 | 0.004(0.4%) |
| fee_rate | 手续费率 | 0.0005(0.05%) |
新增使用场景
- "计算 BTC 10x杠杆的仓位"
- "评估当前交易风险"
- "检查清算价格"
- "对比5x、10x、20x杠杆的仓位"
v2.1 升级说明
核心升级
市场情绪分析:
- 新增5个市场情绪指标(OI变化、多空比、资金费率、清算数据、大户持仓)
- 权重调整为技术面75% + 情绪面25%
- 实现技术面与情绪面冲突检测
多时框趋势分析:
- 从单一时框升级为4时框综合分析(1D、4H、1H、15M)
- 引入时框一致性乘数,提升信号可靠性
- EMA200作为主要趋势判断依据
量化评分系统:
- 从定性判断升级为量化评分
- 13个指标加权计算,权重基于可靠性分配
- 最终信心度 0% ~ 100%,清晰反映信号强度
信号冲突检测:
- 自动检测多空得分差距
- 冲突信号禁止开仓,避免在趋势不明确时操作
成交量确认:
- 量比计算和放量/缩水判断
- 成交量门槛规则,确保价格走势有真实支撑
RSI背离检测:
- 自动检测顶底背离
- 背离信号获得高权重,是最强的反转信号
布林带分析:
- 识别极端价格位置
- 考虑布林带宽,提升信号可靠性
支撑阻力识别:
- 自动识别关键S/R位
- 接近S/R时提供额外信号支持
K线形态识别:
- 识别6种经典形态
- 形态信号作为辅助确认
准确率提升
| 升级项 | v1.0 | v2.0 | 提升幅度 |
|---|---|---|---|
| 趋势判断 | 单时框定性 | 4时框量化 | ⬆️ 显著 |
| 信号强度 | 无量化 | 0-100%信心度 | ⬆️ 显著 |
| 时框一致性 | 无 | 0.35-1.0乘数 | ⬆️ 新增 |
| 信号冲突 | 无检测 | 自动检测 | ⬆️ 新增 |
| 成交量确认 | 简单判断 | 量比+门槛规则 | ⬆️ 增强 |
| RSI背离 | 无 | 自动检测+高权重 | ⬆️ 新增 |
| 布林带 | 无 | 位置+带宽分析 | ⬆️ 新增 |
| S/R识别 | 无 | 自动识别+接近度 | ⬆️ 新增 |
| K线形态 | 无 | 6种经典形态 | ⬆️ 新增 |
预期效果
- 信号质量:从"定性判断"提升到"量化评分",信号更加可靠
- 准确率:多时框一致性和冲突检测预计提升准确率 15-20%
- 过滤能力:成交量门槛和冲突检测有效过滤低质量信号
- 反转捕捉:RSI背离和布林带极端位置提升反转信号捕捉能力
风险提示
- 默认使用模拟盘(demo),切换实盘需用户明确指定 profile=live。
- 单笔风险建议控制在账户余额的 1-2%,避免连续亏损导致大幅回撤。
- 杠杆倍数应根据市场波动调整:趋势行情 10-20x,震荡行情 3-5x,高波动期降低杠杆。
- ATR 动态止损是本系统的核心,必须严格执行,不得随意调整止损位。
- 风险收益比 RR < 1.5 的交易不建议执行,避免低质量交易。
- 信心度 < 65% 的信号不建议执行,避免信号质量不足。
- CONFLICT 状态必须等待市场方向明确后再操作,避免在多空分歧时开仓。
- 成交量未确认且无S/R支撑时,即使其他因子得分高也不开仓。
- 移动止损仅在盈利达到 1.5×ATR 后启动,过早启动可能被小幅震荡止损。
- 连续亏损 3 笔后必须暂停交易,重新评估市场环境和策略参数。
- 账户回撤达到 10% 时必须暂停交易,检查风控参数是否合理。
- 合约交易具有高风险,高杠杆会放大风险和收益,请根据自身风险承受能力操作。
- 实际交易存在滑点、手续费、API 延迟、强平等风险,实际盈亏与理论值会有偏差。
- 建议先在模拟盘充分测试,熟悉系统和策略后再进行实盘操作。
- 市场极端行情下可能出现插针、爆仓、流动性枯竭等风险,请密切关注持仓。
- 本 Skill 仅供学习研究,不构成投资建议,盈亏自负,请谨慎操作。
- 多时框分析虽然提升准确率,但不能保证100%正确,仍需结合市场环境综合判断。
- 量化评分系统基于历史数据和技术指标,市场出现突发性变化时可能失效。
- RSI背离是最强的反转信号,但背离后可能继续背离,需结合其他指标确认。
- 成交量确认是开仓的必要条件,但成交量可以造假,需结合价格走势综合判断。