请观看如何免费下载自动交易
请在Telegram上找到我们!
加入我们粉丝页
有趣的脚本?
因此发布一个链接 -
让其他人评价
喜欢这个脚本? 在MetaTrader 5客户端尝试它
EA

HybridMicrostructure EA - MetaTrader 5EA

Syamsurizal Dimjati
Syamsurizal Dimjati
Hello traders, I design and develop high-quality indicators and Expert Advisors (EAs) for MT5 (since 2023), built to help you achieve more consistent and reliable trading results.
| Chinese English Русский Español Deutsch 日本語 Português 한국어 Français Italiano Türkçe
显示:
15
等级:
(6)
已发布:
\MQL5\Include\HybridMicrostructure\
AIBridge.mqh (40.86 KB) 预览
AIBridgeUX.mqh (39.21 KB) 预览
ParamUX.mqh (9.82 KB) 预览
MQL5自由职业者 需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务

“混合微结构”EA是一款 先进的高频剥头皮专家顾问,专为M1时间周期的XAUUSD(黄金) 设计。 与依赖滞后OHLC数学模型的传统指标不同,该EA基于Tick级微观结构动态 运行——追踪Tick速度、成交量加权平均价格(VWAP)偏差,以及机构执行的流动性清扫拒绝(止损狩猎)。

回测:


为弥合确定性局部规则与自适应智能之间的差距,该EA配备了AI桥接决策层,该层同时支持内部加权评分引擎和外部兼容OpenAI的本地AI API(通过Python/FastAPI),在订单执行前充当最终的事实门控。

主要功能:

  • Tick微结构引擎: 通过计算实时Tick速度窗口和环形缓冲区VWAP偏差,规避滞后指标的影响。
  • 流动性捕获与回弹防护: 等待散户止损单被清扫至极端VWAP区间之外,仅在确认价格回弹/受阻时触发入场。
  • 双引擎 AI 桥接: 整合了确定性的本地评分矩阵和可选的本地 AI Web 端点(/analyze),用于多因素决策验证。
  • 多交易时段与波动率过滤器: 将交易执行限制在活跃交易时段(亚洲、伦敦、中东),同时规避危险的隔夜持仓时段。
  • 高级风险与资金管理: 支持固定手数或风险百分比(余额/净值百分比)的仓位配置,并配备动态ATR/固定止损、盈亏平衡及追踪止损保护机制。


1. 代码结构与工作流:

  • OnTick(): 核心循环,执行点差检查、实时 tick 缓冲区更新、VWAP 计算以及流动性获取状态机。
  • CalculateTickVWAP(): 基于500 tick环形缓冲区,动态计算成交量加权平均价格及标准差波带。
  • AIBridge_Confirm(): 作为决策网关,通过评估多时间周期趋势(H1、M15、M5)、M1结构及速度指标,发挥最终过滤作用。
  • AIBridge_LocalScore(): 基于测得的市场数据,计算一个确定性的加权评分(0.0 至 1.0)。
  • AIBridge_WebCall(): 将实时市场数据打包为严格的 JSON 有效载荷,并与本地 Python/FastAPI 服务器进行异步通信。
  • SecureProfits(): 通过MT5的TRADE_ACTION_SLTP请求,安全管理自动的盈亏平衡点和追踪止损调整。


2. 执行工作流:

  1. 报价采集与过滤: 根据最大允许点差、活跃交易时段以及最小 M1 ATR 波动率,对传入的报价进行验证。
  2. 微结构追踪:持续构建环形缓冲区,以评估Tick速度加速度及VWAP带宽伸缩幅度(±标准差)。
  3. 触发与AI验证: 当流动性清扫超过外侧带宽且随后出现回弹拒绝时,该情境将发送至AI桥接层
  4. 决策与执行: 若本地评分或外部AI模型批准该交易(ALLOW=YES且信心度高),ExecuteTrade()将计算基于动态风险的手数,并采用最优成交模式(IOC/FOK)下单。


