FVG结构流动性模板_1
FVG + 结构 + 流动性确认 策略模板
1. 策略理念
- 核心目标:在伦敦/纽约活跃时段,捕捉“结构延续或反转 + FVG 回补 + 流动性扫单”形成的高质量入场。
- 基础假设:价格在打破流动性区域后,常返回未成交区域(Fair Value Gap,FVG)进行填补,再沿结构方向延续。
- 交易框架:先通过市场结构判定方向 → 等待流动性扫单(外部流动性) → 用 FVG 作为入场触发 → 结合时间过滤与风险模板执行。
2. 信号组件
| 组件 | 识别维度 | 判定逻辑 | 指标/函数占位 |
|---|---|---|---|
| 市场结构 | HH/HL, LH/LL | 最近两对摆动点;若 HH+HL → 看多,LL+LH → 看空,其余震荡 | DetectSwings, UpdateStructureBias |
| FVG(公平价值缺口) | 3K 价格差 | 多头:Low[1] > High[2] 且 Low[1] > High[0];空头反向,记录缺口上下沿 |
ScanFVG, TrackActiveFVGs |
| 流动性扫单 | 外部流动性 | 当前摆动突破前高/前低并迅速回落,Tick 量放大或实体长影线确认 | DetectLiquiditySweep |
| 时间过滤 | 交易时段 | 伦敦 08:00–11:30、纽约 13:30–16:30(服务器时间可配置) | IsWithinSession |
| 风险与执行 | 手数/止损 | 缺口另一端或结构点作为 SL,按账户风险百分比计算手数 | CalculatePositionSize |
3. 运行流程(逐 K 条件)
- 更新结构:扫描新 Bar 是否形成摆动高/低,刷新结构方向缓冲。
- 检测扫单:若价格突破最近外部结构点(前高/前低)后快速回撤,标记为流动性事件。
- 记录 FVG:在扫单触发后,查找出现的 FVG,并登记为有效候选(带时间戳与结构方向)。
- 时间过滤:仅当当前时间落在可交易时段窗内才继续评估。
- 入场确认:价格回踩至有效 FVG 内部(可用 50% 线或缺口边缘)且结构方向一致时生成信号。
- 风险/仓位:根据预设风险百分比与 SL 距离计算手数,输出到面板或全局变量。
- 信号输出:在图表上标记入场/止损/目标价位,并写入缓冲以供 EA 或统计模块调用。
4. MT4 实现规划
4.1 数据结构
struct SwingPoint { datetime time; double price; bool isHigh; }struct FVGSlot { datetime startTime; double upper; double lower; int direction; bool isActive; }struct LiquidityEvent { datetime time; double level; int direction; }- 队列:
SwingDeque,ActiveFVGs,LiquidityEvents控制长度。
4.2 核心函数
bool DetectSwings(int index):判断 index 是否结构摆动点。int UpdateStructureBias():返回 +1/-1/0 结构方向。bool DetectLiquiditySweep(int index):确认是否扫过外部流动性。void ScanFVG(int index):识别缺口并写入ActiveFVGs。bool ValidateSession(datetime time):匹配伦敦/纽约时间段。bool ConfirmEntry(const FVGSlot& slot):判断是否触发入场。void RenderSignal(...):绘制箭头/矩形与文本。
4.3 缺口管理
- 每次新 Bar 更新
ActiveFVGs状态:若价格完全填补则标记为失效。 - 可设置最大持有条数(如
MaxActiveFVG)避免内存膨胀。 - 可选:使用
ObjectCreate绘制矩形可视化缺口,颜色区分多空。
4.4 优化思路(FVG + 结构)
- 自适应结构深度:通过 ATR 或平均摆动范围动态调整
SwingDepth,震荡行情提高抗噪能力,趋势行情降低延迟。 - FVG 评分体系:为每个缺口打分(结构方向一致、扫单力度、缺口宽度、成交量放大权重),只保留得分高于阈值的候选。
- 多周期对齐:检测高一级周期的结构与 FVG,若同向叠加则提升信心水平,并在信号输出中标记共振等级。
- 部分回补过滤:设置缺口内关键线(如 50%、70%),只在达到深度回补时触发;浅回补可触发提示但不生成交易信号。
- 连续缺口聚合:对相邻、方向一致的多个小 FVG 进行合并,避免重复信号并凸显主要失衡区。
- 扫单确认强化:结合蜡烛形态(如长上下影、盘整假突破)或订单流代理(Tick 量、波动率突增),过滤缺乏动量的扫单。
- 时间权重:缺口存活时间越长或跨越冷清时段,降低其优先级;伦敦/纽约内快速形成的缺口给予优先。
- 回测统计闭环:在指标中记录每个缺口是否填补、时间耗时、交易盈亏,形成数据库支撑参数优化。
5. 输入参数建议
| 参数 | 默认值 | 说明 |
|---|---|---|
SwingDepth |
3 | 摆动点判定窗口 |
LiquidityLookback |
5 | 扫单检测回溯摆动数量 |
FVGMinPips |
3 | 缺口最小尺寸 |
FVGExpiryMinutes |
90 | 缺口有效期(分钟) |
SessionMode |
Custom |
时段模式:All, London, NY, Custom |
LondonSession |
08:00-11:30 |
可配置 |
NYSession |
13:30-16:30 |
可配置 |
RiskPercent |
1.0 | 单笔风险比例 |
PartialTPRatio |
1.0 | 第一目标:风险报酬倍数 |
FinalTPRatio |
2.5 | 第二目标:风险报酬倍数 |
6. 输出与接口
- 缓冲区:
EntryBuffer:入场箭头 (+1/-1)。StopBuffer:止损水平。TargetBuffer:目标价。
- 图表对象:
- FVG 矩形 + 标签(显示方向、创建时间)。
- 流动性扫单水平线(不同颜色标注)。
- 数据交换:
- 可选输出
GlobalVariableSet或FileWrite,为 EA 读取。
- 可选输出
7. 风险管理
- 止损放在 FVG 对侧或最新结构点,必要时加
BufferPips。 - 交易手数:
Lots = AccountRisk * AccountBalance / (StopLossPips * PipValue)。 - 可选:入场后若达到
PartialTPRatio,使用OrderModify推动 SL 至保本。
8. 测试与验证
- 回测流程:策略测试器 → 可视模式 → 检查结构、缺口、扫单标记是否契合实际价格行为。
- 统计维度:胜率、RR、最大连续回撤、各时段表现(伦敦 vs 纽约)。
- 参数敏感度:调整
SwingDepth、FVGMinPips、FVGExpiryMinutes寻找最稳组合。 - 数据完整性:确保历史数据包含 Tick 量(用于扫单确认)。
9. 后续开发步骤
- 与需求方确认逻辑细节、默认参数及输出形式。
- 在 MT4 中创建
FVGStructureLiquidity.mq4(指标或 EA)框架,定义输入与缓冲。 - 逐个模块编码并单元测试(结构 → FVG → 扫单 → 时间过滤)。
- 将信号与仓位管理整合,提供可视化与导出接口。
- 进行历史回测与前向测试,记录 65–80% 胜率目标是否达成。
