MACD改良版的优点
#1. 更灵活的均线选择(SMA/EMA)
你新增了两个选项:
sma_source: 控制 MACD 主线计算用的是 EMA 还是 SMA
sma_signal: 控制信号线用的是 EMA 还是 SMA
优点:
适应不同交易者风格:有些交易者认为 EMA 响应更快,适合短线;SMA 更平滑,适合长线,这样的设置可根据需求自定义。
增加策略测试灵活度:可以快速测试不同组合,找到更适合当前市场的参数。
#2. 参数调整更精细
你设定了以下参数:
fast_length 默认13
slow_length 默认34
signal_length 默认9,可调范围 1~50
优点:
更贴合不同品种的波动性,比如加密货币波动大,可能需要更短周期。
用 13 / 34 代替传统的 12 / 26,有助于滤掉更多噪音(与斐波那契数列更贴近,有些交易者偏好这一点)。
#3. 图表可读性增强
你绘制了:
彩色直方图:根据柱子是否增减,自动变色,颜色视觉反馈清晰。
MACD 线/信号线:清晰可辨的配色(蓝/橙)。
交叉点圆点提示:直观地标记出金叉死叉位置,方便肉眼识别与手动交易。
代码
//@version=5
indicator(title="移动平均收敛发散指标", shorttitle="MACD改良版 By 阿尔法兔", timeframe="", timeframe_gaps=true)
// 获取输入
fast_length = input(title = "快速均线长度", defval = 13)
slow_length = input(title = "慢速均线长度", defval = 34)
src = input(title = "数据源", defval = close)
signal_length = input.int(title = "信号线平滑长度", minval = 1, maxval = 50, defval = 9, display = display.data_window)
sma_source = input.string(title = "振荡器均线类型", defval = "EMA", options = ["SMA", "EMA"], display = display.data_window)
sma_signal = input.string(title = "信号线均线类型", defval = "EMA", options = ["SMA", "EMA"], display = display.data_window)
// 计算
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal
// 警报条件(只检测MACD线与信号线的交叉,不考虑方向)
crossover_signal = ta.crossover(macd, signal) // MACD线穿越信号线向上
crossunder_signal = ta.crossunder(macd, signal) // MACD线穿越信号线向下
alertcondition(crossover_signal or crossunder_signal, title='MACD线交叉信号', message='MACD线与信号线发生交叉。')
// 绘图
hline(0, "零线", color = color.new(#787B86, 50)) // 绘制零线
plot(hist, title = "直方图", style = plot.style_columns, color = (hist >= 0 ? (hist[1] < hist ? #26A69A : #B2DFDB) : (hist[1] < hist ? #FFCDD2 : #FF5252)))
plot(macd, title = "MACD", color = #2962FF) // 绘制MACD线
plot(signal, title = "信号线", color = #FF6D00) // 绘制信号线
// 绘制交叉标记
plot(crossover_signal ? macd : na, color=color.green, style=plot.style_circles, linewidth=3, title="MACD线穿越信号线")
plot(crossunder_signal ? macd : na, color=color.red, style=plot.style_circles, linewidth=3, title="MACD线穿越信号线")
评论区