MT5 EA MQL5コード 無料配布(AI対応予定)
世間に溢れているのがMT4ばかりなので、MT5のEAコード(MQL5ファイル)を公開します。
5,000行を超える大規模EAです。
サンプルとしてご利用ください。

Claudeによる評価は4.2/5を達成し、特にリスク管理が徹底されています。

スマートフォンでの通知に対応しています。
YenPulse の他のEAとの異なる点
Auto_YenPulse_V4.0.1 は、他の一般的なEAと比較して、以下の点で独自性を有しています。
(将来的にGrok AIと連携予定)

市況適応型の利益確定およびリスク管理:
多くのEAが固定のリスクリワード比率やエントリー時のボラティリティに基づいたトレーリングストップを採用する中、本EAは現在の市場ボラティリティ(ATR)に応じてテイクプロフィット目標を動的に調整します。
同様に、トレーリングストップもリアルタイムのATRに基づいて計算され、変化する市場環境に適応したリスク管理を実行します。これにより、利益の最大化と損失の限定をより柔軟に行うことを目指します。
ファンダメンタル要因の組み込み (CFDレートフィルター):
テクニカル指標だけでなく、ドルインデックス(DXY)および米国債利回り(UST10Y, UST05Y, UST30Y)といったCFD銘柄の短期的な価格傾斜を分析します。
これにより、ドル全体の強弱や金利動向、イールドカーブの形状といったファンダメンタルな要素をエントリー判断に組み込み、テクニカル分析だけでは捉えきれない市場の方向性を補完します。このインターマーケット分析の統合は、短期スキャルピングEAとしては特徴的です。
東京市場に特化した時間・イベントフィルター:
一般的なニュースフィルターに加え、東京市場特有の値動き要因である**仲値(午前9時55分 JST)の時間帯や、特定の早朝時間帯(固定ニュースブロック)**を考慮したエントリー停止フィルターを実装しています。これにより、予測困難なボラティリティを回避します。
堅牢性と透明性の重視:
ネットワーク遅延やブローカー応答を想定した詳細な注文リトライロジック(指数バックオフ遅延付き)を実装し、約定の確実性を高めています。
詳細なダッシュボード機能により、EAの内部状態、フィルターの適用状況、CFDレート分析結果などをリアルタイムで可視化し、運用状況の透明性を確保しています。
これらの要素により、Auto_YenPulse_V4.0.1 は、単なるテクニカルシグナルに基づく自動売買システムではなく、市場のボラティリティやファンダメンタルな背景、特定の市場時間帯の特性を考慮した、より適応的かつ堅牢な運用を目指すEAとして設計されています。
以下に仕様書を公開します。
1. 概要
本仕様書は、MQL5で開発された自動スキャルピングシステム「YenPulse」(バージョン4.02) の詳細な技術仕様を定義するものです。
取引戦略は、トレンドフォロー(モードA)とボラティリティ・ブレイクアウト(モードB)の2つの異なるロジックを搭載し 、CFD(DXY、米国債金利)のレート動向を分析する独自のフィルター機能 を組み合わせてエントリーシグナルを精査します。
すべての取引時間、停止時間は日本標準時(JST)を基準に設定されており 、詳細なリスク管理機能(R単位での日次・週次ストップ) 、堅牢な注文リトライおよびポジション復旧機能 を備えています。
2. 基本仕様
EA名称:YenPulse
バージョン:4.02
プラットフォーム:MetaTrader 5 (MQL5)
取引通貨ペア:USD/JPY
時間足:M5 (5分足)
推奨リスク:0.5% - 2.0% (パラメータデフォルト: 0.3%)
3. 取引戦略
本EAは、独立した2つのエントリーロジック(モードA、モードB)を搭載しています 。
3.1.
戦略A: トレンド押目/戻り (Trend Pullback)
EMAのパーフェクトオーダーに基づいた、トレンド方向への押目買い・戻り売りを狙うロジックです。
トレンド定義:
買い: Close(t) > EMA(200) かつ EMA(20) > EMA(50)
売り: Close(t) < EMA(200) かつ EMA(20) < EMA(50)
エントリー条件 (買いシグナルの例):
トレンド: 買いトレンドが成立している 。
プルバック: 1本前の足(t-1)がEMA(20)に接触、またはInpPullbackTolerance (ATRの0.115倍) の範囲内に接近している 。
ブレイク: 現在の足(t)の終値が、1本前の足(t-1)の高値を上回る 。
フィルター: その他の共通フィルター(後述)およびCFDレートフィルター(買い許可) をクリアする。
ロジック固有フィルター:
大ローソク足フィルター: シグナル足(t)の実体が ATR(14) * InpLargeCandleFilter (1.5倍) を超える場合はエントリーを見送る 。
RSIフィルター (任意): InpUseRSIFilterが有効な場合、1本前の足(t-1)のRSI(14)が指定範囲内(デフォルト 40-60)にある必要がある 。
3.2.
戦略B: スクイーズ・ブレイクアウト (Squeeze Breakout)
ボリンジャーバンド(BB)とケルナーチャネル(KC)を利用した「スクイーズ」(低ボラティリティ状態)からのブレイクアウトを狙うロジックです。
スクイーズ定義:
ボリンジャーバンド(20, 2σ) が、ケルナーチャネル(20, 1.5) の内側に収まっている状態 。
この状態が InpSqueezeMinBars (2本) 以上継続していることを確認する 。
エントリー条件 (買いシグナルの例):
スクイーズ: 直近でスクイーズが観測されている 。
拡大: 現在の足(t)のBB幅が、1本前の足(t-1)のBB幅よりも拡大している 。
ブレイク: 現在の足(t)の終値が、ボリンジャーバンドのアッパーバンドを上回る 。
フィルター: その他の共通フィルター(後述)およびCFDレートフィルター(買い許可) をクリアする。
ロジック固有フィルター:
大ローソク足フィルター: シグナル足(t)の実体が ATR(14) * InpLargeCandleFilter (1.5倍) を超える場合はエントリーを見送る 。
3.3. 戦略の優先度
InpModeAPriority (デフォルト: true) が有効な場合、モードAとモードBのシグナルが同時に発生した際は、モードAのシグナルが優先されます 。
4. 注文執行ロジック
エントリーはすべて逆指値注文(Pending Order) によって行われます。
4.1. エントリー (Entry)
注文種別: 買いシグナルの場合はBUY STOP 、売りシグナルの場合はSELL STOP 。
注文価格:
シグナルが確定した足(t)の高値(Buy Stop)または安値(Sell Stop)を基準とします 。
基準価格に対し、スプレッドやATRを考慮した動的バッファを加算(Buy Stop)または減算(Sell Stop)した価格で発注されます 。
動的バッファ = Max( InpBufferPips, 0.2 * Spread, 0.1 * ATR(14) )
価格補正機能:
発注価格がブローカーの最小ストップレベル(stops_level)に近すぎる場合、EAは自動的に価格を補正します 。
この補正は最大3回までリトライされ 、市場価格から安全なマージンを確保した価格に再設定されます 。
有効期限: 発注時から InpPendingExpireBars (5本) 分の時間が経過すると、注文は自動的に失効します 。
4.2. ロットサイズ計算 (Lot Sizing)
InpRiskPercent (デフォルト: 0.3%) に基づき、口座の有効証拠金 とストップロス(SL)までの値幅 から、1R(1トレードあたりの許容損失額)に収まるようロットサイズが自動計算されます。
計算されたロットは、ブローカーの最小・最大ロットおよびロットステップに応じて丸められます 。
リスク検証: 最小ロット等で丸めた結果、実リスクが目標リスク(1R)の120%を超える場合、InpRiskExceedCancel (true) によりエントリーはキャンセルされます 。
4.3. ストップロス (Stop Loss)
SL値幅は ATR(14) * InpSLATRMultiplier (1.2倍) に基づいて計算されます。
計算されたSL幅は、InpSLMinPips (5.0 pips) と InpSLMaxPips (9.0 pips) の範囲内にクランプ(制限)されます 。
4.4. テイクプロフィット (Take Profit)
TPはSL値幅に基づき、**動的なリスクリワードレシオ(RRR)**を乗じて計算されます 。
RRRは、シグナル確定時のATR(14)の値によって線形補間されます 。
ATRが InpMinATRPips (3.0) 以下の場合、RRR = InpTPRatioMin (1.2) 。
ATRが InpMaxATRPips (12.0) 以上の場合、RRR = InpTPRatioMax (1.5) 。
ATRが上記の中間の場合、RRRは1.2から1.5の間で線形補間されます 。
5. ポジション管理
ポジション約定後は、EAが自動的にSL(ストップロス)を管理します。
5.1. ブレークイーブン (Breakeven)
ポジションの含み益が InpBreakEvenPips (6.0 pips) に達すると、SLが「エントリー価格 + InpBreakEvenOffset (0.5 pips) 」の位置に移動されます 。
これにより、以降の価格変動で損失が発生するリスクが限定されます。
5.2. トレーリングストップ (Trailing Stop)
ブレークイーブン発動後、ポジションはトレーリングストップモードに移行します 。
SLは、現在のATR(14) [shift 0] に基づいた動的な距離で、有利な方向へ追従します。
トレイル幅: Max( 0.8 * ATR(14)[0], 2.5 pips )
(注:トレイル幅の計算には、エントリー時のATRではなく、現在のATRが使用されます )
6. 共通フィルター
すべてのエントリーシグナルは、以下の共通フィルターを通過する必要があります。
6.1. 市場環境フィルター
スプレッド: 現在のスプレッドが InpMaxSpreadPips (0.5 pips) を超えている場合、エントリー(および保留注文)は許可されません 。
ATR (ボラティリティ): ATR(14)が InpMinATRPips (3.0) 未満、または InpMaxATRPips (12.0) を超える場合、エントリーは許可されません 。
6.2. 時間フィルター (すべてJST基準)
以下の時間帯は、新規エントリーおよび保留注文の維持が停止されます。
取引セッション:
朝セッション: 08:05 - 11:30 JST
昼セッション: 12:30 - 15:50 JST
夜セッション (夏): 16:05 - 26:50 (翌02:50) JST
夜セッション (冬): 17:05 - 27:50 (翌03:50) JST
(上記セッション時間外は取引停止 )
ニュースフィルター: InpNewsFilter (true)
USDまたはJPYの「高」および「中」インパクト の経済指標発表前後 InpNewsMinutesBefore/After (15分) は取引停止。
仲値フィルター: InpNakaneFilter (true)
InpNakaneStart (09:45) - InpNakaneEnd (10:05) JST は取引停止。
ロールオーバーフィルター: InpRolloverFilter (true)
サーバー時間00:00 の前後 InpRolloverMinutes (10分) は取引停止。
固定ブロックフィルター (ハードコード):
東京時間朝方の特定指標(8:50、9:30)を回避するため、以下の時間帯は強制的に取引が停止されます 。
ブロック1: 08:40 - 09:00 JST
ブロック2: 09:20 - 09:40 JST
7. CFDレートフィルター
本EAのコア機能の一つとして、USD/JPYの先行指標とされるCFD銘柄(DXY, 米国債金利)の動向を分析するフィルターを搭載しています 。
監視銘柄: InpProxySymbols (DXY_Z5, UST10Y_Z5, UST05Y_Z5, UST30Y_Z5)
計算方法:
各銘柄の InpSlopeTimeframe (M1) のローソク足 InpSlopeMinutes (20本) 分のデータを使用し、回帰分析により「傾き(スロープ)」を算出します 。
算出されたスロープは、価格スケールを統一するため、終値に対する割合(%)で正規化されます 。
InpSlopeAggMethod ("average") に基づき、全銘柄の正規化スロープが平均化されます 。
金利差 (イールドスプレッド):
InpUseYieldSpread (true) が有効な場合、追加で「UST30Y_Z5のスロープ - UST05Y_Z5のスロープ」 が計算されます。
この「金利差スロープ」は、上記3で計算された「総合スロープ」とさらに平均化され、最終的な傾き g_combinedSlope が決定されます 。
判定:
最終的な傾きが InpMinSlope (0.01) を超える場合は「買い方向が有利」、-InpMinSlope を下回る場合は「売り方向が有利」と判断されます。
ヒステリシス: 判定の頻繁な切り替わり(ノイズ)を防ぐため、InpSlopeHysteresis (0.006) のバッファが設けられています。状態が反転するには、このバッファを含めた閾値を超える必要があります 。
状態保持: 新しい判定状態が InpSlopeMinHoldSec (120秒) 継続した場合にのみ、フィルターが有効化されます 。
適用除外:
InpApplyOnlyLowVol (true) が有効な場合、ATRが InpMinATRPips (3.0) を超える高ボラティリティ時は、このフィルターは自動的に無効化(バイパス)されます 。
ニュース時間中 もバイパスされます。
8. リスク管理
8.1. 証拠金リスク (Per-Trade Risk)
「4.2. ロットサイズ計算」に記載の通り、1トレードあたりのリスクは InpRiskPercent (0.3%) に基づき自動計算されます。
8.2. 口座R-Stop (Account R-Stop)
本EAは、1R(1トレードあたりの許容損失額)を基準とした日次・週次のドローダウン監視機能を備えています。
R基準額 (Risk Base):
1Rの円貨額は、日次および週次の開始時点の有効証拠金を基準に計算されます 。
この基準額はMT5のグローバル変数(GV)に保存され、EAの再起動後も引き継がれます 。
デイリーストップ:
当日の損失額(含み損含む)が「R基準額(日次) × InpDailyStopR (2.0R)」 に達した場合、g_haltForDay がtrueとなり、その日の新規エントリーがすべて停止されます 。
ウィークリーストップ:
当週の損失額(含み損含む)が「R基準額(週次) × InpWeeklyStopR (5.0R)」 に達した場合、g_haltForWeek がtrueとなり、その週の新規エントリーがすべて停止されます 。
リセット:
デイリーストップはサーバー時間の翌日に自動解除 、ウィークリーストップは週明け(月曜日)に自動解除されます 。
9. システム・堅牢性機能
9.1. 発注リトライ (Order Retry)
OrderSend がリクオート、接続エラー、タイムアウトなど の一時的なエラーで失敗した場合、EAは注文を諦めません。
シグナルはリトライキューに登録され 、InpRetryDelayMs (50ms) 後に再試行されます。
リトライは最大 InpMaxRetries (3回) まで実行されます。
再試行の間隔は、InpMaxRetryBackoffAttempts (5回) までは指数関数的(Exponential Backoff)に増加し(例: 50ms -> 100ms -> 200ms...) 、それ以降は2000msに固定されます 。
9.2. 状態管理 (State Management)
ATRの永続化:
ポジションの約定時、その時点でのATR(14)の値がグローバル変数(GV)にポジションチケット番号と紐付けて保存されます 。
これにより、EAを再起動しても、既存ポジションのトレーリングロジック(v4.01以前)やTP計算の基準を正確に復元できます。
孤立ポジションの復旧:
InpAutoRecoverOrphans (true) が有効な場合、EA起動時にマジックナンバーが一致する「孤立したポジション」を検知 すると、自動的にEAの管理下に置き、ブレークイーブンやトレーリングを再開します 。
同期チェック:
InpSyncCheckSeconds (10秒) ごとに、EAが認識しているポジション状態と、サーバー上の実際のポジション状態を同期・検証します 。
10. ユーティリティ
10.1. ダッシュボード
InpShowDashboard (true) が有効な場合、チャート左下(デフォルト) にEAの稼働状況を示す詳細なダッシュボードが表示されます。
表示項目:
総合: 稼働状態、通知設定、最終ティック、同期状態
リスク: R-Stopまでの残額、本日のPF・平均R・最大連勝/敗
日次: 本日勝敗・損益・最大DD・最大含み益
ポジション: ポジション状態(建値待機、トレイル中など)、含み損益
週次/月次: 勝敗、損益、取引回数
戦略: モードA/Bの有効状態、クールダウン残りバー数
CFDフィルター: 現在のフィルター状態(買い許可、売り禁止など)、各CFD銘柄の傾き(DXY, 10Y, 5Y, 30Y)、金利差スロープ
テクニカル: ATR、RSI、EMAトレンド
フィルター: ニュース状態、次回ニュース、固定ブロック残り時間、カレンダー更新時刻
システム: エラー数、リトライ統計、最終失敗理由
口座: スプレッド、口座残高、有効証拠金、余剰証拠金、レバレッジ、口座種別
時間: 稼働時間ステータス(稼働中、時間外など)
10.2. iOS通知
InpEnableNotifications (true) が有効な場合、以下のタイミングでMT5モバイルアプリにプッシュ通知が送信されます。
EA起動時
EA終了時(日次サマリー含む)
保留注文発注時 (InpNotifyOnOrder)
ポジション約定時 (InpNotifyOnOpen)
ポジション決済時 (InpNotifyOnClose)
エラー発生時 (InpNotifyOnError)
日次リセット時(前日サマリー) (InpNotifyOnDailyReset)
朝セッション開始時
10.3. エラーログ
InpEnableErrorLog (true) が有効な場合、発生したエラーはEA内部のメモリ(最大 InpErrorLogMaxSize 件) に記録されます。
InpLogToFile (true) が有効な場合、EA終了時に内部ログが YenPulse_ErrorLog_YYYY.MM.DD.csv というファイル名でCSV出力されます 。
11. 入力パラメータ一覧
本EAは、以下の入力パラメータ(input)によって動作が制御されます。
11.1. 基本設定
InpEAEnabled: EAの稼働/停止
InpMagicNumber: マジックナンバー
InpSymbol: 取引シンボル
11.2. iOS通知設定
InpEnableNotifications: iOS通知のマスター有効/無効
InpNotifyOnOrder: 保留注文時に通知
InpNotifyOnOpen: 約定時に通知
InpNotifyOnClose: 決済時に通知
InpNotifyOnError: エラー時に通知
InpNotifyOnDailyReset: 日次リセット時に通知
11.3. 可視化(直近理由)
InpShowLastReason: ダッシュボードに「直近の不成立理由」を表示
InpReasonHoldSec: 理由の表示保持時間(秒)
11.4. リスク管理
InpRiskPercent: 1トレードあたりのリスク率 (%)
InpDailyStopR: 1日のR単位ストップロス (R)
InpWeeklyStopR: 1週間のR単位ストップロス (R)
InpRiskExceedCancel: ロット計算後の実リスクが1.2Rを超えた場合にキャンセル
11.5. リトライ設定
InpMaxRetries: 注文失敗時の最大リトライ回数
InpRetryDelayMs: リトライ初期遅延(ミリ秒)
InpLogRetries: リトライ試行をログに出力
InpMaxRetryBackoffAttempts: 遅延を指数関数的に増やす最大試行回数
11.6. エラーログ設定
InpEnableErrorLog: 内部エラーログを有効化
InpErrorLogMaxSize: 内部ログの最大保存件数
InpLogToFile: EA終了時にログをCSVファイルに書き出す
11.7. 同期チェック設定
InpSyncCheckSeconds: ポジション状態の同期チェック間隔(秒)
InpAutoRecoverOrphans: 起動時に孤立ポジションを自動復旧
11.8. モード選択
InpEnableModeA: 戦略A(トレンド押目/戻り)を有効化
InpEnableModeB: 戦略B(スクイーズ)を有効化
InpModeAPriority: 両モード同時発生時にモードAを優先
11.9. フィルター設定
InpMaxSpreadPips: 許容最大スプレッド (pips)
InpMinATRPips: 最小ATR (pips)
InpMaxATRPips: 最大ATR (pips)
InpBufferPips: 逆指値の最小バッファ (pips)
InpLargeCandleFilter: 大ローソク足フィルターのATR倍率
11.10. CFDレートフィルター設定
InpUseRatesFilter: CFDレートフィルターを有効化
InpProxySymbols: 監視するCFDシンボル(カンマ区切り)
InpSlopeMinutes: 傾き計算に使う時間(分)
InpMinSlope: 傾きの判定閾値(正規化後%)
InpSlopeTimeframe: 傾き計算に使う時間足
InpSlopeAggMethod: 傾きの集計方法 (average or max)
InpUseYieldSpread: 金利差(30y-05y)スロープの計算を有効化
InpApplyOnlyLowVol: 低ボラティリティ時(ATR < Min)のみフィルターを適用
InpSlopeHysteresis: 判定のヒステリシス幅 (%)
InpSlopeMinHoldSec: 判定状態の最小保持時間(秒)
11.11. 時間設定(JST)
InpEnableMorningSession: 東京時間(朝)セッションの有効化
InpMorningStartSummer / EndSummer: 朝セッション(夏時間)
InpMorningStartWinter / EndWinter: 朝セッション(冬時間)
InpTradingStartSummer / EndSummer: 夜セッション(夏時間)
InpTradingStartWinter / EndWinter: 夜セッション(冬時間)
InpServerOffsetSummer / OffsetWinter: JST計算用のサーバーUTCオフセット
InpEnableMiddaySession: 東京時間(午後)セッションの有効化
InpMiddayStartJST / EndJST: 昼セッション(JST固定)
11.12. 停止設定
InpNewsFilter: ニュースフィルターの有効化
InpNewsMinutesBefore / After: ニュース発表前後の停止時間(分)
InpNakaneFilter: 仲値フィルターの有効化
InpNakaneStart / End: 仲値停止時間(JST)
InpRolloverFilter: ロールオーバーフィルターの有効化
InpRolloverMinutes: サーバー0時前後の停止時間(分)
11.13. 注文設定
InpPendingExpireBars: 保留注文の有効期限(バー本数)
InpSlippageEmergency: (v4.02では未使用)
InpCooldownBars: ポジション約定後のクールダウン(バー本数)
InpPendingOrderCooldownBars: 保留注文発注後のクールダウン(バー本数)
11.14. モードA設定
InpEMA200Period: EMA大
InpEMA50Period: EMA中
InpEMA20Period: EMA小
InpPullbackTolerance: EMA(20)へのプルバック許容幅 (ATR倍率)
InpUseRSIFilter: RSIフィルターの有効化
InpRSIPeriod: RSI期間
InpRSILow / High: RSIの許容下限・上限
11.15. モードB設定
InpBBPeriod: ボリンジャーバンド期間
InpBBDeviation: ボリンジャーバンド偏差
InpKCPeriod: ケルナーチャネル期間
InpKCMultiplier: ケルナーチャネルATR倍率
InpSqueezeMinBars: スクイーズの最小継続バー本数
11.16. SL/TP設定
InpSLMinPips / MaxPips: SLの最小・最大幅 (pips)
InpSLATRMultiplier: SL計算用のATR倍率
InpTPRatioMin / Max: TP(RRR)の最小・最大比率
InpBreakEvenPips: ブレークイーブン発動の利益幅 (pips)
InpBreakEvenOffset: ブレークイーブン時のオフセット (pips)
11.17. ダッシュボード設定
InpShowDashboard: ダッシュボードの表示/非表示
InpDashboardCorner: 表示コーナー
InpDashboardX / Y: 表示X/Y座標
InpDashboardFontSize: フォントサイズ
11.18. ニュースフィルター詳細
InpIncludeMediumImpact: 「中」インパクトのニュースも対象にする
InpNewsFilterRequired: カレンダー取得失敗時に取引を強制停止
InpCalendarRefreshMinutes: カレンダーの更新間隔(分)
InpCalendarLookaheadHours: カレンダーの先読み時間(時間)
