欢迎访问

# 机构级缠论 EA 开发文档(MT4 模拟交易版)-1

author emer | 73 人阅读 | 0 人评论 |

机构级缠论 EA 开发文档(MT4 模拟交易版)

1. 项目概述

  • 目标:在 MT4 平台上构建一套基于缠论结构、具备风险控制与可视化能力的模拟交易系统。EA 仅在图表上模拟真实交易逻辑,不发送真实订单。
  • 特点
    • 去指标化,完全基于价格结构。
    • 支持多周期结构识别(如 H4 + H1),并防止中枢飘逸。
    • 引入胜率、盈亏比、交易频率、中枢健康度评分等治理机制。
    • 通过图形对象展示结构信息,包括溢价区/折价区、流动性清扫区域以及止盈止损标识。
    • 所有交易动作仅作为模拟记录(绘图、日志),不调用 OrderSend

2. 核心理念与要点

2.1 缠论结构原则

  • 分型 → 笔 → 中枢的结构识别流程,基于已确认的 K 线(避免飘逸)。
  • 多级锚定:下级中枢需依附于上级中枢,防止跨级漂移。
  • 趋势判断:通过 HH/HL 或 LL/LH 组合确认主方向。

2.2 防飘逸机制

  • 只使用已闭合 K 线计算分型。
  • 笔与中枢一旦确认立即锁定,不回溯修改。
  • 区分历史段与实时段;实时段仅用于预警,不纳入结构确认。

2.3 三个核心参数

  • 胜率(Win Rate):统计中枢突破达到目标的成功率。
  • 盈亏比(R/R):目标距离与止损距离(基于订单流清扫区)的比值。
  • 交易频率(Trade Frequency):单位时间内有效信号次数,随中枢节奏动态调节。

2.4 中枢健康度评分

[
\text{Score} = \frac{\text{胜率} \times \text{盈亏比}}{\text{频率}} \times \text{稳定系数}
]

  • 稳定系数综合中枢持续时间、成交密度、上下级结构协同等因素。
  • Score 低于阈值时收缩策略、降低仓位或暂停交易。

2.5 订单流清扫区止损

  • 止损放在流动性清扫区外侧,而非裸高/低点。
  • 清扫区识别:上一结构极值附近的流动性堆积 + 向外延伸 3~5 个点。
  • 避免假突破扫损,仅当真实订单流失败时触发。

3. 可视化要求

3.1 溢价区 / 折价区

  • 定义:
    • 溢价区:中枢上方区域(提示价格偏高)。
    • 折价区:中枢下方区域(提示价格偏低)。
  • 显示:
    • 使用 OBJ_RECTANGLE 绘制半透明色块。
    • 建议颜色:溢价区为淡红系,折价区为淡绿系。
    • 中枢锁定后区域固定,不随价格抖动。

3.2 流动性清扫区 + 止盈止损

  • 在清扫区绘制窄矩形或横条(可用蓝紫/橙色)。
  • 当前模拟交易的止损、止盈位在该区域内加深颜色或加边框。
  • 可配合 OBJ_ARROWOBJ_TEXT 标注 “SL”/“TP”。

4. 系统模块划分

  1. 数据管理模块

    • 使用 iOpen/iHigh/iLow/iClose/iTimeiVolume 缓存多周期数据。
    • 管理历史段与实时段数据结构。
  2. 结构识别模块

    • 分型识别 → 笔生成 → 中枢检测与锁定。
    • 多周期锚定,确保下级结构受上级约束。
  3. 信号过滤模块

    • 趋势判断(HH/HL、LL/LH)。
    • 中枢突破 + 回抽确认,结合 tick 量过滤假信号。
  4. 风险控制模块

    • 基于清扫区计算止损位置。
    • 估算仓位(仅用于模拟统计,不真实下单)。
    • 连续亏损/回撤阈值触发降频或暂停。
  5. 执行模拟模块

    • 生成虚拟订单记录结构,保存入场价/SL/TP。
    • 绘制溢价区、折价区、清扫区以及 SL/TP 标记。
    • 不调用 OrderSend,仅在图表和日志中反映交易。
    • 使用 PrintFileOpen 输出模拟交易结果。
  6. 绩效与自适应模块

    • 实时统计胜率、盈亏比、频率并计算 Score。
    • Score 降低时自动调整策略启用状态或建议仓位。
    • 记录每笔模拟交易的结构文本、Score、风险参数。

5. 数据与工具准备

  • 行情数据:MT4 自带多周期 OHLC 与 tick 量。
  • 图形绘制:利用 MT4 图形对象 API(ObjectCreate 等)。
  • 日志输出:PrintFileOpen(CSV/文本)用于复盘。
  • 参数配置:颜色、透明度、Score 阈值、风险阈值等需外部输入。

6. 重点验证事项

  • 清扫区算法在历史数据中的有效性与可视化准确度。
  • 多周期同步与中枢锚定逻辑的稳定性。
  • Score 阈值、降频规则在不同市场环境下的适配性。
  • 图形对象的清理策略,防止图表堆积。
  • 模拟滑点与手续费假设的合理性(影响胜率、盈亏比统计)。

