無料でロボットをダウンロードする方法を見る
Twitter上で私たちを見つけてください。
私たちのファンページに参加してください
興味深いスクリプト?
それではリンクにそれを投稿してください。-
他の人にそれを評価してもらいます
スクリプトを気に入りましたか?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.
| Japanese English Русский 中文 Español Deutsch Português 한국어 Français Italiano Türkçe
ビュー:
13
評価:
(6)
パブリッシュ済み:
\MQL5\Include\HybridMicrostructure\
AIBridge.mqh (40.86 KB) ビュー
MQL5フリーランス このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動

Hybrid Microstructure EA」は、M1タイムフレームのXAUUSD(金) 向けに特別に設計された、高度な高頻度スキャルピング用エキスパートアドバイザーです。 遅行性のOHLC計算に依存する従来の指標とは異なり、このEAはティックレベルのマイクロストラクチャー・ダイナミクスを 基に動作し、ティックの速度、出来高加重平均価格(VWAP)の乖離、および機関投資家によって実行される流動性スイープによる注文拒否(ストップハンティング)を追跡します。

バックテスト:


決定論的なローカルルールと適応型インテリジェンスのギャップを埋めるため、本EAは「AIブリッジ決定層」を搭載しています。これは、内部の加重スコアリングエンジンと、外部のOpenAI互換ローカルAI API(Python/FastAPI経由)の両方をサポートし、注文執行前の最終的な事実に基づくゲートキーパーとして機能します。

の主な特徴:

  • ティック・マイクロストラクチャー・エンジン: リアルタイムのティック速度ウィンドウとリングバッファVWAP偏差を計算することで、遅行指標の影響を回避します。
  • 流動性獲得およびスナップバックガード: 個人投資家のストップロスが極端なVWAPバンドの外側に押し出されるのを待ち、価格のスナップバック/拒絶が確認された場合にのみエントリーをトリガーします。
  • デュアルエンジン AI ブリッジ: 多要素による意思決定の検証のために、決定論的なローカルスコアリングマトリックスと、オプションのローカル AI ウェブエンドポイント( /analyze )を統合しています。
  • マルチセッション&ボラティリティフィルター: 危険なロールオーバー期間を回避しつつ、アクティブな取引セッション(アジア、ロンドン、中東)に執行を制限します。
  • 高度なリスク・資金管理: 固定ロットまたはリスクパーセント(残高/純資産の%)によるポジションサイズ設定をサポートし、動的ATR/固定ストップロス、ブレークイーブン、トレーリングストップによる保護機能を備えています。


1. コード構造とワークフロー:

  • OnTick(): スプレッドチェック、リアルタイムのティックバッファ更新、VWAP計算、および流動性取得ステートマシンを実行するコアループ。
  • CalculateTickVWAP(): 500ティックのリングバッファから、出来高加重平均価格(VWAP)と標準偏差バンドを動的に算出します。
  • 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検証: 流動性の急激な変動が外側のバンドを超え、その後スナップバックによる拒絶が発生した場合、そのコンテキストがAIブリッジレイヤー に送信されます。
  4. 決定および執行: ローカルスコアリングまたは外部AIモデルが取引を承認した場合(ALLOW=YESかつ高信頼度)、ExecuteTrade()が動的なリスクベースのロットサイズを算出し、最適な約定モード(IOC/FOK)を使用して注文を発注します。


このEAは、OpenAIスタイルのJSONペイロード(`messages`、`role: system`、および`role: user`を含む)を伴うHTTP POSTリクエストを送信するように設計されており、`decision`、`confidence`、および`reason`を含むJSONレスポンスを期待しています。

これらのMT5リクエストにミリ秒単位で応答できるローカルAI API(ローカルサーバー)を構築するには、FastAPIフレームワークを使用したPythonが最適なプログラミング言語です。FastAPIは軽量で極めて高速であり、MT5からの高頻度データを処理するのに最適です。

以下に、Pythonサーバーの完全なコードを示します。後で、このエンジンに実際の機械学習モデル(TensorFlow、Scikit-Learn、あるいはローカルLLM用のOllamaなど)を統合することも可能です。


1. Python環境のセットアップ

