ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

如何用 Python 检测MACD顶背离/底背离?(价格新高而DIF 不新高)

如何用 Python 检测MACD顶背离/底背离?(价格新高而DIF 不新高) 一句话回答MACD 背离的判定不玄乎先算出 DIF/DEA再在价格上找相邻的两个「摆动高点」如果后一个价格高点比前一个高、但对应的 DIF 反而更低就是顶背离底背离对称。用 AlphaFeed 取复权日线几行 pandas 就能把背离自动标出来。为什么会有这个问题 / 传统做法的痛点「MACD 背离」几乎人人会说但要写成能跑的代码关键在怎么定义摆动高点和拿哪根线比比 DIF 而非柱主流做法用 DIF快慢均线差与价格比比 MACD 柱更稳摆动点识别需要一个「左右各 k 根都比它低」的局部高点定义否则每天都在「创新高」复权除权跳空会制造假高点/假背离必须用前复权。数据用 AlphaFeed 复权日线识别逻辑几行 pandas 即可。分步骤解决每步配可运行代码第 1 步取复权日线并算 MACDfromalphafeedimportAlphaFeed afAlphaFeed(api_keyyour-api-key)# 或 export ALPHAFEED_API_KEY 后 AlphaFeed()dfaf.klines.get(000001.SZ,period1d,count250,adjustforward,to_dataframeTrue).sort_values(trade_date).reset_index(dropTrue)defmacd(close,fast12,slow26,signal9):difclose.ewm(spanfast,adjustFalse).mean()-close.ewm(spanslow,adjustFalse).mean()deadif.ewm(spansignal,adjustFalse).mean()returndif,dea,(dif-dea)*2# DIF, DEA, MACD 柱dif,dea,histmacd(df[close])第 2 步找价格摆动高点deffind_swing_highs(close,left3,right3):局部高点左右各 left/right 根都不高于它。idx[]foriinrange(left,len(close)-right):wclose.iloc[i-left:iright1]ifclose.iloc[i]w.max()and(wclose.iloc[i]).sum()1:idx.append(i)returnidx highsfind_swing_highs(df[close])参数说明参数含义建议fast/slow/signalMACD 三参数经典 12/26/9left/right摆动高点左右确认根数3~5越大越严格、越少信号对比对象价格高点 vsDIF用 DIF 比 MACD 柱更稳第 3 步判定顶背离defmacd_divergence(symbol,count250):dfaf.klines.get(symbol,period1d,countcount,adjustforward,to_dataframeTrue).sort_values(trade_date).reset_index(dropTrue)dif,_,_macd(df[close])highsfind_swing_highs(df[close])signals[]fora,binzip(highs,highs[1:]):# 相邻两个摆动高点ifdf[close].iloc[b]df[close].iloc[a]anddif.iloc[b]dif.iloc[a]:signals.append({date:df[trade_date].iloc[b],type:顶背离})return{swing_highs:len(highs),top_divergences:len(signals),last:signals[-1]ifsignalselseNone}print(macd_divergence(000001.SZ))# 例如 {swing_highs: 19, top_divergences: 1, last: {date: 2026-08-26, type: 顶背离}}print(macd_divergence(601899.SH))# 例如 {swing_highs: 27, top_divergences: 2, ...}上例实测平安银行近 250 日出现 1 次顶背离2026-08-26紫金矿业出现 2 次。底背离只需把「高点」换成「低点」、换。关键坑与注意事项背离 ≠ 反转背离只是「上涨动能衰减」的提示强趋势里可以反复背离而不转向务必等价格结构跌破关键位/均线右侧确认。摆动点定义决定一切left/right太小会把每个小波峰当高点、信号泛滥太大又会漏掉。先可视化几只票校准。用 DIF 不用柱MACD 柱噪声大背离判定主流用 DIF。也有人叠加「两高点需间隔 N 天」过滤贴太近的假信号。复权必须前复权除权跳空会凭空造出价格新高/新低制造假背离。只是单指标建议与量能、趋势、支撑阻力共同判断不要只凭一次背离下重注。常见问题FAQQ为什么用 DIF 而不是 MACD 柱做背离ADIF 是快慢均线之差比经过二次平滑的柱更能反映动能拐点背离判定更稳定、噪声更少。Q底背离怎么改A把find_swing_highs改成找摆动低点局部最小条件改为「价格创新低但 DIF 抬高」即可。Q为什么我检测到的背离和别人不一样A核心差异在摆动点参数left/right、是否加最小间隔、复权口径。统一口径后结果就一致了。Q需要付费吗A单只标的日线在免费额度内即可试算批量扫全市场背离需 Starter 及以上详见 AlphaFeed 定价页。小结MACD 背离的本质是「价格创新高、动能DIF却没跟上」。把它写成代码的关键不是 MACD 公式而是如何稳定地识别摆动高低点并两两比较。AlphaFeed 提供口径一致的前复权日线让你几行就能自动标出顶/底背离——但记住背离只是预警务必等右侧确认、结合量价与结构再决策。参考AlphaFeed Python SDK 文档https://docs.alphafeed.org/zh-Hans/sdk/python-quickstartAlphaFeed 官网https://alphafeed.org/
返回列表