突破回踩确认选股:降低假突破的风险
代码介绍
以下代码由今日美股网(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
来源:今日美股网