【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)を使用してトレンド方向を判定:
- 上昇トレンド時: 売り(逆張り)のみ許可
- 下降トレンド時: 買い(逆張り)のみ許可
→ トレンドに逆らう逆張りのリスクを軽減
使い方¶
インストール¶
Tick_Spike_EA.mq5をダウンロードMQL5/Experts/フォルダに配置- MetaEditorでコンパイル
- チャートにドラッグ&ドロップ
- 「アルゴリズム取引を許可する」にチェック
推奨設定¶
通貨ペア
- USDJPY / EURUSD — スプレッドが狭いメジャーペア推奨
- ボラティリティが高い時間帯(ロンドン〜NY)が有効
時間足について
このEAは時間足に依存せず動作します。
Tickデータをリアルタイムで処理するため、どの時間足にアタッチしても同じ動作をします。
⚠️ 重要な注意事項¶
バックテスト不可
このEAはリアルタイム専用です。
MT5のストラテジーテスターではTickデータの再現が不完全なため、正確なバックテストができません。
検証方法:
- まずデモ口座で十分にフォワードテスト
- 結果を記録・分析
- 問題なければ小ロットで実運用
高頻度トレード
スパイクが頻繁に発生する相場では、トレード回数が多くなります。
スプレッドコストに注意し、低スプレッド業者での運用を推奨します。
指標発表時
経済指標発表時は異常なスパイクが発生しやすく、想定外の動きをする可能性があります。
重要指標前後は手動でEAを停止することを推奨します。
技術的なポイント¶
Tickデータの管理¶
EAはインジケータ同様、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/ フォルダ