見出し画像

MT5 EA MQL5コード 無料配布(AI対応予定)

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

Claudeによる評価

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

スマートフォンへの通知も対応

スマートフォンでの通知に対応しています。


YenPulse の他のEAとの異なる点

Auto_YenPulse_V4.0.1 は、他の一般的なEAと比較して、以下の点で独自性を有しています。
(将来的にGrok AIと連携予定)

シンボルを使ったリスク管理
  1. 市況適応型の利益確定およびリスク管理:

    • 多くのEAが固定のリスクリワード比率やエントリー時のボラティリティに基づいたトレーリングストップを採用する中、本EAは現在の市場ボラティリティ(ATR)に応じてテイクプロフィット目標を動的に調整します。

    • 同様に、トレーリングストップリアルタイムのATRに基づいて計算され、変化する市場環境に適応したリスク管理を実行します。これにより、利益の最大化と損失の限定をより柔軟に行うことを目指します。

  2. ファンダメンタル要因の組み込み (CFDレートフィルター):

    • テクニカル指標だけでなく、ドルインデックス(DXY)および米国債利回り(UST10Y, UST05Y, UST30Y)といったCFD銘柄の短期的な価格傾斜を分析します。

    • これにより、ドル全体の強弱や金利動向、イールドカーブの形状といったファンダメンタルな要素をエントリー判断に組み込み、テクニカル分析だけでは捉えきれない市場の方向性を補完します。このインターマーケット分析の統合は、短期スキャルピングEAとしては特徴的です。

  3. 東京市場に特化した時間・イベントフィルター:

    • 一般的なニュースフィルターに加え、東京市場特有の値動き要因である**仲値(午前9時55分 JST)の時間帯や、特定の早朝時間帯(固定ニュースブロック)**を考慮したエントリー停止フィルターを実装しています。これにより、予測困難なボラティリティを回避します。

  4. 堅牢性と透明性の重視:

    • ネットワーク遅延やブローカー応答を想定した詳細な注文リトライロジック(指数バックオフ遅延付き)を実装し、約定の確実性を高めています。

    • 詳細なダッシュボード機能により、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: カレンダーの先読み時間(時間)


いいなと思ったら応援しよう!