Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Советники

HybridMicrostructure EA - эксперт для MetaTrader 5

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.
| Russian English 中文 Español Deutsch 日本語 Português 한국어 Français Italiano Türkçe
Просмотров:
23
Рейтинг:
(6)
Опубликован:
\MQL5\Include\HybridMicrostructure\
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Эксперт-консультант «Hybrid Microstructure EA» — это передовой высокочастотный скальпинговый советник, разработанный специально для пары XAUUSD (золото) на таймфрейме M1. В отличие от традиционных индикаторов, основанных на отстающих математических вычислениях по данным OHLC, этот советник работает на основе динамики микроструктуры на уровне тиков, отслеживая скорость тиков, отклонения от средневзвешенной по объему цены (VWAP) и отклонения при «смете ликвидности» (stop hunts), осуществляемые институциональными инвесторами.

Бэктест:


Чтобы преодолеть разрыв между детерминированными локальными правилами и адаптивным интеллектом, советник оснащён «мостом принятия решений на базе ИИ» (AI Bridge Decision Layer), который поддерживает как внутренний механизм взвешенной оценки, так и внешний локальный ИИ-API, совместимый с OpenAI (через Python/FastAPI), выступающий в качестве окончательного «стража фактов» перед исполнением ордера.

Основные особенности:

  • Механизм микроструктуры тиков: обходит запаздывающие индикаторы, рассчитывая окна скорости тиков в реальном времени и отклонения VWAP в кольцевом буфере.
  • Защита от захвата ликвидности и отскока: система дожидается, пока стоп-лоссы розничных трейдеров будут сметены за пределы экстремальных диапазонов VWAP, и инициирует вход в рынок только после подтверждённого отскока/отклонения цены.
  • AI-мост с двумя движками: интегрирует детерминированную локальную матрицу оценки и опциональный локальный веб-конечный узел ИИ (/analyze) для многофакторной проверки решений.
  • Фильтры по торговым сессиям и волатильности: ограничивают исполнение ордеров активными торговыми сессиями (Азия, Лондон, Ближний Восток), избегая при этом опасных периодов переноса позиций.
  • Расширенное управление рисками и капиталом: поддерживает определение размера позиции по фиксированному лоту или проценту риска (% от баланса/капитала) с динамической защитой ATR/фиксированным стоп-лоссом, уровнем безубыточности и трейлинг-стопом.


1. Структура кода и рабочий процесс:

  • OnTick() : Основной цикл, выполняющий проверку спредов, обновление буфера тиков в реальном времени, расчет VWAP и работу автоматов состояний для получения ликвидности.
  • CalculateTickVWAP() : динамически вычисляет средневзвешенную по объему цену и полосы стандартного отклонения на основе кольцевого буфера из 500 тиков.
  • 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. Отслеживание микроструктуры: непрерывно формирует кольцевой буфер для оценки ускорения скорости тиков и растяжения диапазона VWAP (+/- стандартное отклонение).
  3. Срабатывание триггера и проверка ИИ: когда «свеп» ликвидности выходит за пределы внешних полос, за чем следует отклонение в виде «снапбэка», контекст отправляется на уровень AI Bridge.
  4. Принятие решения и исполнение: если локальная система оценки или внешняя модель ИИ одобряет сделку (ALLOW=YES с высокой степенью уверенности), функция ExecuteTrade() рассчитывает динамический размер лота с учетом риска и отправляет ордер с использованием оптимальных режимов исполнения (IOC / FOK).


Этот советник предназначен для отправки HTTP-запросов POST с полезной нагрузкой в формате JSON в стиле OpenAI (содержащей `messages`, `role: system` и `role: user`) и ожидает ответ в формате JSON, содержащий `decision`, `confidence` и `reason`.

Для создания локального API ИИ (локального сервера), способного отвечать на эти запросы MT5 за миллисекунды, идеальным языком программирования является Python с использованием фреймворка FastAPI. FastAPI — это лёгкий, молниеносный фреймворк, идеально подходящий для обработки высокочастотных данных из MT5.

Ниже приведён полный код сервера на Python. Позже вы сможете интегрировать в этот движок реальную модель машинного обучения (такую как TensorFlow, Scikit-Learn или даже Ollama для локального LLM).


1. Настройка среды Python

Убедитесь, что на вашем компьютере установлен Python. Откройте Терминал или Командную строку и установите следующие две необходимые библиотеки:

pip install fastapi uvicorn

2. Код API на Python (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. Извлечение данных в формате JSON из сообщения «user», отправленного MT5
    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 = ""

    # Проанализировать логику, когда советник запрашивает подтверждение ордера на ПРОДАЖУ
    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"

    # Проанализировать логику, когда советник запрашивает подтверждение на покупку
    elif order_type == "BUY":
        score = 0
        
        # Проверить величину отскока и скорость
        if snapback_pips >= min_snapback and high_velocity:
            score += 0.4

        # Проверка экстремального отклонения (параметр `deviation_z` в MQL5 уже скорректирован с учётом направления)
        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]  # Ограничить длину обоснования до 60 символов для MT5
    }