7. 开发里程碑建议

  1. 结构逻辑验证:在历史数据上验证分型、笔、中枢识别与可视化。
  2. 信号与风险模块:实现清扫区止损、溢价/折价区绘制及 Score 计算,并在折价区/溢价区内检测回踩结构,触发颜色强化或提示信息。
  3. 执行模拟:构建虚拟订单管理、图形标注和日志输出。
  4. 策略治理:完成胜率、盈亏比、频率、Score 的联动控制。
  5. 测试与迭代:在多品种、不同周期上模拟运行,调参优化。

8. 当前 EA 实现细节(chan_structure_sim.mq4)

8.1 全局架构

  • 时间驱动:在 OnTick() 中通过 CheckNewBar() 识别主周期新 K 线,仅在闭合后更新结构,确保无飘逸。
  • 数据结构:全部使用动态数组(g_fractals/g_pens/g_zhongshus/g_trades)存储历史数据并限制最大容量 (InpMaxRecords)。
  • 模块流程
    1. ProcessPrimary():刷新分型、笔、中枢 → 绘图 → 更新模拟交易。
    2. UpdateSimulation():检测溢价/折价触发 → 生成/关闭模拟订单 → 刷新叠加信息面板。
    3. UpdateTradePanel():汇总当前仓位、结构状态、多周期趋势,推送至图表右上/左下角叠加文本。

8.2 可视化元素

  • 中枢主体:灰色矩形框(前景层)+ 实线上下沿 + 虚线中线,标签 ZS #编号 放置在中枢上沿。
  • 溢价/折价区块
    • 使用 ColorWithAlpha() 生成半透明色块,默认不铺设背景以避免遮挡 K 线。
    • 上方矩形标注“溢价”,下方标注“折价”,同时绘制 2 像素虚线警示线。
    • 在回踩折价区时,HighlightDiscountRetest() 追加文字提示与亮色矩形。
  • 进行中中枢:若未锁定,通过 DrawDevelopingZone() 绘制点状矩形与标签 ZS(dev) / ZS(fb)
  • 同步线:在 M15 图表上读取 H1 中枢关键价位(通过全局变量)并绘制水平线用于跨周期参考。
  • 叠加文本
    • 右上角 TRADE_OVERLAY(字号 7):展示在途模拟仓位、订单流基准及盈亏提示。
    • 左下角 STRUCT_OVERLAY(字号 9):展示 HH/HL 状态、趋势描述、多周期区间及风控建议。
    • 文本颜色根据图表主题自动匹配(前景色或背景亮度)。

8.3 模拟交易逻辑

  • 触发条件
    • 折价区内收盘价 → 模拟多单 (OpenSimTrade(..., true, ...))。
    • 溢价区内收盘价 → 模拟空单。
    • 每个中枢同方向仅允许一个未平仓仓位(通过 FindOpenTradeIndex() 防重)。
  • 仓位与风控
    • 默认手数 InpSimLots(目前固定 0.01),止损位 = zone.zd - pad / zone.zg + pad,止盈为 1:2 扩展。
    • 平仓信号基于下一根已完成 K 线的高低点触及 SL/TP。
    • 结果通过 WriteLog() 写入 CSV,便于事后复盘。
  • 叠加展示UpdateTradePanel() 负责生成面板文字、更新全局变量、调用 UpdateTradeOverlayText()UpdateStructureOverlayText()

8.4 多周期趋势面板

  • ComputeTrendInfo() 对指定周期采集分型 → 生成笔 → 搜索最近中枢(或 fallback 区间)。
  • 输出字段:高低点状态(HH/HL/LH/LL)、趋势文字、区间价格、止损建议、RR 提示。
  • AppendTrendPanelLine() 在左下角面板形成形如 H1 HH/HL 上行 区[xxx-xxx] SLxxx/xxx RR稳 的单行摘要。

8.5 日志与文件

  • PrepareLog() 创建 yyyy.mm.dd_hh.mm_chan_sim_log.csv,写入时间、类型、详情。
  • 每次开仓/平仓/折价提示均调用 WriteLog() 记录。
  • CloseLog()OnDeinit() 中关闭并清理句柄。

8.6 清理策略

  • CleanupObjects() / ClearDevelopingZoneObjects() 在重绘前删除旧对象(基于 OBJ_PREFIX)。
  • TrimFractals/Pens/Zhongshus/Trades() 控制历史记录长度,防止内存膨胀。
  • OnDeinit() 清空数组、文字叠加、文件句柄,确保 EA 再挂载时环境干净。

8.7 可配置参数

  • InpPrimaryTF/InphigherTF:主、上级时间框。
  • InpFractalDepth:分型左右 K 数(默认 2)。
  • InpLiquidityPad:溢价/折价延伸点数,同时影响止损距离与文字标签位置。
  • InpPremiumColor/InpDiscountColor/InpLiquidityColor:溢价区、折价区、清扫提示颜色,可根据主题调节。
  • InpEnableLogging:控制 CSV 输出。
  • InpShowDevelopingZhongshu:是否绘制进行中的中枢预测框。

9. 后续开发建议

  1. Score 体系落地:在当前模拟交易模块中引入胜率/盈亏比统计,动态调整触发条件或手数。
  2. 多仓位管理:支持同一中枢内多笔分批入场/加仓,并提供分层止盈策略。
  3. 策略回放工具:基于现有日志开发简单复盘脚本,把 CSV 还原成信号时间线。
  4. 参数仪表板:在图表上增加可配置的小面板(对象按钮)以快速切换周期/阈值。
  5. 性能优化:对 UpdateFractals()BuildPens() 中的循环增加增量更新,减少全量遍历。
还没有人打赏,支持一下