这个策略是一个基于MACD(移动平均线收敛发散指标)的高级量化交易系统,通过动态背景显示和多种预设参数组合来增强交易决策的准确性。该策略的核心在于通过MACD指标的交叉信号来捕捉市场趋势的转换点,并通过可视化的方式直观地展示市场的多空状态。
策略采用了十种不同的MACD参数预设,包括标准设置(12,26,9)、短期(5,35,5)、长期(19,39,9)等,以适应不同的市场环境和交易风格。当MACD线与信号线发生黄金交叉时,系统生成买入信号;当发生死亡交叉时,系统生成卖出信号。策略通过动态背景颜色变化(绿色表示多头,红色表示空头)来增强视觉辨识度,帮助交易者更好地把握市场走势。
这是一个结构完善、逻辑清晰的MACD策略进阶版本。通过多参数预设和动态视觉反馈,大大提升了策略的实用性和可操作性。虽然存在一些固有的风险,但通过提供的优化方向进行改进后,该策略有望成为一个稳健的交易系统。建议交易者在实盘使用前进行充分的回测,并根据具体市场环境选择合适的参数设置。
/*backtest start: 2024-10-12 00:00:00 end: 2024-11-11 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Hanzo - Top 10 MACD Strategy", overlay=false) // MACD in a separate pane // Define dropdown options for MACD settings macdOption = input.string(title="Select MACD Setting", defval="Standard (12, 26, 9)", options=["Standard (12, 26, 9)", "Short-Term (5, 35, 5)", "Long-Term (19, 39, 9)", "Scalping (3, 10, 16)", "Cryptocurrency (20, 50, 9)", "Forex (8, 17, 9)", "Conservative (24, 52, 18)", "Trend-Following (7, 28, 7)", "Swing Trading (5, 15, 5)", "Contrarian (15, 35, 5)"]) // MACD setting based on user selection var int fastLength = 12 var int slowLength = 26 var int signalLength = 9 switch macdOption "Standard (12, 26, 9)" => fastLength := 12 slowLength := 26 signalLength := 9 "Short-Term (5, 35, 5)" => fastLength := 5 slowLength := 35 signalLength := 5 "Long-Term (19, 39, 9)" => fastLength := 19 slowLength := 39 signalLength := 9 "Scalping (3, 10, 16)" => fastLength := 3 slowLength := 10 signalLength := 16 "Cryptocurrency (20, 50, 9)" => fastLength := 20 slowLength := 50 signalLength := 9 "Forex (8, 17, 9)" => fastLength := 8 slowLength := 17 signalLength := 9 "Conservative (24, 52, 18)" => fastLength := 24 slowLength := 52 signalLength := 18 "Trend-Following (7, 28, 7)" => fastLength := 7 slowLength := 28 signalLength := 7 "Swing Trading (5, 15, 5)" => fastLength := 5 slowLength := 15 signalLength := 5 "Contrarian (15, 35, 5)" => fastLength := 15 slowLength := 35 signalLength := 5 // MACD Calculation [macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength) macdHist = macdLine - signalLine // Buy and Sell conditions based on MACD crossovers enterLong = ta.crossover(macdLine, signalLine) exitLong = ta.crossunder(macdLine, signalLine) // Execute buy and sell orders with price labels in the comments if (enterLong) strategy.entry("Buy", strategy.long, comment="Buy at " + str.tostring(close, "#.##")) if (exitLong) strategy.close("Buy", comment="Sell at " + str.tostring(close, "#.##")) // Plot the signal price using plotchar for buy/sell prices //plotchar(enterLong ? close : na, location=location.belowbar, color=color.green, size=size.small, title="Buy Price", offset=0) //plotchar(exitLong ? close : na, location=location.abovebar, color=color.red, size=size.small, title="Sell Price", offset=0) // Background highlighting based on bullish or bearish MACD isBullish = macdLine > signalLine isBearish = macdLine < signalLine // Change background to green for bullish periods and red for bearish periods bgcolor(isBullish ? color.new(color.green, 90) : na, title="Bullish Background") bgcolor(isBearish ? color.new(color.red, 90) : na, title="Bearish Background") // Plot the MACD and Signal line in a separate pane plot(macdLine, title="MACD Line", color=color.blue, linewidth=2) plot(signalLine, title="Signal Line", color=color.orange, linewidth=2) hline(0, "Zero Line", color=color.gray) plot(macdHist, title="MACD Histogram", style=plot.style_histogram, color=color.red)