二次探底选股公式:确认底部结构,提高反弹成功率
代码介绍
以下代码由今日美股网(www.TodayUSStock.com)代码学院提供,,以下是用于识别股票形成“二次探底”形态的选股公式。这种形态通常意味着股价在形成低点后又一次测试低点,但未能跌破前低,这可能预示着即将到来的反弹。本公式通过检测价格的双底形态来选股。
代码及加载方法
同花顺
// 定义底部价位 LOW1:=LLV(LOW,30); // 过去30天最低价 LOW2:=LLV(LOW,15); // 过去15天最低价 // 检测二次探底 DOUBLEBOTTOM:=LOW2>LOW1 AND LOW2<=LOW1*1.02; // 第二次低点略高于或等于第一次低点 // 确认反弹 REBOUND:=CLOSE>MA(CLOSE,5); // 收盘价高于5日均线 // 选股条件 STOCK:=DOUBLEBOTTOM AND REBOUND; // 返回结果 RETURN STOCK;
加载方法: 将代码复制粘贴到同花顺的"选股公式编辑器"中,命名为"二次探底选股",然后保存并运行。
东方财富
// 定义底部价位 BOTTOM1:=LLV(LOW,30); // 过去30天最低价 BOTTOM2:=LLV(LOW,15); // 过去15天最低价 // 检测二次探底 DB:=BOTTOM2>BOTTOM1 AND BOTTOM2<=BOTTOM1*1.02; // 确认反弹 REB:=CLOSE>MA(CLOSE,5); // 收盘价高于5日均线 // 选股条件 SELECT:=DB AND REB; // 返回结果 RETURN SELECT;
加载方法: 复制代码到东方财富通"自定义指标"编辑器中,保存并应用到选股条件中。
通达信
// 定义底部价位 LOWEST_30:=LLV(LOW,30); // 过去30天最低价 LOWEST_15:=LLV(LOW,15); // 过去15天最低价 // 检测二次探底 DOUBLE_BOTTOM:=LOWEST_15>LOWEST_30 AND LOWEST_15<=LOWEST_30*1.02; // 确认反弹 REBOUND:=CLOSE>MA(CLOSE,5); // 收盘价高于5日均线 // 选股条件 STOCK_SELECT:=DOUBLE_BOTTOM AND REBOUND; // 返回结果 RETURN STOCK_SELECT;
加载方法: 在通达信软件中,进入"公式管理器",选择"新建公式",粘贴代码后保存并使用。
大智慧
// 定义底部价位 BOTTOM_30:=LLV(LOW,30); // 过去30天最低价 BOTTOM_15:=LLV(LOW,15); // 过去15天最低价 // 检测二次探底 DB:=BOTTOM_15>BOTTOM_30 AND BOTTOM_15<=BOTTOM_30*1.02; // 确认反弹 REB:=CLOSE>MA(CLOSE,5); // 收盘价高于5日均线 // 选股条件 STOCK_SELECT:=DB AND REB; // 返回结果 RETURN STOCK_SELECT;
加载方法: 进入大智慧的"指标管理",创建新指标,粘贴代码后保存使用。
MetaStock
// 定义底部价位 LOW1:=LLV(LOW,30); // 过去30天最低价 LOW2:=LLV(LOW,15); // 过去15天最低价 // 检测二次探底 DOUBLEBOTTOM:=LOW2>LOW1 AND LOW2<=LOW1*1.02; // 确认反弹 REBOUND:=CLOSE>Mov(CLOSE,5,S); // 收盘价高于5日简单移动平均 // 选股条件 STOCK:=DOUBLEBOTTOM AND REBOUND; // 返回结果 RETURN STOCK;
加载方法: 在MetaStock中,进入"Indicator Builder",新建指标,输入代码并保存。
NinjaTrader
using System; using NinjaTrader.NinjaScript; public class DoubleBottomSelection : Indicator { protected override void OnStateChange() { if (State == State.SetDefaults) { Description = "Double Bottom Stock Selection"; Name = "DoubleBottomSelection"; Calculate = Calculate.OnBarClose; IsOverlay = false; IsSuspendedWhileInactive = true; } } protected override void OnBarUpdate() { double low30 = MIN(LOW, 30)[0]; // 过去30天最低价 double low15 = MIN(LOW, 15)[0]; // 过去15天最低价 bool doubleBottom = low15 > low30 && low15 SMA(CLOSE, 5)[0]; // 收盘价高于5日简单移动平均 PlotNewValue("StockSelect", doubleBottom && rebound ? 1 : 0); } }
加载方法: 打开NinjaTrader,进入"NinjaScript Editor",新建Indicator,粘贴代码并编译。
eSignal
// 定义底部价位 LOW1:=LLV(LOW,30); // 过去30天最低价 LOW2:=LLV(LOW,15); // 过去15天最低价 // 检测二次探底 DOUBLEBOTTOM:=LOW2>LOW1 AND LOW2<=LOW1*1.02; // 确认反弹 REBOUND:=CLOSE>MA(CLOSE,5); // 收盘价高于5日简单移动平均 // 选股条件 STOCK:=DOUBLEBOTTOM AND REBOUND; // 返回结果 RETURN STOCK;
加载方法: 在eSignal中,进入"Formula Editor",新建公式,粘贴代码并保存。
TradingView
//@version=4 study("Double Bottom Selection", shorttitle="DBSelect", overlay=false) // 定义底部价位 low30 = lowest(low, 30) // 过去30天最低价 low15 = lowest(low, 15) // 过去15天最低价 // 检测二次探底 doubleBottom = low15 > low30 and low15 sma(close, 5) // 收盘价高于5日简单移动平均 // 选股条件 stockSelect = doubleBottom and rebound // 返回结果 plotshape(stockSelect, title="Stock Selection", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
加载方法: 在TradingView中,点击图表右上角的"Pine Editor",新建脚本,粘贴代码后保存并应用到图表。
MetaTrader 4/5
//+------------------------------------------------------------------+ //| Double Bottom 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 low30 && low15 iMA(NULL,0,5,MODE_SMA,PRICE_CLOSE,i)) { ExtMapBuffer[i] = Low[i] - 20 * Point; } else { ExtMapBuffer[i] = EMPTY_VALUE; } } return(rates_total); }
加载方法: 在MetaTrader中,进入"MetaEditor",新建Expert Advisor或Indicator,粘贴代码,编译并加载到图表。
参数说明
参数 | 意义 |
---|---|
LLV(LOW,30) | 获取过去30天的最低价,用于确认第一个底部 |
LLV(LOW,15) | 获取过去15天的最低价,用于确认第二次探底 |
LOW2>LOW1 AND LOW2<=LOW1*1.02 | 判断第二次低点是否高于或接近第一次低点 |
CLOSE>MA(CLOSE,5) | 确认价格是否开始反弹,收盘价高于5日移动平均 |
针对不同产品推荐参数
产品类型 | 推荐参数 | 理由 |
---|---|---|
股票 | LLV(30,15), MA(5) | 股票市场的底部确认通常需要较长时间,30和15日周期适合 |
期货 | LLV(15,7), MA(3) | 期货市场反应快,较短周期更能反映市场变化 |
外汇 | LLV(45,20), MA(10) | 外汇市场波动较小,可能需要更长的周期来确认底部 |
加密货币 | LLV(21,10), MA(7) | 加密货币市场波动大,需较短周期捕捉反弹信号 |
优点和缺点
优点 | 缺点 |
---|---|
有效识别可能的反弹点,增加交易成功率 | 可能会错过一些快速反弹的股票,因为需要双底确认 |
适用于各种市场和软件 | 二次探底形态本身不保证反弹,需结合其他分析 |
简单易用,减少人工判断误差 | 在市场趋势强烈时,可能产生假信号 |
使用建议
此选股公式应与其他分析方法结合使用,如成交量分析、基本面分析等。建议在市场震荡或底部区域使用,避免在趋势市场中过度依赖。在使用时,设置合理的止损点以管理风险,进行回测来评估公式的有效性。
来源:今日美股网