TradingView 〜 MetaTrader 5 自動取引連携マニュアル
TradingViewのアラートを検知してローカルMT5へ瞬時にWebhook注文を中継・執行する仕組みの解説。
システム構成・フロー図
TradingView 〜 MetaTrader 5 (MT5) 自動取引連携マニュアル
本システムは、TradingViewのアラート機能(Webhook)を利用してMetaTrader 5(MT5)へ新規注文シグナルを送ると同時に、自動で注文執行およびポジション管理を行うための連携システムです。
MT5版では、エントリー後に Adaptive_Closer_TV の高度な分割決済(TP1〜TP3)や自動損益管理ロジックによってポジションが完全自動管理されるほか、TradingViewからの決済・手仕舞い(Close / Exit)指示によるポジションクローズにも対応しています。
---
📦 パッケージ内容
本フォルダには、連携に必要な以下のファイルが含まれています。
Adaptive_Closer_TV.mq5/Adaptive_Closer_TV.ex5: TradingView連携に対応した拡張版決済管理EA(MT5用)tv_bridge.py: Webhookを受け取るための中継サーバープログラム(Python製)start_bridge.bat: 中継サーバーをダブルクリックで簡単に起動するためのバッチファイルinstall_python.bat: Python自動インストーラーTradingView_Webhookテスト用ストラテジー.txt: 連携テスト用ストラテジーのコード説明書_TradingView_MT5_連携マニュアル.md: 本説明書
---
🛠️ 事前準備
1. Python の自動インストール
中継サーバーやモデルビルダーを動かすために、お使いのPCまたはVPSにPythonをインストールする必要があります。
- 簡単な方法(推奨): 本フォルダ内にある
install_python.batをダブルクリックして実行してください。公式のPythonインストーラーが自動的にダウンロードされ、バックグラウンド(サイレントモード)でインストールから環境変数(PATH)の登録まで完了します。 - 手動で行う場合: Python公式サイト から最新版をダウンロードし、インストール開始時の画面最下部にある 「Add Python to PATH」に必ずチェックを入れて インストールを行ってください。
2. ポートの外部公開設定(ngrok の詳細な導入手順)
TradingView(インターネット上のサーバー)から、ご自身のPC(ローカル環境)で稼働する中継サーバーへ接続を通すために、外部公開用のアドレスを発行します。
ここでは、最も簡単かつ安全にトンネリング(中継)を行える無料の定番ツール ngrok (エングロック) の具体的な導入・設定手順を解説します。
#### ステップ ①:ngrok アカウントの作成とログイン
- ngrok 公式サイト にアクセスし、無料アカウント(Sign Up)を作成します。
- 作成したアカウントでログインし、ダッシュボード画面(
dashboard.ngrok.com)を開きます。
#### ステップ ②:ngrok エージェントのインストール
- ダッシュボードの左メニューから [Getting Started] > [Setup & Installation] を開きます。
- OS選択画面で [Windows] が選択されていることを確認します。
- 画面内の「1. Install the ngrok agent」項目で、以下のいずれかの方法でインストールを行います:
- 簡単な方法A (Microsoft Store):
「Microsoft Store Installer」 ボタンをクリックしてインストールします(自動でインストールから環境変数の登録まで実行されるため推奨です)。
- 方法B (ダウンロード):
「Download」 タブをクリックして、Windows用のZIPファイルをダウンロードします。
ダウンロード後、ZIPファイルを解凍し、中身の ngrok.exe ファイルをパソコンの任意のフォルダ(例: C:\ngrok\ など)に配置します。
#### ステップ ③:認証トークン (Authtoken) の登録
ngrokをあなたのアカウントと紐付けるための初期設定を行います。
- ダッシュボードの「2. Add your authtoken」項目に移動します。
- ボックス内にあなたの専用トークンを含んだ以下のコマンドが表示されています:
ngrok config add-authtoken <あなた専用の認証トークン>
- コマンドの右側にある 「Copy」 ボタンをクリックして、コマンド全体をコピーします。
- Windowsのスタートメニュー(画面下の検索欄)に
cmdと入力し、「コマンドプロンプト」 を起動します。 - コマンドプロンプト画面に、コピーしたコマンドを貼り付け(画面右クリックまたは
Ctrl + V)て、Enterキーを押して実行します。 - ※ 方法BでZIPを解凍した場合は、コマンドプロンプトで
cd C:\ngrokを実行し、ngrok.exeがあるフォルダに移動してからコマンドを実行してください。 - 「Authtoken saved to configuration file:...」と表示されれば登録成功です(初回のみ必要な設定です)。
#### ステップ ④:中継トンネルの起動とURL取得
- コマンドプロンプトで以下のコマンドを入力し、Enterキーを押します:
ngrok http 8080
*(※ 本システムの中継サーバーはポート8080を使用するため、必ず末尾に 8080 を指定して起動してください)*
- 画面が切り替わり、黒い画面に接続ステータスが表示されます。
- 画面内にある
Forwardingの箇所に表示されているアドレス(例:https://xxxx-xxxx.ngrok-free.app)をコピーします。 - 注意: トンネル起動中のコマンドプロンプト画面は、取引を行っている間は絶対に閉じないでください。閉じるとTradingViewからの接続が遮断されます。
- この
https://xxxx-xxxx.ngrok-free.appのアドレスの末尾に/webhookを付与したものが、TradingViewに登録するWebhook URLになります。(例:https://xxxx-xxxx.ngrok-free.app/webhook)
---
🚀 導入と接続のステップ
ステップ 1. 中継サーバーの起動
本フォルダ内の start_bridge.bat をダブルクリックして起動します。
黒い画面が開き、以下のように表示されれば起動成功です:
==================================================
TradingView-to-MT5 Bridge Server 起動中...
ローカル動作確認URL: http://localhost:8080/
Webhook受信URL: http://[公開IP]:8080/webhook
MT5ポーリングURL: http://localhost:8080/alerts
==================================================
- 稼働確認ダッシュボード: ブラウザで
http://localhost:8080/にアクセスすると、現在のサーバー状態や直近30件の受信ログを確認できます。
ステップ 2. MetaTrader 5側の設定(WebRequestの許可)
MetaTrader 5が中継サーバーと通信を行えるよう、接続を許可します。
- MT5のメニューバーから [ツール] > [オプション] を開きます。
- [エキスパートアドバイザ] タブを選択します。
- 「指定されたURLのWebRequestを許可する」 にチェックを入れます。
- すぐ下のリストの「新しいURLを追加」の箇所をダブルクリックし、以下のローカルURLを追加して「OK」をクリックします:
http://127.0.0.1:8080
ステップ 3. EAの起動設定
- チャート上で取引を行いたい銘柄のチャート(5分足等)を開きます。
- ナビゲーターウィンドウから拡張版EA
Adaptive_Closer_TVをチャートに適用します。 - パラメータ設定ウィンドウで以下を設定し、「アルゴリズム取引」を有効化します:
InpUseTradingView:true(有効)InpTVServerURL:"http://127.0.0.1:8080/alerts"InpTVDefaultVolume: デフォルト発注ロット数(例:0.1)InpMagic: マジックナンバーの設定(※他のEAと重複しないよう注意してください)
ステップ 4. TradingView アラートの設定
TradingViewでシグナルを送信したいインジケーターやストラテジーのアラートを作成し、以下のように設定します。
- Webhook URL:
ステップ 2 でコピーした ngrok の URL の末尾に /webhook を追加して設定します。
- 設定例:
https://xxxx-xxxx.ngrok-free.app/webhook
---
📋 対応する取引アクション用語(全10種)
中継サーバーおよびEAが受け取れる全アクション用語の一覧です。大文字・小文字は区別されません。
#### ① 新規エントリー(発注)用
"buy": 指定銘柄の買い(ロング)注文を新規発注。"sell": 指定銘柄の売り(ショート)注文を新規発注。
#### ② 全決済(一括手仕舞い)用
対象銘柄の保有ポジション(買い・売り両方)をすべて成行決済します。
"close""exit"(※"close"と同義)
#### ③ 買いポジションのみ決済用
対象銘柄の保有ポジションのうち、買いポジションのみを決済します。
"closebuy""exitbuy""exit_buy"
#### ④ 売りポジションのみ決済用
対象銘柄の保有ポジションのうち、売りポジションのみを決済します。
"closesell""exitsell""exit_sell"
> 📌 ヒント:
> * symbol にはMetaTrader上の取引銘柄名を入力します。EAが自動でサフィックス(例: XAUUSD.m や GOLD)を部分一致で検知して補正します。
> * volume(ロット数)は省略可能です。省略した場合は、EAのパラメータ InpTVDefaultVolume で設定した値で発注されます。
---
📊 インジケーター(アラート)での記載方法
インジケーターの条件一致(ゴールデンクロス等)でアラートを設定する場合、メッセージ欄に直接JSONテキストを記載します。
#### 🔹 買い(BUY)エントリーのメッセージ例:
{
"action": "buy",
"symbol": "XAUUSD",
"volume": 0.1
}
#### 🔹 全決済(EXIT)のメッセージ例:
{
"action": "exit",
"symbol": "XAUUSD"
}
---
📈 ストラテジー(Strategy)での記載方法
TradingViewのストラテジー(バックテスト可能なPineスクリプト)から自動発注を行う場合は、以下のいずれかの方法を設定します。
#### 💡 推奨:方法A. Pineスクリプト内に alert() 関数を記述する(最も確実)
ストラテジーコードの中に直接JSONメッセージを記述し、エントリーや決済のタイミングで実行させます。
【Pineスクリプトの記述例】
// エントリー(買い)条件成立時
if buy_condition
strategy.entry("Long", strategy.long)
alert('{"action": "buy", "symbol": "' + syminfo.ticker + '", "volume": 0.1}', alert.freq_once_per_bar)
// 決済(クローズ)条件成立時
if exit_condition
strategy.close("Long")
alert('{"action": "exit", "symbol": "' + syminfo.ticker + '"}', alert.freq_once_per_bar)
【TradingViewアラート設定画面での設定方法】
- アラート作成ダイアログを開き、「条件」にストラテジー名を選択します。
- アラートのメッセージ欄には、TradingViewのシステム変数である
{{strategy.order.alert_message}}のみを記入します。
これで、Pineスクリプト内の alert() で書いたJSONがそのまま中継サーバーへ転送されます。
#### 💡 方法B. ストラテジー標準のプレースホルダー(変数)を利用する
Pineスクリプトのコードを編集せず、TradingViewのアラート設定画面のメッセージ欄だけで動的にデータを生成する方法です。
【メッセージ欄の記述例】
{
"action": "{{strategy.order.action}}",
"symbol": "{{ticker}}",
"volume": {{strategy.order.contracts}}
}
- 注意点:
この自動変数を使う場合、買いポジションの決済時にTradingViewは「売り(sell)」のアクションとして中継サーバーに通知します。両建て対応口座(ヘッジングタイプ)のMT5では、"sell" を受け取ると決済ではなく「新規に売りポジションを建てる(両建て)」動作になってしまうため、決済を確実に行いたい場合は 【方法A】 の利用を強く推奨します。
---
🔍 トラブルシューティング
- EAのログにWebRequestエラーが表示される場合:
MT5の「ツール > オプション > エキスパートアドバイザ」で http://127.0.0.1:8080 が正しく追加されているか再確認してください。
- ダミーのアラートを送信してテストしたい場合:
中継サーバーが起動した状態で、WindowsのPowerShellを開き、以下のコマンドを貼り付けて実行することで、即座に「買い」のアラートや「決済」をシミュレートできます:
# 買いエントリーのテスト
Invoke-RestMethod -Uri "http://127.0.0.1:8080/webhook" -Method Post -ContentType "application/json" -Body '{"action":"buy","symbol":"XAUUSD","volume":0.01}'
# 一括決済のテスト
Invoke-RestMethod -Uri "http://127.0.0.1:8080/webhook" -Method Post -ContentType "application/json" -Body '{"action":"exit","symbol":"XAUUSD"}'
---
🧪 Webhookテスト用ストラテジーの利用方法
本パッケージには、TradingViewから中継サーバーを経由してMT5が正常に発注・決済処理を行えるかをテストするための専用ファイル TradingView_Webhookテスト用ストラテジー.txt が同梱されています。
⚠️ 【超重要】デモ口座でのテスト実行について
⚙️ 設定方法
- 同梱されている
TradingView_Webhookテスト用ストラテジー.txtを開き、中身のコード全体をコピーします。 - TradingViewで取引を行いたい銘柄のチャート(※ 動作確認用に5分足や1分足などの短い時間足がおすすめです)を開きます。
- 画面下部の 「Pineエディタ」 タブを開き、コピーしたコードを貼り付けて 「保存」 し、「チャートに追加」 をクリックします。
- チャート上に売買矢印が表示されることを確認します(注文数上限エラーを防ぐため、直近100本分のバーのみ動作する制限をかけています)。
- 画面上部の「アラートを追加」をクリックし、以下の設定を行います:
- 条件:
MT4/MT5 Webhook Bridge Test Strategy - Webhook URL: ngrokのWebhookアドレス(例:
https://xxxx-xxxx.ngrok-free.app/webhook) - メッセージ:
{{strategy.order.alert_message}}とだけ入力 - アラートを作成すると、次の足が確定したタイミングから順次MT5へ買い・売り・決済のWebhookシグナルが送られ、自動で発注とポジションクローズが行われるようになります。