在量化 交易与算法开发领域,FVG(Fair Value Gap,公允价值缺口)
2026/8/25 11:40:37 网站建设 项目流程

在量化 交易与算法开发领域,FVG(Fair Value Gap,公允价值缺口) 正在成为一个越来越热门的概念。它源于Smart Money Concepts(SMC)与ICT交易方法论,代表价格在快速波动中留下的“未被交易的空白区域”。

很多开发者常陷入“概念我都懂,但代码不会写”的困境。今天,我们就从代码实现的角度,聊聊FVG选择与编程中那些你应该知道的常识。

一、到底什么是FVG?

从K线图上看,FVG是一个三根K线形成的形态。当中间K线的最高价/最低价,与前后两根K线的高低点完全不重叠时,就形成了一个价格缺口。

判断逻辑很清晰:

· 看涨FVG:当前K线最低价 > 前二根K线最高价(价格向上跳空)
· 看跌FVG:当前K线最高价 < 前二根K线最低价(价格向下跳空)

这个缺口代表市场在那个价位上存在“订单失衡”——买方或卖方过于强势,导致大量订单未能成交。价格往往会在后续回补(或称“填充”)这些缺口,因此FVG常常成为潜在的支撑/阻力区域。

二、编程实现:核心是“三根K线”的选择

把FVG翻译成代码,本质上就是一个模式匹配问题。以下是用Python实现的FVG检测核心逻辑:

defdetect_fvg(df):"""检测Fair Value Gap"""fvgs=[]foriinrange(1,len(df)-1):prev_high=df['High'].iloc[i-1]prev_low=df['Low'].iloc[i-1]curr_high=df['High'].iloc[i]curr_low=df['Low'].iloc[i]next_high=df['High'].iloc[i+1]next_low=df['Low'].iloc[i+1]# 看涨FVG: 前一根高点 < 后一根低点ifprev_high<next_low:fvgs.append({'type':'bullish','top':next_low,# 缺口上沿'bottom':prev_high,# 缺口下沿'index':i})# 看跌FVG: 前一根低点 > 后一根高点elifprev_low>next_high:fvgs.append({'type':'bearish','top':prev_low,'bottom':next_high,'index':i})returnfvgs

实际开发中你需要注意几个关键选择:

  1. 数据结构的选型:推荐使用Pandas或Polars处理OHLC数据,配合shift()函数可以大幅简化代码。

  2. 连续FVG的处理:当多个FVG连续出现时,是否将它们合并 为一个更大的区域?这是一个重要的设计选择。

  3. 多时间框架的支持:高时间框架的FVG往往比低时间框架的更具参考价值。建议在架构设计时就把“多周期FVG检测”作为一个可配置选项。

  4. 填充状态的追踪:一个FVG被“填充”(价格回到缺口区域内)后,它的参考价值会发生变化。需要在数据中记录每个FVG的filled状态。

三、FVG选择的进阶常识

FVG也分强弱——不是所有缺口都值得同等对待:

· 普通FVG:纯价格失衡,强度一般
· IFVG(反向FVG):被填充后发生反转的FVG,强度更高
· Order Block + FVG:当FVG与订单块区域重合时,参考价值大幅提升

信号质量可以量化。你可以为每个FVG计算一个质量评分,综合考量缺口大小、成交量配合、是否与Order Block重合等因素,然后只选择评分高于阈值的FVG进行交易。

切记:FVG检测本身并不复杂,真正的挑战在于多周期上下文解读——同一个FVG在1分钟图和1小时图上意义完全不同。

四、写在最后

从概念到代码,FVG的实现门槛其实不高。但“写出来”和“写好”之间,隔着的是对数据结构、算法 效率和交易逻辑的深入理解。希望这篇文章能帮你少走一些弯路。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询