お使いのコンピュータにPythonがインストールされていることを確認してください。ターミナルまたはコマンドプロンプトを開き、以下の2つの必須ライブラリをインストールします:

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. AI/意思決定アルゴリズム(後で機械学習モデルに置き換えることも可能)
    # これは決定ロジックの簡単な例です
    
    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

        # 極端な偏差の検証(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]  # MT5では、理由の文字数を最大60文字に制限する
    }

if __name__ == "__main__":
    # MQL5のInpAIEndpointパラメータに合わせて、ポート8787でローカルサーバーを起動します
    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プラットフォームで、許可されたWebRequest URLのリストにURL [http://127.0.0.1](http://127.0.0.1)が追加されていることを確認してください:
    1. [ツール] → [オプション] → [エキスパート・アドバイザー] へ移動します。
    2. 「リストされたURLに対するWebRequestを許可する」にチェックを入れます。
    3. URL [http://127.0.0.1](http://127.0.0.1) をリストに追加します。
  5. EAを実行してください。これにより、EAがリアルタイムのデータをPython APIに送信するようになります。Pythonは、Python関数内のパラメータに基づいてそのデータを分析し、BUY/SELL/WAITコマンドをMT5に返信します。

このPythonアーキテクチャは拡張性に優れています。将来、この価格変動履歴をデータベースに保存したい場合(機械学習のトレーニングデータとして)や、予測モデル(XGBoostやランダムフォレストなど)に接続したい場合は、上記のコード内でコメント#3でマークされたセクション「ARTIFICIAL INTELLIGENCE / DECISION ALGORITHM)とマークされたセクションを修正するだけで済みます。

正常に動作すれば、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でこれを行う最も簡単な3つの方法を以下に示します(お好みの方法を選択してください):

方法1:ファイルエクスプローラーの「アドレスバー」を使った裏技(最も簡単かつ迅速)

これは非常に実用的であるため、プログラマーの間でよく使われる裏技です:

  1. ファイルエクスプローラー(通常、ファイルやフォルダを表示する画面)を開きます。
  2. 先ほど `local_ai_bridge.py` ファイルを保存したフォルダに移動します。
  3. 上部のアドレスバー(フォルダの場所が表示されている長いフィールド、例:C:\Users\YourName\Documents\AI_MT5)を左クリックします。
  4. アドレス欄のテキストが青色でハイライト表示されます。テキストを削除し、次のように入力します:cmd
  5. キーボードのEnterキーを押します。
  6. そのフォルダ内に位置した黒い画面(コマンドプロンプト)がすぐに開きます。

実行手順(ターミナルがすでに正しいフォルダで開いている場合)

正しいフォルダ内で黒いまたは青いウィンドウが開いたら、AI ロボットを起動するために 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 is running on http://127.0.0.1:8787

INFO: サーバープロセス [4168] を起動しました

INFO: アプリケーションの起動を待機中。

INFO: アプリケーションの起動が完了しました。

INFO: http://127.0.0.1:8787 で Uvicorn が実行中です(終了するには CTRL+C を押してください)

このテキストは、以下のことを示しています:

  1. 初期化成功:EA は、ピップ乗数 10.0 の XAUUSD シンボルを正常に検出しました(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 クローズドキャンドル構造がサポートされており、市場の監視準備が整っています。

この表示は何を意味するのでしょうか?

これは、EAと当社のローカルPythonサーバーが並行して稼働しており、相互に連携できる状態になったことを意味します。EAはもはや「盲目」ではなく、ゴールドの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

アジア、ロンドン、ニューヨークの各セッションの値幅を追跡し、各セッションの終了時にその範囲を固定します。また、真の流動性スイープ(固定された高値または安値を突き抜け、その範囲内に戻って引けたローソク足)を、矢印シグナルと陰影付きの反応ゾーンで示します。リペイントせず、あらゆる銘柄や時間足で動作します。

Adaptive Moving Average (AMA) Adaptive Moving Average (AMA)

適応移動平均線は、ノイズの影響を受けにくい移動平均線を作るときに使われ、トレンドを検知する際にラグが最小に抑えられるという特徴を持ちます。

Accelerator Oscillator (AC) Accelerator Oscillator (AC)

アクセルレーション/デセレレーションインジケーター(AC)は現在の市場を動かす力の加速と減速を測ります。