if __name__ == "__main__":
    # Запустить локальный сервер на порту 8787, соответствующем параметру InpAIEndpoint в MQL5
    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) в список разрешенных URL-адресов для WebRequest:
    1. Перейдите в меню «Инструменты» -> «Настройки» -> «Советники».
    2. Установите флажок «Разрешить WebRequest для указанных URL».
    3. Добавьте URL [http://127.0.0.1](http://127.0.0.1) в список.
  5. Запустите советник. Теперь советник будет отправлять данные в режиме реального времени в Python API; Python проанализирует их на основе параметров, заданных в функции Python, и отправит команды BUY/SELL/WAIT обратно в MT5.

Эта архитектура на Python отличается высокой масштабируемостью. Если в будущем вы захотите сохранить историю ценовых движений в базе данных (для обучения моделей машинного обучения) или подключить её к модели прогнозирования (например, XGBoost или Random Forest), вам просто нужно изменить раздел, отмеченный комментарием № 3 — ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ / АЛГОРИТМ ПРИНЯТИЯ РЕШЕНИЙ — в приведенном выше коде.

В случае успеха 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), вот 3 самых простых способа создать файл local_ai_bridge.py:

Способ 1: с помощью Блокнота (самый быстрый способ, не требующий установки дополнительных приложений)

Это самый быстрый способ в операционной системе Windows:

  1. Откройте встроенное в Windows приложение «Блокнот».
  2. Скопируйте весь код FastAPI на Python, который я привёл ранее (выше). [2. Код API на Python (local_ai_bridge.py)]
  3. Вставьте код в новый документ «Блокнота».
  4. Нажмите меню «Файл» > «Сохранить как...»
  5. Выберите папку, в которую хотите сохранить этот файл (например, создайте новую папку с именем AI_MT5 в папке «Документы» или на рабочем столе).
  6. ОЧЕНЬ ВАЖНО: в разделе «Тип файла» измените настройку с «Текстовые документы (*.txt)» на «Все файлы (*.*)».
  7. В поле «Имя файла» введите точно: local_ai_bridge.py
  8. Нажмите «Сохранить». Готово!

Дополнительные советы после создания файла:

Чтобы запустить файл, откройте командную строку (CMD) в папке, где находится файл `local_ai_bridge.py`, а затем введите команду для его запуска:

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. Нажмите клавишу Enter на клавиатуре.
  6. Сразу же откроется черный экран (командная строка), расположенный именно в этой папке.

Шаги выполнения (если терминал уже открыт в нужной папке)

Как только откроется чёрное или синее окно в нужной папке, вам просто нужно выдать Python команду на запуск робот-ИИ.

  1. Введите следующую команду:
    1. python local_ai_bridge.py
  2. Нажмите Enter.

Если установка библиотек (fastapi и uvicorn) прошла успешно, вы увидите текст «AI Bridge Server is running on http://127.0.0.1:8787» или сообщение «Uvicorn running on...»


Как показано ниже:

AI Bridge Server работает по адресу 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. Несколько таймфреймов и структура «Locked»: Поддерживаемые индикаторы тренда (H1, M15, M5) и структура «M1 Closed Candle» готовы к мониторингу рынка.

Что означает этот признак?

Это означает, что советник и наш локальный сервер на Python теперь работают параллельно и готовы к взаимодействию. Советник больше не «слеп» — он обладает «локальным мозгом», который фильтрует каждый сигнал Liquidity Sweep и Velocity на таймфрейме M1 по золоту, прежде чем принять решение о выполнении ордера или отложении (WAIT).

Далее просто следите за движением графика или проведите форвард-тестирование на демо- или реальном счёте. Когда будут выполнены условия «свипа» и требования к скорости тиков, вы увидите, как в журнале в режиме реального времени появятся записи о принятых решениях — например, `[AI] SELL HYBRID ... ALLOW=YES` или `NO`.


Визуализация в Тестере стратегий:



Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/76331

Wolfe Wave Dashboard Wolfe Wave Dashboard

Профессиональный индикатор MQL5 (в отдельном окне), который автоматически сканирует несколько символов и таймфреймов, выявляет самые последние достоверные фигуры «Волна Вольфа» (бычьи/медвежьи), отображает их на интерактивной панели инструментов и позволяет открывать графики одним щелчком мыши с полным рисованием фигур.

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

Отслеживает диапазоны сессий в Азии, Лондоне и Нью-Йорке, фиксирует каждый из них при закрытии сессии и выделяет настоящие всплески ликвидности — «фитиль», пробивающий зафиксированный максимум или минимум и закрывающийся обратно внутри него — с помощью стрелочного сигнала и заштрихованной зоны реакции. Не перерисовывается, работает с любыми инструментами и на любых таймфреймах.

YURAZ_RSAXEL Скрипт рисует уровни Рудолфа Акселя YURAZ_RSAXEL Скрипт рисует уровни Рудолфа Акселя

Скрипт рисует уровни Рудолфа Акселя

YURAZ_MCCH YURAZ_MCCH

Индикатор рассчитывает % роста или падения относительно CLOSE, написан с применением ООП, и легко интегрируется в любой советник или иной индикатор.