)
在量化 交易与算法开发领域FVGFair Value Gap公允价值缺口 正在成为一个越来越热门的概念。它源于Smart Money ConceptsSMC与ICT交易方法论代表价格在快速波动中留下的“未被交易的空白区域”。很多开发者常陷入“概念我都懂但代码不会写”的困境。今天我们就从代码实现的角度聊聊FVG选择与编程中那些你应该知道的常识。一、到底什么是FVG从K线图上看FVG是一个三根K线形成的形态。当中间K线的最高价/最低价与前后两根K线的高低点完全不重叠时就形成了一个价格缺口。判断逻辑很清晰· 看涨FVG当前K线最低价 前二根K线最高价价格向上跳空· 看跌FVG当前K线最高价 前二根K线最低价价格向下跳空这个缺口代表市场在那个价位上存在“订单失衡”——买方或卖方过于强势导致大量订单未能成交。价格往往会在后续回补或称“填充”这些缺口因此FVG常常成为潜在的支撑/阻力区域。二、编程实现核心是“三根K线”的选择把FVG翻译成代码本质上就是一个模式匹配问题。以下是用Python实现的FVG检测核心逻辑defdetect_fvg(df):检测Fair Value Gapfvgs[]foriinrange(1,len(df)-1):prev_highdf[High].iloc[i-1]prev_lowdf[Low].iloc[i-1]curr_highdf[High].iloc[i]curr_lowdf[Low].iloc[i]next_highdf[High].iloc[i1]next_lowdf[Low].iloc[i1]# 看涨FVG: 前一根高点 后一根低点ifprev_highnext_low:fvgs.append({type:bullish,top:next_low,# 缺口上沿bottom:prev_high,# 缺口下沿index:i})# 看跌FVG: 前一根低点 后一根高点elifprev_lownext_high:fvgs.append({type:bearish,top:prev_low,bottom:next_high,index:i})returnfvgs实际开发中你需要注意几个关键选择数据结构的选型推荐使用Pandas或Polars处理OHLC数据配合shift()函数可以大幅简化代码。连续FVG的处理当多个FVG连续出现时是否将它们合并 为一个更大的区域这是一个重要的设计选择。多时间框架的支持高时间框架的FVG往往比低时间框架的更具参考价值。建议在架构设计时就把“多周期FVG检测”作为一个可配置选项。填充状态的追踪一个FVG被“填充”价格回到缺口区域内后它的参考价值会发生变化。需要在数据中记录每个FVG的filled状态。三、FVG选择的进阶常识FVG也分强弱——不是所有缺口都值得同等对待· 普通FVG纯价格失衡强度一般· IFVG反向FVG被填充后发生反转的FVG强度更高· Order Block FVG当FVG与订单块区域重合时参考价值大幅提升信号质量可以量化。你可以为每个FVG计算一个质量评分综合考量缺口大小、成交量配合、是否与Order Block重合等因素然后只选择评分高于阈值的FVG进行交易。切记FVG检测本身并不复杂真正的挑战在于多周期上下文解读——同一个FVG在1分钟图和1小时图上意义完全不同。四、写在最后从概念到代码FVG的实现门槛其实不高。但“写出来”和“写好”之间隔着的是对数据结构、算法 效率和交易逻辑的深入理解。希望这篇文章能帮你少走一些弯路。