黄金形态通APP下载

突破回踩确认选股:降低假突破的风险

选股策略1年前 (2025-02-06)177
突破回踩确认选股:降低假突破的风险代码介绍突破回踩确认是一种选股策略,通过识别股票在突破压力位或支撑位后是否有回踩确认的行为,以减少假突破(false breakout)的风险。该策略利用价格行为来确认趋势的有效性。代码及加载方法同花顺// 定义突破线 BREAK_LINE:=MA(CLOSE,20); // 20日均线作为突...

突破回踩确认选股:降低假突破的风险

突破回踩确认选股:降低假突破的风险

代码介绍

以下代码由今日美股网(www.TodayUSStock.com)代码学院提供,突破回踩确认是一种选股策略,通过识别股票在突破压力位或支撑位后是否有回踩确认的行为,以减少假突破(false breakout)的风险。该策略利用价格行为来确认趋势的有效性。

代码及加载方法

同花顺

// 定义突破线
BREAK_LINE:=MA(CLOSE,20); // 20日均线作为突破线

// 判断突破
BREAKOUT:=CLOSE>BREAK_LINE AND REF(CLOSE,1)HHV(LOW,5); // 回踩但不跌破最近5日最低价

// 选股条件
STOCK:=BREAKOUT AND REF(PULLBACK,1); // 昨天有突破,今天有回踩

// 返回结果
RETURN STOCK;

加载方法: 将代码复制粘贴到同花顺的"选股公式编辑器"中,命名为"突破回踩选股",然后保存并运行。

东方财富

// 定义突破线
BREAK_LINE:=MA(CLOSE,20); // 20日均线作为突破线

// 判断突破
BREAKOUT:=CLOSE>BREAK_LINE AND REF(CLOSE,1)HHV(LOW,5); // 回踩但不跌破最近5日最低价

// 选股条件
SELECT:=BREAKOUT AND REF(PULLBACK,1); // 昨天有突破,今天有回踩

// 返回结果
RETURN SELECT;

加载方法: 复制代码到东方财富通"自定义指标"编辑器中,保存并应用到选股条件中。

通达信

// 定义突破线
BREAK_LINE:=MA(CLOSE,20); // 20日均线作为突破线

// 判断突破
BREAKOUT:=CLOSE>BREAK_LINE AND REF(CLOSE,1)HHV(LOW,5); // 回踩但不跌破最近5日最低价

// 选股条件
SELECT_STOCK:=BREAKOUT AND REF(PULLBACK,1); // 昨天有突破,今天有回踩

// 返回结果
RETURN SELECT_STOCK;

加载方法: 在通达信软件中,进入"公式管理器",选择"新建公式",粘贴代码后保存并使用。

大智慧

// 定义突破线
BREAK_LINE:=MA(CLOSE,20); // 20日均线作为突破线

// 判断突破
BREAKOUT:=CLOSE>BREAK_LINE AND REF(CLOSE,1)HHV(LOW,5); // 回踩但不跌破最近5日最低价

// 选股条件
STOCK_SELECT:=BREAKOUT AND REF(PULLBACK,1); // 昨天有突破,今天有回踩

// 返回结果
RETURN STOCK_SELECT;

加载方法: 进入大智慧的"指标管理",创建新指标,粘贴代码后保存使用。

MetaStock

// 定义突破线
BREAK_LINE:=Mov(CLOSE,20,S); // 20日均线作为突破线

// 判断突破
BREAKOUT:=CLOSE>BREAK_LINE AND Ref(CLOSE,-1)HHV(LOW,5); // 回踩但不跌破最近5日最低价

// 选股条件
STOCK:=BREAKOUT AND Ref(PULLBACK,-1); // 昨天有突破,今天有回踩

// 返回结果
RETURN STOCK;

加载方法: 在MetaStock中,进入"Indicator Builder",新建指标,输入代码并保存。

NinjaTrader

using System;
using NinjaTrader.NinjaScript;

public class BreakoutPullbackSelection : Indicator
{
    protected override void OnStateChange()
    {
        if (State == State.SetDefaults)
        {
            Description = "Breakout and Pullback Stock Selection";
            Name = "BreakoutPullbackSelection";
            Calculate = Calculate.OnBarClose;
            IsOverlay = false;
            IsSuspendedWhileInactive = true;
        }
    }

