DSP 的本质是“价格减去其趋势”,从而剥离出纯周期波动 。它像一面滤镜,把长期趋势的光谱过滤掉,只留下市场节奏的“心跳”。

01

核心原理:把价格拆成“趋势+周期” 任何价格序列都可以被拆解为:Price = Trend + Cycle + Noise DSP 用 EMA 作为趋势代理,直接做减法:DSP = Close − EMA(Close, N) 结果是一条围绕 0 轴震荡的曲线,正值代表价格高于趋势(潜在超买),负值代表价格低于趋势(潜在超卖)。

02

设计要点 周期 N:常用 14 或 20,越大越平滑,越小越敏感。 0 轴:多空分水岭,DSP 上穿 0 轴视为多头信号,下穿为空头信号。 极值带:可叠加 ± 通道做超买超卖。

03

通达信完整源码 通达信公式语言 { 参数 } N:=14;               { 周期,可调 } M:=3;                { 信号平滑 }  { 计算 EMA } EMA1:=EMA(C,N);  { 计算 DSP } DSP:=C - EMA1;  { 信号线(可选) } DSP_MA:=MA(DSP,M);  { 画线 } DSP, COLORWHITE; DSP_MA, COLORYELLOW;  { 0 轴 } 0, COLORGRAY;  { 超买超卖参考线(示例 ±2%) } UPPER:  STD(DSP,100)*2, COLORRED; LOWER: -STD(DSP,100)*2, COLORGREEN;  { 图标提示 } DRAWICON(CROSS(DSP,0),LOWER,1);      { 金叉 } DRAWICON(CROSS(0,DSP),UPPER,2);      { 死叉 }

04

实战用法速查表
场景 DSP 形态 交易提示
趋势启动 DSP 上穿 0 轴 顺势做多
趋势衰竭 DSP 下穿 0 轴 减仓或做空
震荡反转 DSP 触及 ± 后折返 高抛低吸
背离确认 价格新高,DSP 不新高 警惕见顶
参数优化小技巧 在通达信“公式管理器”里把 N 设为可调参数: N:PARAM(1,100,14); 然后在 K 线图上右键→“调整指标参数”,即可实时滑动观察不同周期下的 DSP 形态,找到最适合当前品种的周期。 灵光一闪 把 DSP 当作“价格的呼吸频率”。当呼吸变浅(DSP 靠近 0),行情往往酝酿突破;当呼吸急促(DSP 远离 0),趋势可能随时反转。 DSP叠加布林带→ DSP与MACD共振→ python原代码 # -*- coding: utf-8 -*-# Detrended Synthetic Price (DSP)from pandas_ta_classic.overlap.ema import emafrom pandas_ta_classic.utils import get_offset, verify_seriesdef dsp(close, length=None, offset=None, **kwargs):    """Indicator: Detrended Synthetic Price (DSP)"""    # Validate arguments    length = int(length) if length and length > 0 else 14    close = verify_series(close, length)    offset = get_offset(offset)    if close is None:        return    # Calculate Result    # Calculate EMA    ema_value = ema(close, length=length)    # Detrend by subtracting EMA    dsp = close - ema_value    # Offset    if offset != 0:        dsp = dsp.shift(offset)    # Handle fills    if "fillna" in kwargs:        dsp.fillna(kwargs["fillna"], inplace=True)    if "fill_method" in kwargs:        if kwargs["fill_method"] == "ffill":            dsp.ffill(inplace=True)        elif kwargs["fill_method"] == "bfill":            dsp.bfill(inplace=True)    # Name and Categorize it    dsp.name = f"DSP_{length}"    dsp.category = "cycles"    return dspdsp.__doc__ = """Detrended Synthetic Price (DSP)Detrended Synthetic Price removes the trend component from price data to revealthe cyclical component. It's useful for cycle analysis and identifying periodicpatterns in price movement.Sources:    https://www.mesasoftware.com/papers/TheInverseFisherTransform.pdf    Cycle Analytics for Traders by John F. EhlersCalculation:    Default Inputs:        length=14    EMA = EMA(close, length)    DSP = close - EMAArgs:    close (pd.Series): Series of 'close's    length (int): The EMA period. Default: 14    offset (int): How many periods to offset the result. Default: 0Kwargs:    fillna (value, optional): pd.DataFrame.fillna(value)    fill_method (value, optional): Type of fill methodReturns:    pd.Series: New feature generated."""

追加内容

本文作者可以追加内容哦 !