«

大A超实用的60日均线+MACD战法

诚全而归之 • 1 个月前 • 35 次点击 •


买入信号是:价格前期在60均线上,呈下跌趋势,价格回踩到60均线,同时MACD慢线在0轴以上,出现买入信号。卖出信号:价格前期在60均线下,成上升趋势,价格升到60日均线,同时MACD慢线在0轴以下,出现卖出信号。

SMA60+MACD Strategy 指标说明

指标概述

SMA60+MACD Strategy 是一个基于趋势和均线回踩/突破的交易策略指标,结合了 60 周期简单移动平均线(SMA60)、5 周期简单移动平均线(SMA5)趋势判断和 MACD 指标,旨在捕捉价格在趋势中的回踩或突破机会。指标通过以下条件生成买入和卖出信号:

输入参数

  1. SMA Period (smaLength)

    • 默认值:60
    • 描述:用于计算主均线的周期数,即 SMA60。
    • 用途:确定价格回踩或突破的主要参考均线。
  2. MACD Fast Length (fastLength)

    • 默认值:12
    • 描述:MACD 快线的周期数。
    • 用途:计算 MACD 指标的快线。
  3. MACD Slow Length (slowLength)

    • 默认值:26
    • 描述:MACD 慢线的周期数。
    • 用途:计算 MACD 指标的慢线。
  4. MACD Signal Length (signalLength)

    • 默认值:9
    • 描述:MACD 信号线的周期数。
    • 用途:计算 MACD 指标的信号线(慢线),用于判断趋势方向。
  5. Trend Lookback Period (trendLookback)

    • 默认值:5
    • 描述:用于判断趋势的回看周期数。
    • 用途:确定 SMA5 的趋势方向(上升或下降)所需的最小周期数。
  6. SMA Trend Period (smaTrendLength)

    • 默认值:5
    • 描述:用于判断趋势的 SMA 周期数(即 SMA5)。
    • 用途:计算用于趋势判断的短期均线。
  7. Wait Candle Limit (waitCandleLimit)

    • 默认值:2
    • 描述:回踩/突破后最多等待的蜡烛数量。
    • 用途:控制信号触发的最长等待时间(以蜡烛数量计)。
  8. Touch Tolerance (%) (touchTolerance)

    • 默认值:0.5
    • 描述:回踩/突破 SMA60 的容差范围(以百分比表示)。
    • 用途:允许价格在 SMA60 附近一定范围内(±容差)触发信号。

指标逻辑

买入信号条件

  1. 价格位置:前一根蜡烛的收盘价高于 SMA60(close[1] > sma60[1])。
  2. 趋势方向:SMA5 呈下降趋势(当前 SMA5 小于 trendLookback 周期前的 SMA5,即 smaTrend < smaTrend[trendLookback])。
  3. 回踩条件:价格从上方回踩到 SMA60 附近(close <= sma60 + toleranceclose[1] > sma60[1] - tolerance)。
  4. MACD 条件:MACD 信号线(慢线)在 0 轴以上(signalLine > 0)。
  5. 确认信号:在回踩后的 1 到 waitCandleLimit 根蜡烛内,出现绿色蜡烛(阳线,close > open),且收盘价高于 SMA60(close > sma60)。

卖出信号条件

  1. 价格位置:前一根蜡烛的收盘价低于 SMA60(close[1] < sma60[1])。
  2. 趋势方向:SMA5 呈上升趋势(当前 SMA5 大于 trendLookback 周期前的 SMA5,即 smaTrend > smaTrend[trendLookback])。
  3. 突破条件:价格从下方突破到 SMA60 附近(close >= sma60 - toleranceclose[1] < sma60[1] + tolerance)。
  4. MACD 条件:MACD 信号线(慢线)在 0 轴以下(signalLine < 0)。
  5. 确认信号:在突破后的 1 到 waitCandleLimit 根蜡烛内,出现红色蜡烛(阴线,close < open),且收盘价低于 SMA60(close < sma60)。

图表显示

  1. SMA60 线

    • 颜色:蓝色
    • 描述:主图上的 60 周期简单移动平均线,用于判断价格的回踩或突破。
  2. SMA5 线(可选,用于调试)

    • 颜色:橙色
    • 描述:主图上的 5 周期简单移动平均线,用于判断趋势方向。
  3. 买入信号

    • 标记:绿色向上三角形
    • 位置:K 线下方
    • 描述:表示满足买入条件的信号点。
  4. 卖出信号

    • 标记:红色向下三角形
    • 位置:K 线上方
    • 描述:表示满足卖出条件的信号点。
  5. MACD 副图

    • MACD 线:红色
    • 信号线(慢线):黄色
    • 零轴:灰色
    • 描述:显示 MACD 指标,用于判断趋势方向。

