多空动能仪表盘(Pine v6)
把 RSI、MACD、ADX、均线方向合成一个 -100 到 100 的动能分数
效果示意图 · AI 根据源码绘制
//@version=6
indicator("综合评分指标", shorttitle="综合评分", overlay=false)
// ========== 可调参数 ==========
rsiPeriod = input.int(14, title="RSI 周期", minval=1)
macdFast = input.int(12, title="MACD 快线周期", minval=1)
macdSlow = input.int(26, title="MACD 慢线周期", minval=1)
macdSignal = input.int(9, title="MACD 信号线周期", minval=1)
adxPeriod = input.int(14, title="ADX 周期", minval=1)
adxThreshold = input.int(20, title="ADX 趋势阈值", minval=1)
emaFast = input.int(50, title="EMA 快线周期", minval=1)
emaSlow = input.int(200, title="EMA 慢线周期", minval=1)
// 权重参数(推荐总和为 1.0,但代码会自动归一化)
weightRSI = input.float(0.25, title="RSI 权重", minval=0.0, step=0.05)
weightMACD = input.float(0.25, title="MACD 权重", minval=0.0, step=0.05)
weightADX = input.float(0.25, title="ADX 权重", minval=0.0, step=0.05)
weightEMA = input.float(0.25, title="EMA 权重", minval=0.0, step=0.05)
// ========== 计算四个维度 ==========
// 1. RSI 维度:相对 50 的偏离,范围 -100 到 +100
rsiValue = ta.rsi(close, rsiPeriod)
rsiScore = (rsiValue - 50) * 2.0 // RSI=0 -> -100, RSI=100 -> +100, RSI=50 -> 0
// 2. MACD 维度:柱状体正负,简化为 -100 / 0 / +100
[macdLine, signalLine, histLine] = ta.macd(close, macdFast, macdSlow, macdSignal)
macdScore = histLine > 0 ? 100.0 : (histLine < 0 ? -100.0 : 0.0)
// 3. ADX 维度:趋势强度,大于阈值为 +100,小于为 -100
adxValue = ta.adx(adxPeriod)
adxScore = adxValue >= adxThreshold ? 100.0 : -100.0
// 4. EMA 维度:快线在慢线上方为 +100,下方为 -100
emaFastValue = ta.ema(close, emaFast)
emaSlowValue = ta.ema(close, emaSlow)
emaScore = emaFastValue > emaSlowValue ? 100.0 : (emaFastValue < emaSlowValue ? -100.0 : 0.0)
// ========== 加权合成总分 ==========
// 计算权重总和,防止除零
weightSum = weightRSI + weightMACD + weightADX + weightEMA
weightSumSafe = weightSum > 0 ? weightSum : 1.0 // 如果用户把所有权重都设为 0,用 1.0 避免除零
// 加权平均,保持 -100 到 +100 范围
compositeScore = (rsiScore * weightRSI + macdScore * weightMACD + adxScore * weightADX + emaScore * weightEMA) / weightSumSafe
// ========== 绘制柱状图 ==========
// 根据总分着色:>30 绿色、<-30 红色、中间灰色
barColor = compositeScore > 30 ? color.new(color.green, 0) : (compositeScore < -30 ? color.new(color.red, 0) : color.new(color.gray, 30))
plot(compositeScore, title="综合评分", style=plot.style_histogram, color=barColor, linewidth=3)
// ========== 参考线 ==========
hline(30, title="多头区 +30", color=color.new(color.green, 70), linestyle=hline.style_dashed)
hline(0, title="中性 0", color=color.new(color.gray, 50), linestyle=hline.style_solid)
hline(-30, title="空头区 -30", color=color.new(color.red, 70), linestyle=hline.style_dashed)
// ========== 右上角 table 显示各维度得分 ==========
var table scoreTable = table.new(position.top_right, 2, 5, bgcolor=color.new(color.black, 85), border_width=1, border_color=color.new(color.gray, 50))
if barstate.islast
// 表头
table.cell(scoreTable, 0, 0, "维度", text_color=color.white, text_size=size.small, bgcolor=color.new(color.blue, 70))
table.cell(scoreTable, 1, 0, "得分", text_color=color.white, text_size=size.small, bgcolor=color.new(color.blue, 70))
// RSI 行
table.cell(scoreTable, 0, 1, "RSI", text_color=color.white, text_size=size.small)
table.cell(scoreTable, 1, 1, str.tostring(math.round(rsiScore, 1)), text_color=rsiScore > 0 ? color.lime : color.red, text_size=size.small)
// MACD 行
table.cell(scoreTable, 0, 2, "MACD", text_color=color.white, text_size=size.small)
table.cell(scoreTable, 1, 2, str.tostring(math.round(macdScore, 1)), text_color=macdScore > 0 ? color.lime : color.red, text_size=size.small)
// ADX 行
table.cell(scoreTable, 0, 3, "ADX", text_color=color.white, text_size=size.small)
table.cell(scoreTable, 1, 3, str.tostring(math.round(adxScore, 1)), text_color=adxScore > 0 ? color.lime : color.red, text_size=size.small)
// EMA 行
table.cell(scoreTable, 0, 4, "EMA", text_color=color.white, text_size=size.small)
table.cell(scoreTable, 1, 4, str.tostring(math.round(emaScore, 1)), text_color=emaScore > 0 ? color.lime : color.red, text_size=size.small)作品说明
思路说明
计算四个技术维度的独立得分,再按用户设定的权重加权平均,合成 -100 到 +100 的综合评分。RSI 偏离 50 中枢越远得分越极端;MACD 柱状体正负决定方向;ADX 大于 20 代表趋势强,小于 20 是震荡;EMA50 与 EMA200 的相对位置判断中长期趋势。四个维度各自标准化到 -100~+100,加权求和后除以权重总和,保持在同一尺度。柱状图用三色区分多空中性,table 实时显示各维度贡献,方便调试和优化权重配比。
使用说明
安装方法 在 TradingView 图表页面,点击底部「Pine 编辑器」,粘贴完整代码,点击「添加到图表」。指标会显示在主图下方的独立副图窗口。
参数调节
- 周期参数:RSI/MACD/ADX/EMA 的计算周期可按个人交易风格调整,默认值适用于日线级别
- ADX 趋势阈值:默认 20,低于此值判定为震荡市,高于为趋势市,可调到 25 提高趋势判定门槛
- 权重参数:四个维度默认各占 0.25(25%),可根据策略偏好调整,例如做趋势交易可提高 ADX 和 EMA 权重;代码会自动归一化,不必强制总和为 1
信号解读
- 绿色柱(>30):多个维度偏多,考虑做多或持有多单
- 红色柱(<-30):多个维度偏空,考虑做空或持有空单
- 灰色柱(-30~30):市场中性或维度分歧,观望或小仓位试探
- 右上角 table:实时显示四个维度各自贡献,绿色数字为正分,红色为负分,方便诊断哪些因素在主导当前评分
注意事项
- 本指标是辅助工具,需结合价格形态、支撑阻力位等其他因素综合判断
- ADX 和 EMA 维度采用二值化(±100),如需更细腻的渐变评分可自行修改公式
- 建议在回测中测试不同权重组合,找到适合标的和周期的配比
- RSI 极端超买超卖(>70 或 <30)时,评分会接近 ±40,叠加其他维度后可能触发 ±30 阈值
AI 解读根据源码逐行分析写成,供参考,以实际运行为准
这是什么
一个把 RSI、MACD、ADX、均线方向四个常用指标合成一个数字的工具。最终输出 -100 到 +100 的评分,正数偏多、负数偏空、接近零是中性。柱状图用绿红灰三色区分多空中性,右上角实时显示四个维度各贡献多少分,方便你调权重或诊断当前市场哪个因素在主导。
逻辑原理
代码把四个维度各自标准化到 -100~+100 区间:
- RSI 维度:计算 RSI 值,相对 50 中枢的偏离乘 2,RSI=70 得 +40 分,RSI=30 得 -40 分
- MACD 维度:取 MACD 柱状体(快线减信号线),正数得 +100,负数得 -100,零得 0
- ADX 维度:计算 ADX 值,大于等于设定阈值(默认 20)得 +100(有趋势),小于得 -100(震荡市)
- EMA 维度:对比 EMA50 和 EMA200,快线在上得 +100(多头排列),在下得 -100(空头排列)
四个分数按你设的权重(默认各 0.25)加权平均,最终合成综合评分。权重总和会自动归一化,不必强制凑成 1.0。柱状图超过 +30 画绿色,低于 -30 画红色,中间画半透明灰色。右上角 table 每个 bar 更新一次,显示四个维度的实时得分。
参数说明
- RSI 周期(14):RSI 计算长度,越小越灵敏,越大越平滑
- MACD 快线周期(12)、慢线周期(26)、信号线周期(9):标准 MACD 参数,可按个人习惯调整
- ADX 周期(14):ADX 计算长度,越短对趋势变化反应越快
- ADX 趋势阈值(20):超过此值判定为趋势市,低于为震荡市,可调到 25 提高趋势判定门槛
- EMA 快线周期(50)、慢线周期(200):均线金叉死叉判断用,可换成 20/60 等其他组合
- RSI 权重(0.25)、MACD 权重(0.25)、ADX 权重(0.25)、EMA 权重(0.25):四个维度的占比,可按策略偏好调整,例如做趋势交易可提高 ADX 和 EMA 权重到 0.3~0.4,震荡市提高 RSI 和 MACD 权重
怎么用
在 TradingView 图表页面底部点击「Pine 编辑器」,粘贴完整代码,点击「添加到图表」。指标会显示在主图下方的独立副图窗口。柱状图绿色代表多头动能占优(>30),红色代表空头占优(<-30),灰色是中性或维度分歧(-30~30)。右上角表格实时显示 RSI、MACD、ADX、EMA 四个维度各自得分,绿色数字为正分,红色为负分。
建议结合价格形态、支撑阻力位等其他因素综合判断,不要单凭评分开平仓。可以在回测中测试不同权重组合,找到适合你交易的标的和周期的配比。
适用场景
- 适合品种:代码没有品种限制,股票、外汇、加密货币、商品都可以用
- 适合周期:默认参数面向日线级别,小时线或 15 分钟线建议缩短 RSI/MACD/ADX 周期到 7~10,4 小时线以上可用默认值
- 适合行情:趋势市和震荡市都能用,但逻辑偏向趋势跟踪(ADX 和 EMA 是二值化的趋势判断)。如果四个维度同向,评分会接近 ±100;如果分歧大,评分会在 -30~+30 区间震荡,此时观望或小仓位试探
- 不适合行情:剧烈单边行情中 RSI 可能长时间超买超卖,ADX 持续高位,评分会一直偏向一侧,此时需警惕反转风险
风险提示
- 滞后性:RSI、MACD、EMA 都是滞后指标,计算依赖历史数据,快速突破或反转时可能来不及响应
- ADX 和 EMA 二值化:代码把 ADX 和 EMA 简化为 ±100 两档,中间过渡状态(ADX 在 18~22、均线即将交叉)会频繁跳变,可能产生虚假信号
- 权重依赖:最终评分高度依赖你设的权重,不当的配比会放大某个维度的噪音或削弱有效信号,需要回测验证
- 阈值主观性:±30 这个多空分界线是示例值,不同标的和周期的最佳阈值可能是 ±20 或 ±40,需自行测试
- 不是进出场系统:这个指标只提供多空倾向的参考,没有明确的入场出场规则,不能直接当策略用
常见问题
- 这个指标会重绘吗
- 不会。所有计算都基于已确认的 K 线数据,RSI、MACD、ADX、EMA 都是标准的非重绘指标,历史柱状图不会因为新数据到来而改变。
- 可以用在加密货币或外汇上吗
- 可以。代码没有品种限制,只要 TradingView 上有该品种的行情数据就能用。不过不同品种的波动特性不同,建议回测后调整权重和阈值。
- 权重设为 0 会怎样
- 该维度不参与计算。如果把所有权重都设为 0,代码会用 1.0 作为分母避免除零错误,此时评分为 0。建议至少保留两个维度的权重大于 0。
- 参数默认值适合什么周期
- 默认参数面向日线级别。小时线或 15 分钟线建议缩短 RSI 周期到 7~10、MACD 快慢线到 8/17、ADX 周期到 10,4 小时线以上可用默认值。
- 评分一直在 -30 到 30 之间震荡怎么办
- 说明四个维度分歧较大或市场处于盘整,此时观望或小仓位试探。可以尝试调整权重,提高你认为更重要的维度占比,或者等评分突破 ±30 再考虑入场。
Momentum Dashboard Indicator (Pine v6)
Combines RSI, MACD, ADX, and EMA into a -100 to +100 momentum score with weighted averaging. Color-coded histogram shows bullish/bearish/neutral zones, and a table displays each dimension's contribution in real-time.
Source code is shown above. Compiled EX5 files are available to VIP members.
评论
还没有人评论,来抢个沙发。