该EA设计为发送符合OpenAI风格的包含JSON有效载荷的HTTP POST请求(包含`messages`、`role: system`和`role: user`),并预期收到包含`decision`、`confidence`和`reason`的JSON响应。

要创建一个能够在几毫秒内响应这些 MT5 请求的本地 AI API(本地服务器),理想的编程语言是使用 FastAPI 框架的 Python。FastAPI 轻量级、速度极快,非常适合处理来自 MT5 的高频数据。

以下是完整的 Python 服务器代码。您稍后可以将真正的机器学习模型(例如 TensorFlow、Scikit-Learn,甚至用于本地 LLM 的 Ollama)集成到该引擎中。


1. Python 环境配置

请确保您的计算机已安装 Python。打开终端或命令提示符,并安装以下两个必备库:

pip install fastapi uvicorn

2. Python API 代码(local_ai_bridge.py)

在您的计算机上创建一个名为 local_ai_bridge.py 的文件,并复制以下代码:(Python)

from fastapi import FastAPI, Request
from pydantic import BaseModel
from typing import List, Optional
import json
import uvicorn

app = FastAPI(title="MT5 AI Microstructure Bridge")

# --- 数据模型(兼容 MQL5 数据格式) ---
class Message(BaseModel):
    role: str
    content: str

class AIRequest(BaseModel):
    model: str
    temperature: float
    response_format: Optional[dict] = None
    messages: List[Message]

# --- 主端点 (/analyze) ---
@app.post("/analyze")
async def analyze_market(payload: AIRequest):
    """
    This endpoint receives tick and microstructure data from MT5,
    analyzes the data, and returns a BUY/SELL/WAIT decision.
    """
    
    # 1. 从 MT5 发送的“user”消息中提取 JSON 数据
    user_content = "{}"
    for msg in payload.messages:
        if msg.role == "user":
            user_content = msg.content
            break
            
    try:
        facts = json.loads(user_content)
    except json.JSONDecodeError:
        return {"decision": "WAIT", "confidence": 0.0, "reason": "Invalid JSON format"}

    # 2. 提取市场数据
    order_type = facts.get("order_type", "WAIT")
    high_velocity = facts.get("high_velocity", False)
    snapback_pips = facts.get("snapback_pips", 0.0)
    min_snapback = facts.get("min_snapback_pips", 2.0)
    deviation_z = facts.get("deviation_z", 0.0)
    
    mtf = facts.get("mtf", {})
    m1_structure = facts.get("m1_structure", {})

    # 3. 人工智能/决策算法(日后可替换为机器学习模型)
    # 这是一个关于决策逻辑的简单示例
    
    confidence = 0.0
    decision = "WAIT"
    reason = ""

    # 评估当EA请求卖出确认时的逻辑
    if order_type == "SELL":
        score = 0
        
        # 验证回弹量和速度
        if snapback_pips >= min_snapback and high_velocity:
            score += 0.4

        # 验证极端偏离(超买状态)
        if deviation_z > 2.0:
            score += 0.3

        # 验证MTF对齐情况(至少H1或M15必须呈看跌趋势)
        if mtf.get("h1_down") or mtf.get("m15_down"):
            score += 0.2

        # 验证M1拒绝信号(长上影线)
        if m1_structure.get("upper_wick_ratio", 0.0) >= 0.2:
            score += 0.1

        confidence = score
        if confidence >= 0.70:
            decision = "SELL"
            reason = "High velocity drop, MTF align, Z-Score high"
        else:
            reason = f"Score only {confidence:.2 f}, lacking momentum"

    # 评估当EA请求买入确认时的逻辑
    elif order_type == "BUY":
        score = 0
        
        # 验证回弹量和速度
        if snapback_pips >= min_snapback and high_velocity:
            score += 0.4

        # 验证极端偏差(在 MQL5 中,deviation_z 已经进行了方向调整)
        if deviation_z > 2.0:
            score += 0.3

        # 验证MTF对齐情况(至少H1或M15必须呈看涨趋势)
        if mtf.get("h1_up") or mtf.get("m15_up"):
            score += 0.2

        # 验证M1拒绝信号(下影线较长)
        if m1_structure.get("lower_wick_ratio", 0.0) >= 0.2:
            score += 0.1

        confidence = score
        if confidence >= 0.70:
            decision = "BUY"
            reason = "High velocity bounce, MTF align, Z-Score high"
        else:
            reason = f"Score only {confidence:.2 f}, lacking momentum"

    # 4. 将 JSON 响应发回 MT5
    return {
        "decision": decision,
        "confidence": round(confidence, 2),
        "reason": reason[:60]  # 将MT5中的“原因”字数限制为最多60个字符
    }

