黄金形态通APP下载

二次探底选股:确认底部结构,提高反弹成功率

选股策略1年前 (2025-02-06)177
二次探底选股公式:确认底部结构,提高反弹成功率代码介绍以下代码由今日美股网(www.TodayUSStock.com)代码学院提供,,以下是用于识别股票形成“二次探底”形态的选股公式。这种形态通常意味着股价在形成低点后又一次测试低点,但未能跌破前低,这可能预示着即将到来的反弹。本公式通过检测价格的双底形态来选股。代码及加载方法同花顺// 定义底部价...

二次探底选股:确认底部结构,提高反弹成功率

二次探底选股公式:确认底部结构,提高反弹成功率

代码介绍

以下代码由今日美股网(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)加密货币市场波动大,需较短周期捕捉反弹信号

优点和缺点

优点缺点
有效识别可能的反弹点,增加交易成功率可能会错过一些快速反弹的股票,因为需要双底确认
适用于各种市场和软件二次探底形态本身不保证反弹,需结合其他分析
简单易用,减少人工判断误差在市场趋势强烈时,可能产生假信号

使用建议

此选股公式应与其他分析方法结合使用,如成交量分析、基本面分析等。建议在市场震荡或底部区域使用,避免在趋势市场中过度依赖。在使用时,设置合理的止损点以管理风险,进行回测来评估公式的有效性。

相关文章

您暂未设置收款码

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

扫描二维码手机访问