- 显示:
- 15
- 等级:
- 已发布:
-
需要基于此代码的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. 执行工作流:
- 报价采集与过滤: 根据最大允许点差、活跃交易时段以及最小 M1 ATR 波动率,对传入的报价进行验证。
- 微结构追踪:持续构建环形缓冲区,以评估Tick速度加速度及VWAP带宽伸缩幅度(±标准差)。
- 触发与AI验证: 当流动性清扫超过外侧带宽且随后出现回弹拒绝时,该情境将发送至AI桥接层。
- 决策与执行: 若本地评分或外部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
- 打开终端,并导航至存储该 Python 文件的文件夹。
- 运行以下命令:
- 服务器将启动并在 [http://127.0.0.1:8787](http://127.0.0.1:8787) 上监听。
- 在 MetaTrader 5 平台上,请确保已将 URL [http://127.0.0.1](http://127.0.0.1) 添加到允许的 WebRequest URL 列表中:
- 转到“工具”→“选项”→“专家顾问”。
- 勾选“允许对列出的 URL 进行 WebRequest”。
- 将 URL [http://127.0.0.1](http://127.0.0.1) 添加到列表中。
- 运行您的专家顾问(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 操作系统上最快捷的方法:
- 打开 Windows 系统自带的“记事本”应用程序。
- 复制我之前(上文)提供的完整 FastAPI Python 代码。[2. Python API 代码 (local_ai_bridge.py)]
- 将代码粘贴到一个空白的记事本文档中。
- 点击“文件”菜单 > “另存为...”
- 选择要保存此文件的文件夹(例如,在“文档”或“桌面”中创建一个名为 AI_MT5 的新文件夹)。
- 非常重要:在“保存为类型”部分,将设置从“文本文档 (*.txt)”更改为“所有文件 (*.*)”。
- 在“文件名”字段中,请准确输入:local_ai_bridge.py
- 点击“保存”。完成!
创建文件后的其他提示:
要运行该文件,请确保在 `local_ai_bridge.py` 文件所在的文件夹中打开命令提示符(CMD),然后输入以下命令进行运行:
python local_ai_bridge.py
如果成功,CMD 窗口将显示文本,表明 Uvicorn/FastAPI 服务器正在运行。
//-------------------------
要让 Python 运行 `local_ai_bridge.py` 文件,终端必须“位于”该文件所在的同一文件夹中。以下是在 Windows 上实现这一点的三种最简单方法(请选择您喜欢的一种):
方法 1:文件资源管理器“地址栏”小技巧(最简单、最快)
这是程序员们最喜爱的技巧之一,因为它非常实用:
- 打开文件资源管理器(即通常用于查看文件和文件夹的界面)。
- 转到您之前保存 `local_ai_bridge.py` 文件的文件夹。
- 在顶部的地址栏(显示文件夹位置的长文本框,例如 C:\Users\YourName\Documents\AI_MT5)上单击鼠标左键一次。
- 地址栏中的文本将以蓝色高亮显示。删除该文本,然后输入:cmd
- 按下键盘上的回车键。
- 一个黑色屏幕(命令提示符)将立即打开,位置正好位于该文件夹内。
执行步骤(如果终端已打开在正确文件夹中)
一旦黑色或蓝色窗口在正确文件夹中打开,您只需向 Python 发出命令即可启动 AI 机器人。
- 输入以下命令:
-
python local_ai_bridge.py
- 按下回车键。
如果库(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 退出)
该文本表明:
- 初始化成功:EA 成功检测到 XAUUSD 符号,点值倍数为 10.0(正确识别出 3 位小数/5 位小数的经纪商)。
- AI Bridge 已启用:AIBridge v1.1 模块已成功以 HYBRID 模式加载,并连接至本地端点 [http://127.0.0.1:8787/analyze](http://127.0.0.1:8787/analyze),并检测到无需密钥授权(匿名模式)——这适用于我们的本地 Python 服务器。
- 多时间周期与锁定结构:支持趋势指标(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
一款专业的 MQL5 指标(独立窗口),可自动扫描多个交易品种和时间周期,检测最新的有效沃尔夫波(Wolfe Wave)形态(看涨/看跌),在交互式仪表盘中显示这些形态,并支持一键打开图表并完整绘制形态。
Dynamic Session Range Sweep Detector with Liquidity Zone Marking
追踪亚洲、伦敦和纽约交易时段的波动范围,在每个交易时段收盘时锁定该范围,并通过箭头信号和阴影反应区标记真正的流动性扫盘——即K线影线刺穿已锁定的最高点或最低点,但收盘价又回到该范围之内的情况。不重绘,适用于任何交易品种和时间周期。



