コンテンツにスキップ

【EA化#02】Tickスパイク逆張りEA — 急変動からの平均回帰を狙う

この記事の3行まとめ

  • ⚡ Tickレベルの急激な値動き(スパイク)を検出して逆張りエントリー
  • 📈 MA回帰決済または固定TP/SLで利確
  • ⚠️ リアルタイム専用(バックテスト不可)

はじめに

この記事は、MQL移植シリーズ #04 TickチャートMAのインジケータをベースに、実際にトレードするEAに変換したものです。

Tickレベルの世界はノイズが多いですが、「急激な値動き後の平均回帰」は統計的に有効なエッジがあります。

トレードロジックの考え方

大きなスパイク(瞬間的な急騰/急落)は「オーバーシュート」しやすい。
→ 逆張りで入り、平均値(MA)に戻ったところで利確する。


ロジック概要

graph LR
    A[Tick受信] --> B{直近5Tickで<br/>10pips以上変動?}
    B -->|No| A
    B -->|Yes| C{スパイク方向}
    C -->|急騰| D[売りエントリー<br/>(逆張り)]
    C -->|急落| E[買いエントリー<br/>(逆張り)]
    D --> F{決済条件}
    E --> F
    F -->|MAタッチ| G[利確]
    F -->|TP到達| H[利確]
    F -->|SL到達| I[損切り]

エントリー条件

条件 説明
スパイク検出 直近5Tick以内で10pips以上の値動き
上昇スパイク → 売りエントリー(逆張り)
下降スパイク → 買いエントリー(逆張り)

決済条件

方式 説明
MA回帰決済 50TickMAにタッチしたら利確
固定TP 5pips(デフォルト)
固定SL 10pips(デフォルト)

パラメータ一覧

スパイク検出設定

パラメータ デフォルト 説明
SpikePips 10.0 スパイク検出閾値(pips)
SpikeTickWindow 5 何Tick以内の変動か

決済設定

パラメータ デフォルト 説明
TakeProfitPips 5.0 利確幅(pips)
StopLossPips 10.0 損切り幅(pips)
UseMAExit true MAタッチで決済
MAExitPeriod 50 決済用MA期間(Tick数)

フィルター設定

パラメータ デフォルト 説明
MaxSpreadPips 3.0 最大スプレッド(pips)
UseTrendFilter true トレンドフィルター使用
TrendMAPeriod 100 トレンド判定用MA期間

リスク管理機能

1. スプレッドフィルター

スプレッドが設定値(デフォルト3pips)を超えている場合はエントリーしません。
→ 指標発表時や流動性低下時の不利なエントリーを回避

2. トレンドフィルター

100TickMA(長期MA)を使用してトレンド方向を判定:

  • 上昇トレンド時: 売り(逆張り)のみ許可
  • 下降トレンド時: 買い(逆張り)のみ許可

→ トレンドに逆らう逆張りのリスクを軽減


使い方

インストール

  1. Tick_Spike_EA.mq5 をダウンロード
  2. MQL5/Experts/ フォルダに配置
  3. MetaEditorでコンパイル
  4. チャートにドラッグ&ドロップ
  5. 「アルゴリズム取引を許可する」にチェック

推奨設定

通貨ペア

  • USDJPY / EURUSD — スプレッドが狭いメジャーペア推奨
  • ボラティリティが高い時間帯(ロンドン〜NY)が有効

時間足について

このEAは時間足に依存せず動作します。
Tickデータをリアルタイムで処理するため、どの時間足にアタッチしても同じ動作をします。


⚠️ 重要な注意事項

バックテスト不可

このEAはリアルタイム専用です。
MT5のストラテジーテスターではTickデータの再現が不完全なため、正確なバックテストができません。

検証方法:

  1. まずデモ口座で十分にフォワードテスト
  2. 結果を記録・分析
  3. 問題なければ小ロットで実運用

高頻度トレード

スパイクが頻繁に発生する相場では、トレード回数が多くなります。
スプレッドコストに注意し、低スプレッド業者での運用を推奨します。

指標発表時

経済指標発表時は異常なスパイクが発生しやすく、想定外の動きをする可能性があります。
重要指標前後は手動でEAを停止することを推奨します。


技術的なポイント

Tickデータの管理

EAはインジケータ同様、Tickデータを配列で管理しています:

C++
double TickData[];  // 最大500Tick保持
int TickCount = 0;  // 現在のTick数

スパイク検出ロジック

C++
int DetectSpike()
{
   double currentPrice = TickData[0];
   double pastPrice = TickData[SpikeTickWindow];  // 5Tick前
   double changePips = MathAbs(currentPrice - pastPrice) / PipsToPrice(1);

   if(changePips >= SpikePips)  // 10pips以上
   {
      return (currentPrice > pastPrice) ? 1 : -1;  // 上昇 or 下降
   }
   return 0;
}

ソースコードのダウンロード

ファイルの種類:エキスパートアドバイザー(EA)

保存先: MQL5/Experts/ フォルダ

Tick_Spike_EA.mq5 をダウンロード


関連記事


EA化シリーズ一覧に戻る