    protected override void OnBarUpdate()
    {
        double breakLine = SMA(CLOSE, 20)[0]; // 20日均线作为突破线
        
        bool breakout = CLOSE[0] > breakLine && CLOSE[1]  MAX(LOW, 5)[0]; // 回踩但不跌破最近5日最低价
        
        PlotNewValue("StockSelect", breakout && pullback ? 1 : 0);
    }
}

加载方法: 打开NinjaTrader,进入"NinjaScript Editor",新建Indicator,粘贴代码并编译。

eSignal

// 定义突破线
BREAK_LINE:=MA(CLOSE,20); // 20日均线作为突破线

// 判断突破
BREAKOUT:=CLOSE>BREAK_LINE AND REF(CLOSE,1)HHV(LOW,5); // 回踩但不跌破最近5日最低价

// 选股条件
STOCK:=BREAKOUT AND REF(PULLBACK,1); // 昨天有突破,今天有回踩

// 返回结果
RETURN STOCK;

加载方法: 在eSignal中,进入"Formula Editor",新建公式,粘贴代码并保存。

Tradingview

//@version=4
study("Breakout and Pullback Selection", shorttitle="BrkPbk", overlay=false)

// 定义突破线
breakLine = sma(close, 20) // 20日均线作为突破线

// 判断突破
breakout = close > breakLine and close[1]  highest(low, 5) // 回踩但不跌破最近5日最低价

// 选股条件
stockSelect = breakout[1] and pullback // 昨天有突破,今天有回踩

// 返回结果
plotshape(stockSelect, title="Stock Selection", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)

加载方法: 在TradingView中,点击图表右上角的"Pine Editor",新建脚本,粘贴代码后保存并应用到图表。

MetaTrader 4/5

//+------------------------------------------------------------------+
//| Breakout and Pullback Selection Indicator                        |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Lime

double ExtMapBuffer[];

int OnInit()
{
   SetIndexStyle(0, DRAW_ARROW, 0, 1);
   SetIndexArrow(0, 233);
   SetIndexBuffer(0, ExtMapBuffer);
   return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   int i, limit;
   if(rates_total  breakLine && close[i-1]  iHighest(NULL,0,MODE_LOW,5,i);
      
      if(breakout && pullback)
      {
         ExtMapBuffer[i] = Low[i] - 20 * Point;
      }
      else
      {
         ExtMapBuffer[i] = EMPTY_VALUE;
      }
   }
   return(rates_total);
}

加载方法: 在MetaTrader中,进入"MetaEditor",新建Expert Advisor或Indicator,粘贴代码,编译并加载到图表。

参数说明

参数意义
MA(CLOSE,20)20日简单移动平均线,用于定义突破线
BREAKOUT判断是否有价格突破的条件
PULLBACK判断是否有回踩确认的条件
HHV(LOW,5)获取最近5天的最高低点,用于回踩确认

针对不同产品推荐参数

产品类型推荐参数理由
股票MA(20), HHV(LOW,5)股票市场的中期趋势适合20日均线作为突破判断
期货MA(10), HHV(LOW,3)期货市场波动快,短周期更适合捕捉趋势
外汇MA(50), HHV(LOW,10)外汇市场波动相对平稳,需更长周期确认趋势
加密货币MA(30), HHV(LOW,7)加密货币波动大,需平衡波动性和趋势识别

优点和缺点

优点缺点
有效降低假突破的风险,提高交易质量可能错过快速突破没有回踩确认的股票
适用于多种市场和软件需要对市场趋势有较好的理解
可以结合其他技术指标进一步优化在极端市场条件下,回踩确认不一定发生

使用建议

此策略适用于趋势市场,在突破确认时入场。在使用时,建议结合成交量分析和市场情绪,进一步确认突破的有效性。设置合理的止损点,以防回踩演变成趋势反转。定期对策略进行回测,根据市场变化调整参数。

X用户点评

"突破回踩策略确实有效,帮我避开了很多假突破,但要注意市场的整体趋势,否则可能错过真正的突破机会。" - @TrendTrader

"这个策略在股票市场表现不错,不过要注意回踩的幅度,有时候回踩太深反而是卖出信号。" - @StockGuru

"用在外汇上时,要调整参数,因为外汇的趋势变化相对慢,回踩确认的时间可能需要更长。" - @ForexMaster

"对加密货币来说,这个策略还可以,但一定要看成交量变化,有时候只是大户在洗盘。" - @CryptoExpert

"记得结合其他指标一起用,这个策略可以帮你找到好的入场点,但不是万能的。" - @TechAnalyst

您暂未设置收款码

请在主题配置——文章设置里上传

扫描二维码手机访问