使用方法

  1. 添加指标

    • 在 TradingView 中打开 Pine Script 编辑器,复制并粘贴代码。
    • 保存并添加到图表。
  2. 调整参数

    • 根据交易需求调整输入参数,例如:
      • 增加 touchTolerance(例如从 0.5 改为 1.0),以放宽回踩/突破的容差。
      • 减少 trendLookback(例如从 5 改为 3),以放宽趋势要求。
      • 调整 waitCandleLimit(例如从 2 改为 3),以延长信号触发窗口。
  3. 观察信号

    • 关注主图上的绿色向上三角形(买入信号)和红色向下三角形(卖出信号)。
    • 结合 MACD 副图和 SMA5 趋势线,验证信号的有效性。

注意事项

代码

以下是完整的 Pine Script v6 代码:


//@version=6
// 指标名称
indicator("SMA60+MACD Strategy", overlay=true)

// 输入参数
smaLength = input.int(60, "SMA Period")
fastLength = input.int(12, "MACD Fast Length")
slowLength = input.int(26, "MACD Slow Length")
signalLength = input.int(9, "MACD Signal Length")
trendLookback = input.int(5, "Trend Lookback Period", minval=1)
smaTrendLength = input.int(5, "SMA Trend Period", minval=1) // 用于判断趋势的SMA周期
waitCandleLimit = input.int(2, "Wait Candle Limit", minval=1) // 等待蜡烛数量限制
touchTolerance = input.float(0.5, "Touch Tolerance (%)", minval=0.0, step=0.1) // 回踩容差(百分比)

// 计算SMA
sma60 = ta.sma(close, smaLength)
smaTrend = ta.sma(close, smaTrendLength) // 用于判断趋势的SMA5

// 计算MACD
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength)

// 定义趋势:基于SMA5的趋势方向
downTrend = smaTrend < smaTrend[trendLookback]  // 当前SMA5低于trendLookback周期前的SMA5
upTrend = smaTrend > smaTrend[trendLookback]    // 当前SMA5高于trendLookback周期前的SMA5

// 价格与SMA60的关系
priceAboveSMA = close[1] > sma60[1]  // 前期价格在SMA60上方
priceBelowSMA = close[1] < sma60[1]  // 前期价格在SMA60下方

// 价格回踩或突破SMA60的条件(放宽容差)
tolerance = sma60 * touchTolerance / 100  // 计算容差范围
priceTouchSMADown = close <= sma60 + tolerance and close[1] > sma60[1] - tolerance  // 价格从上方回踩SMA60(允许容差)
priceTouchSMAUp = close >= sma60 - tolerance and close[1] < sma60[1] + tolerance    // 价格从下方突破SMA60(允许容差)

// 蜡烛颜色和收盘价条件
isGreenCandle = close > open  // 绿色蜡烛(阳线)
isRedCandle = close < open    // 红色蜡烛(阴线)
closeAboveSMA = close > sma60 // 收盘价高于SMA60
closeBelowSMA = close < sma60 // 收盘价低于SMA60

// 使用变量记录回踩/突破状态及等待周期
var bool buySetup = false
var bool sellSetup = false
var int buyWaitCount = 0
var int sellWaitCount = 0

// 检查是否满足回踩/突破条件
if priceAboveSMA and downTrend and priceTouchSMADown and signalLine > 0
    buySetup := true
    buyWaitCount := 0
else if buySetup
    buyWaitCount := buyWaitCount + 1

if priceBelowSMA and upTrend and priceTouchSMAUp and signalLine < 0
    sellSetup := true
    sellWaitCount := 0
else if sellSetup
    sellWaitCount := sellWaitCount + 1

// 重置状态:如果等待超过 waitCandleLimit 根蜡烛仍未满足条件
if buyWaitCount > waitCandleLimit
    buySetup := false
    buyWaitCount := 0

if sellWaitCount > waitCandleLimit
    sellSetup := false
    sellWaitCount := 0

// 买入信号:回踩后1到waitCandleLimit根绿色蜡烛收盘价高于SMA60
buySignal = buySetup and isGreenCandle and closeAboveSMA and buyWaitCount <= waitCandleLimit

// 卖出信号:突破后1到waitCandleLimit根红色蜡烛收盘价低于SMA60
sellSignal = sellSetup and isRedCandle and closeBelowSMA and sellWaitCount <= waitCandleLimit

// 绘制SMA60线
plot(series=sma60, title="SMA60", color=color.new(color.blue, 0))
// 可选:绘制SMA5线(用于调试趋势判断)
plot(series=smaTrend, title="SMA5", color=color.new(color.orange, 0), style=plot.style_line, linewidth=1)

// 绘制买卖信号
plotshape(series=buySignal, title="Buy", location=location.belowbar, color=color.new(color.green, 0), style=shape.triangleup, size=size.small)
plotshape(series=sellSignal, title="Sell", location=location.abovebar, color=color.new(color.red, 0), style=shape.triangledown, size=size.small)

// 可选:显示MACD数值(在副图中)
plot(series=macdLine, title="MACD", color=color.new(color.red, 0), display=display.pane)
plot(series=signalLine, title="Signal", color=color.new(color.yellow, 0), display=display.pane)
plot(series=0, title="Zero Line", color=color.new(color.gray, 0), display=display.pane)
还没收到回复