if __name__ == "__main__":
    # 在端口 8787 上启动本地服务器,该端口与 MQL5 中的 InpAIEndpoint 参数一致
    print("AI Bridge Server is running on http://127.0.0.1:8787")
    uvicorn.run(app, host="127.0.0.1", port=8787)

3. 如何运行服务器并连接到 MT5

  1. 打开终端,并导航至存储该 Python 文件的文件夹。
  2. 运行以下命令:
  3. 服务器将启动并在 [http://127.0.0.1:8787](http://127.0.0.1:8787) 上监听。
  4. 在 MetaTrader 5 平台上,请确保已将 URL [http://127.0.0.1](http://127.0.0.1) 添加到允许的 WebRequest URL 列表中:
    1. 转到“工具”→“选项”→“专家顾问”。
    2. 勾选“允许对列出的 URL 进行 WebRequest”。
    3. 将 URL [http://127.0.0.1](http://127.0.0.1) 添加到列表中。
  5. 运行您的专家顾问(EA)。此时,该 EA 将向 Python API 发送实时数据;Python 将根据 Python 函数中的参数对数据进行分析,并向 MT5 发送买入/卖出/等待指令。

这种 Python 架构具有极高的可扩展性。如果将来您希望将这些价格走势历史数据存储在数据库中(作为机器学习训练数据),或将其连接到预测模型(如 XGBoost 或随机森林),您只需修改代码中标有注释 #3 的部分——ARTIFICIAL INTELLIGENCE / 决策算法——进行修改即可。

如果操作成功,Print Expert 将显示如下:



Creating a Python file (.py) is actually very simple. Essentially, a Python file is just a standard text file (like a .txt file) with its extension changed to .py.

使用 MetaTrader 5(通常在 Windows 系统上运行),以下是创建 local_ai_bridge.py 文件的 3 种最简单方法:

方法 1:使用记事本(最快且无需安装其他应用程序)

这是在 Windows 操作系统上最快捷的方法:

  1. 打开 Windows 系统自带的“记事本”应用程序。
  2. 复制我之前(上文)提供的完整 FastAPI Python 代码。[2. Python API 代码 (local_ai_bridge.py)]
  3. 将代码粘贴到一个空白的记事本文档中。
  4. 点击“文件”菜单 > “另存为...”
  5. 选择要保存此文件的文件夹(例如,在“文档”或“桌面”中创建一个名为 AI_MT5 的新文件夹)。
  6. 非常重要:在“保存为类型”部分,将设置从“文本文档 (*.txt)”更改为“所有文件 (*.*)”。
  7. 在“文件名”字段中,请准确输入:local_ai_bridge.py
  8. 点击“保存”。完成!

创建文件后的其他提示:

要运行该文件,请确保在 `local_ai_bridge.py` 文件所在的文件夹中打开命令提示符(CMD),然后输入以下命令进行运行:

python local_ai_bridge.py

如果成功,CMD 窗口将显示文本,表明 Uvicorn/FastAPI 服务器正在运行。

//-------------------------


要让 Python 运行 `local_ai_bridge.py` 文件,终端必须“位于”该文件所在的同一文件夹中。以下是在 Windows 上实现这一点的三种最简单方法(请选择您喜欢的一种):

方法 1:文件资源管理器“地址栏”小技巧(最简单、最快)

这是程序员们最喜爱的技巧之一,因为它非常实用:

  1. 打开文件资源管理器(即通常用于查看文件和文件夹的界面)。
  2. 转到您之前保存 `local_ai_bridge.py` 文件的文件夹。
  3. 在顶部的地址栏(显示文件夹位置的长文本框,例如 C:\Users\YourName\Documents\AI_MT5)上单击鼠标左键一次。
  4. 地址栏中的文本将以蓝色高亮显示。删除该文本,然后输入:cmd
  5. 按下键盘上的回车键。
  6. 一个黑色屏幕(命令提示符)将立即打开,位置正好位于该文件夹内。

执行步骤(如果终端已打开在正确文件夹中)

一旦黑色或蓝色窗口在正确文件夹中打开,您只需向 Python 发出命令即可启动 AI 机器人。

  1. 输入以下命令:
    1. python local_ai_bridge.py
  2. 按下回车键。

如果库(fastapi 和 uvicorn)安装成功,您将看到提示“AI Bridge Server 正在 http://127.0.0.1:8787 上运行”或“Uvicorn 正在...”的提示信息


如下所示:

AI Bridge 服务器正在 http://127.0.0.1:8787 上运行

INFO: 已启动服务器进程 [4168]

INFO: 正在等待应用程序启动。

INFO: 应用程序启动完成。

信息: Uvicorn 正在 http://127.0.0.1:8787 上运行(按 CTRL+C 退出)

该文本表明:

  1. 初始化成功:EA 成功检测到 XAUUSD 符号,点值倍数为 10.0(正确识别出 3 位小数/5 位小数的经纪商)。
  2. AI Bridge 已启用:AIBridge v1.1 模块已成功以 HYBRID 模式加载,并连接至本地端点 [http://127.0.0.1:8787/analyze](http://127.0.0.1:8787/analyze),并检测到无需密钥授权(匿名模式)——这适用于我们的本地 Python 服务器。
  3. 多时间周期与锁定结构:支持趋势指标(H1、M15、M5)以及M1收盘K线结构,已准备好监控市场。

这一迹象意味着什么?

这意味着 EA 和我们的本地 Python 服务器现已并行运行,并准备好进行交互。EA 不再“盲目”——它拥有一个“本地大脑”,会在黄金 M1 时间框架上过滤每个流动性扫描和速度信号,然后决定是执行订单还是暂缓(WAIT)。

接下来,只需观察图表走势,或在模拟账户或真实账户上进行前测。当满足清扫条件和 tick 速度要求时,您将实时在交易日志中看到决策记录——例如 `[AI] SELL HYBRID ... ALLOW=YES` 或 `NO`。


策略测试器可视化:



由MetaQuotes Ltd译自英文
原代码: https://www.mql5.com/en/code/76331

Wolfe Wave Dashboard Wolfe Wave Dashboard

一款专业的 MQL5 指标(独立窗口),可自动扫描多个交易品种和时间周期,检测最新的有效沃尔夫波(Wolfe Wave)形态(看涨/看跌),在交互式仪表盘中显示这些形态,并支持一键打开图表并完整绘制形态。

Dynamic Session Range Sweep Detector with Liquidity Zone Marking Dynamic Session Range Sweep Detector with Liquidity Zone Marking

追踪亚洲、伦敦和纽约交易时段的波动范围,在每个交易时段收盘时锁定该范围,并通过箭头信号和阴影反应区标记真正的流动性扫盘——即K线影线刺穿已锁定的最高点或最低点,但收盘价又回到该范围之内的情况。不重绘,适用于任何交易品种和时间周期。

加速震荡(AC) 加速震荡(AC)

加速/减速技术指标(AC)用于衡量当前驱动力的加速和减速。

离散 离散

离散技术指标由价格和交易量的变化决定。