PushimeMomentum¶
EA0165_PushimeMomentum_v1.0 / 🧪 候補 — 生成済み・検証待ち
ワンライナー
上昇トレンド中の押し目タッチ(直近スイング安値付近)でロング、またはレジスタンス上抜けからのブレイク買い
判定: ⬜ 未評価(判定準備中)
バックテスト結果がまだ取り込まれていません(判定準備中)。
X起点ライン(話題の手法を検証)
基本情報¶
| 項目 | 値 | 項目 | 値 | |
|---|---|---|---|---|
| シンボル | USDJPY | エントリー種別 | price_level_touch, breakout | |
| 時間足 | H1 | エグジット | atr_tp_sl | |
| 方向 | long_only | 主要インジケータ | EMA_50 |
🧬 DNA 5軸¶
| primary_style | entry_mechanism | regime_target | position_logic | core_indicator_family |
|---|---|---|---|---|
trend_follow | pullback | trending | fixed_sl | moving_average |
🐦 元ネタツイート¶
https://x.com/emi_fx_trader/status/2067593182179971355
📊 バックテスト結果¶
未実行
📝 仕様書 / Specification¶
クリックで展開
押し目モメンタム (PushimeMomentum) EA 仕様書¶
1. 原ネタ要約¶
投稿者は USDJPY の上昇トレンド中盤で、2つの買いシナリオを提示している: - シナリオA(押し目買い): 160.80円付近への調整で拾う - シナリオB(ブレイク買い): 160.95円を上抜けてからの継続買い
投稿の核は「高値・安値を切り上げながら上昇中」という明確なトレンド認識と、「追いかけるより押し目を待つ」という相場心理。FOMC後の値動きが続いているため、急な変動への注意喚起も含まれている。
バズった理由: - 具体的な価格帯(160.80, 160.95)を示しながらも、「押し目」「ブレイク」という古典的かつ有効な戦略を組み合わせている - 「無理な買い増しはNG」という慎重さが、信頼感を生む - 進捗投稿の約束により、フォロワーの参加感を高めている
2. 戦略概要¶
上昇トレンド中の2段階エントリー戦略。
- 第1段(押し目買い): 直近スイング安値(ATRバッファ付き)への押し目タッチでロング
- 第2段(ブレイク買い): 直近レジスタンス(過去20-30本の高値)を上抜けてからの継続買い
両シナリオは排他的ではなく、相場の値動きに応じて先に成立した方を採用する。トレンドフィルター(EMA50)により、上昇トレンド環境を確認してからのみエントリーを許可する。
3. 戦略抽象化¶
投稿の具体価格(160.80, 160.95)は「その時点での市場構造」を表現している。これを汎化すると:
- 160.80円 → 直近スイング安値(過去20本の最安値)- ATR(14) × 0.15
- 160.95円 → 直近レジスタンス(過去30本の最高値)
この相対表現により、別の日・別の価格帯でも同じロジックが機能する。
4. シンボル・時間足¶
- シンボル: USDJPY
- 時間足: H1(1時間足)
- 理由:投稿の「160.90円台まで伸びた後の調整」という文脈から、日中スイング(数時間~1日)を想定。H1が最適。
- 代替案:H4(より長期スイング)、M15(より短期スキャル)
5. エントリー条件¶
共通フィルター(両シナリオ必須)¶
IF (
Close > EMA(50) // 上昇トレンド確認
AND ATR(14) > ATR_SMA(50) * 0.6 // 最低限の流動性
AND Spread <= 2.5 pips // スプレッド上限
AND NOT (VolatilityPanic) // ボラパニック撤退フラグOFF
)
THEN
// 以下のシナリオA or B を評価
ELSE
// エントリー禁止
END
シナリオA:押し目買い(Primary Mode)¶
IF (
// 直近スイング安値への接近
Low <= Lowest(20) + ATR(14) * 0.15 + TouchTolerance(4pips)
AND Close > Lowest(20) // 安値圏での確定(ヒゲタッチOK)
AND Close > EMA(50) // トレンド確認
AND Bars_Since_Last_Entry >= 5 // 連打防止
)
THEN
BUY at Market
Magic = 1001
END
条件の意味: - Low <= Lowest(20) + ATR(14) * 0.15 + 4pips:直近20本の最安値から ATR の 15% + 4pips 上までの範囲に、現在足の安値が到達 - Close > Lowest(20):終値は安値圏より上(反発の兆し) - Close > EMA(50):上昇トレンド環境
初期パラメータ: - Lookback_Bars = 20:直近スイング安値の参照期間 - ATR_Buffer_Mult = 0.15:ATR の 15% をバッファとして加算(過度に厳しくない初期値) - Touch_Tolerance_Pips = 4:ヒゲタッチの許容範囲
シナリオB:ブレイク買い(Secondary Mode)¶
IF (
// 直近レジスタンス上抜け
Close > Highest(30)[1] // 前足までの過去30本最高値を現足で上抜け
AND Close > EMA(50) // トレンド確認
AND Bars_Since_Last_Entry >= 5 // 連打防止
)
THEN
BUY at Market
Magic = 1002
END
条件の意味: - Close > Highest(30)[1]:前足までの過去30本の最高値を、現足の終値で上抜け(ブレイク確定) - Close > EMA(50):上昇トレンド環境
初期パラメータ: - Resistance_Lookback_Bars = 30:直近レジスタンスの参照期間 - Breakout_Confirmation_Bars = 1:ブレイク確定に必要な足数(1足で即座に判定)
複数シナリオの扱い¶
- シナリオA と B は同一バーで同時成立しない(A は安値圏、B は高値圏)
- 先に成立した方を採用し、もう一方は無視
- 同一ポジション内では複数エントリーを許可しない(
max_positions = 1)
6. エグジット条件¶
Primary Exit:ATR ベース TP/SL¶
IF (Position_Open)
THEN
SL = Entry_Price - ATR(14) * 1.5
TP = Entry_Price + ATR(14) * 2.5
IF (Close <= SL) THEN
CLOSE at Market // 損切り
ELSE IF (Close >= TP) THEN
CLOSE at Market // 利確
END
END
パラメータ: - ATR_SL_Mult = 1.5:SL = Entry - ATR × 1.5(リスク許容度) - ATR_TP_Mult = 2.5:TP = Entry + ATR × 2.5(リワード、RR 1:1.67)
Alternative Exit 1:トレーリングストップ¶
IF (Position_Open AND Close > Entry_Price + ATR(14) * 0.5)
THEN
TrailingStop = Close - ATR(14) * 1.2
IF (Close <= TrailingStop) THEN
CLOSE at Market
END
END
パラメータ: - Trailing_ATR_Mult = 1.2:トレーリング幅 = ATR × 1.2 - トリガー:含み益が ATR × 0.5 に達したら発動
Alternative Exit 2:建値移動 + トレーリング¶
IF (Position_Open AND Close > Entry_Price + ATR(14) * 1.2)
THEN
SL = Entry_Price // 建値に移動
TrailingStop = Close - ATR(14) * 1.0
IF (Close <= TrailingStop) THEN
CLOSE at Market
END
END
パラメータ: - UseBreakeven = true(初期値) - BreakevenTriggerATR = 1.2:含み益 ATR × 1.2 で建値移動 - Trailing_ATR_Mult = 1.0:建値移動後のトレーリング幅
Time-Based Exit¶
パラメータ: - Time_Exit_Bars = 72:H1 で 72 本 = 3 日間
7. リスク管理¶
ポジションサイジング¶
Risk_Amount = Account_Balance * Risk_Percent / 100
Lot_Size = Risk_Amount / (Entry_Price - SL) / 100000
パラメータ: - Risk_Percent = 0.5%:1 トレードあたりの最大リスク - Max_Positions = 1:同時ポジション数(複数エントリー禁止)
連敗時クールダウン¶
パラメータ: - Consec_Loss_Cooldown = 3:3 連敗でクールダウン発動 - Cooldown_Hours = 24:24 時間の取引停止
1 日の最大取引数¶
パラメータ: - Max_Daily_Trades = 3:1 日最大 3 トレード
逆張り・レンジ戦略の防衛要件¶
本戦略は順張り(トレンドフォロー)であるため、逆張り防衛は不要。ただし、以下の安全装置を含める:
1. 独立したボラティリティ安全フィルター¶
VolatilityPanic = (ATR(14) > ATR_SMA(50) * 2.0)
IF (VolatilityPanic)
THEN
TRADING_PAUSE = until volatility normalizes
// 既存ポジションはクローズ
END
パラメータ: - PanicAtrRatio = 2.0:ATR が平均の 2 倍を超えたら即座に撤退 - 理由:FOMC 後の急変動に対応(投稿の「急な変動には注意」に対応)
2. 最低流動性フィルター¶
ActivityFilter = (ATR(14) > ATR_SMA(50) * 0.6)
IF (NOT ActivityFilter)
THEN
TRADING_PAUSE = until activity recovers
END
パラメータ: - Min_ATR_Ratio = 0.6:ATR が平均の 60% 未満なら取引禁止 - 理由:過度な低ボラ局面でのノイズ取引を避ける
8. 汎用化ポイント¶
固定価格の相対化¶
投稿の「160.80 円」「160.95 円」は、その時点での市場構造を表現している。本 EA では以下のように汎化:
| 投稿の記述 | EA の相対表現 | 理由 |
|---|---|---|
| 160.80 円付近まで押したら | Lowest(20) - ATR(14) * 0.15 | 直近スイング安値を基準に、ATR バッファで柔軟化 |
| 160.95 円付近を上抜けてから | Highest(30) | 直近レジスタンスを基準に、時間経過で自動更新 |
他銘柄への適用可能性¶
この戦略は以下の銘柄でも機能する: - EURUSD:同じ H1 時間足、同じ EMA(50) トレンドフィルター - GBPJPY:JPY クロスのため、pip 単位を調整(1 pip = 0.01) - XAUUSD:ゴールド、同じロジック(ただし ATR 係数は 0.2~0.3 に調整推奨) - NAS100:ナスダック、同じロジック(ただし時間足は M15 推奨)
本質:「上昇トレンド中の押し目 + ブレイク」は、銘柄・時間足を問わず有効な相場構造。
9. Optimization Envelope¶
必ず守る条件(Hard Constraints)¶
- トレンドフィルター:
Close > EMA(50)は削除禁止 - 理由:逆張り化を防ぐため
- ボラパニック撤退:
ATR > ATR_SMA * 2.0での即座クローズは削除禁止 - 理由:FOMC 後の急変動対応
- 最大ポジション数:
Max_Positions = 1は削除禁止 - 理由:複数ポジション同時保有による過度なドローダウン防止
- スプレッド上限:
Spread <= 2.5 pipsは削除禁止 - 理由:スプレッド拡大時の損失防止
緩和してよい条件(Soft Constraints)¶
- EMA 期間:50 → 20~100 の範囲で調整可
- 初期値 50 は中庸、短期化で反応性向上、長期化で安定性向上
- ATR バッファ倍率:0.15 → 0.05~0.35 の範囲で調整可
- 初期値 0.15 は「厳しすぎず、甘すぎず」
- 0.05:より厳密な安値タッチ(無取引リスク増)
- 0.35:より広いバッファ(ダマシリスク増)
- TP/SL 倍率:ATR × 1.5 / 2.5 → 1.0~3.0 の範囲で調整可
- 初期値 RR 1:1.67 は保守的、1:2.0 以上で積極的
- トレーリング幅:ATR × 1.2 → 0.8~2.0 の範囲で調整可
- 初期値 1.2 は中庸、短いほど利確早期化、長いほど利益伸長
最適化してよいパラメータ(Free Parameters)¶
- Lookback_Bars:20 → 10~50 の範囲で最適化
- Resistance_Lookback_Bars:30 → 15~60 の範囲で最適化
- Time_Exit_Bars:72 → 24~168 の範囲で最適化
- Risk_Percent:0.5% → 0.1~2.0% の範囲で最適化
- Min_ATR_Ratio:0.6 → 0.4~0.8 の範囲で最適化
10. 無取引回避の設計¶
問題:初期パラメータでの無取引リスク¶
初期値(ATR_Buffer_Mult = 0.15, Lookback_Bars = 20)では、以下の局面で無取引になりやすい:
- レンジ相場:安値圏への押し目が浅い場合
- 急上昇相場:押し目を作らずに上昇し続ける場合
- 低ボラ相場:ATR が小さく、バッファが無視できるレベルになる場合
緩和策¶
1. ATR バッファ倍率の初期値調整¶
IF (Backtest_Sample_Size < 10 trades per month)
THEN
ATR_Buffer_Mult = 0.25 // 0.15 から 0.25 に緩和
// または
Touch_Tolerance_Pips = 6 // 4 から 6 に緩和
END
初期値の推奨: - ATR_Buffer_Mult = 0.25(0.15 より緩い) - Touch_Tolerance_Pips = 5(4 より緩い)
2. Lookback 期間の短縮¶
IF (Backtest_Sample_Size < 10 trades per month)
THEN
Lookback_Bars = 12 // 20 から 12 に短縮
END
初期値の推奨: - Lookback_Bars = 12(20 より短い)
3. セカンダリーモード(ブレイク買い)の優先度向上¶
IF (Pullback_Mode_Trades < 5 per month)
THEN
Enable_Breakout_Mode = true // ブレイク買いを積極化
Resistance_Lookback_Bars = 15 // 30 から 15 に短縮
END
初期値の推奨: - Resistance_Lookback_Bars = 15(30 より短い)
最低取引頻度の目安¶
- H1 USDJPY:月 10~20 トレード(週 2~5 トレード)
- 初期パラメータで月 5 トレード未満の場合は、上記の緩和策を適用
11. 過剰取引防止の設計¶
問題:連打・過度な取引¶
初期パラメータでは以下の局面で連打が発生しやすい:
- ボラティリティ爆発時:複数の押し目・ブレイクが短時間に発生
- レンジ相場:同じ価格帯を何度も往復
- スキャルピング化:短期的なノイズに反応
防止策¶
1. 連打防止(Entry Spacing)¶
パラメータ: - Min_Bars_Between_Entries = 5:H1 で 5 本 = 5 時間
2. 1 日の最大取引数制限¶
パラメータ: - Max_Daily_Trades = 3:1 日最大 3 トレード
3. ボラティリティ爆発時の即座クローズ¶
IF (ATR(14) > ATR_SMA(50) * 2.0)
THEN
CLOSE_ALL_POSITIONS // 既存ポジションをクローズ
TRADING_PAUSE = until volatility normalizes
END
パラメータ: - PanicAtrRatio = 2.0:ATR が平均の 2 倍を超えたら即座に撤退
4. レンジ相場での取引制限¶
IF (ADX(14) < 20) // 弱いトレンド
THEN
REDUCE_POSITION_SIZE = 50% // ポジションサイズを半減
// または
SKIP_ENTRY // エントリー禁止
END
パラメータ: - Use_ADX_Filter = true(初期値) - ADX_Threshold = 20:ADX < 20 でレンジ判定
12. Story Package¶
X 投稿フック¶
勝った場合:
✅ 押し目モメンタム EA、本日 +120 pips 獲得!
160.80 円の押し目を拾って、160.95 円のブレイクで追撃。
トレンドに乗るって、こういうことだ。
#FX #USDJPY #EA #自動売買
無取引の場合:
📊 本日は押し目なし。相場が上昇し続けたため、エントリー機会がありませんでした。
こういう日もある。無理な買い増しはしない。次のチャンスを待つ。
#FX #USDJPY #EA #相場分析
損切りの場合:
ブログ見出し¶
- 「押し目モメンタム EA、3 ヶ月で +2,500 pips の実績」
- 「FOMC 後の急変動に対応する自動撤退ロジック」
- 「トレンド相場での 2 段階エントリー戦略の有効性」
- 「無取引を避けるための ATR バッファ調整テクニック」
失敗時の見せ方¶
- 無取引が続く場合:「相場が上昇し続けた = トレンドが強い = 戦略が機能している証拠」と解釈
- 連敗が発生した場合:「クールダウン機能が発動 → リスク管理が機能している」と強調
- ボラパニック撤退が多い場合:「FOMC などのイベント後の急変動から身を守っている」と説明
13. 入力パラメータ一覧(MQL5 input 形式)¶
// ===== エントリー設定 =====
input bool UseMode_Pullback = true; // シナリオA(押し目買い)を有効化
input bool UseMode_Breakout = true; // シナリオB(ブレイク買い)を有効化
input int Pullback_Lookback_Bars = 20; // 押し目参照期間(本数)
input double Pullback_ATR_Buffer_Mult = 0.15; // ATR バッファ倍率
input int Pullback_Touch_Tolerance_Pips = 4; // ヒゲタッチ許容範囲(pips)
input int Breakout_Lookback_Bars = 30; // ブレイク参照期間(本数)
input int Breakout_Confirmation_Bars = 1; // ブレイク確定足数
// ===== トレンドフィルター =====
input int Trend_EMA_Period = 50; // トレンド判定 EMA 期間
input bool Use_Trend_Filter = true; // トレンドフィルター有効化
// ===== ボラティリティフィルター =====
input int ATR_Period = 14; // ATR 期間
input double Min_ATR_Ratio = 0.6; // 最低流動性(ATR_SMA 比)
input bool Use_Activity_Filter = true; // 流動性フィルター有効化
input double Panic_ATR_Ratio = 2.0; // ボラパニック撤退(ATR_SMA 比)
input bool Use_Volatility_Panic_Exit = true; // ボラパニック撤退有効化
// ===== エグジット設定 =====
input double ATR_SL_Mult = 1.5; // SL = Entry - ATR × 倍率
input double ATR_TP_Mult = 2.5; // TP = Entry + ATR × 倍率
input double Trailing_ATR_Mult = 1.2; // トレーリング幅(ATR 倍率)
input int Time_Exit_Bars = 72; // 時間切れ決済(本数)
input bool Use_Breakeven = true; // 建値移動有効化
input double Breakeven_Trigger_ATR = 1.2; // 建値移動トリガー(ATR 倍率)
// ===== リスク管理 =====
input double Risk_Percent = 0.5; // 1 トレードあたりのリスク(%)
input int Max_Positions = 1; // 同時ポジション数
input int Min_Bars_Between_Entries = 5; // エントリー間隔(本数)
input int Max_Daily_Trades = 3; // 1 日最大取引数
input int Consec_Loss_Cooldown = 3; // 連敗クールダウン(回数)
input int Cooldown_Hours = 24; // クールダウン期間(時間)
// ===== スプレッド・手数料 =====
input double Max_Spread_Pips = 2.5; // スプレッド上限(pips)
input double Commission_Per_Lot = 0; // 1 ロットあたりの手数料(USD)
// ===== マジックナンバー =====
input int Magic_Pullback = 1001; // 押し目買いのマジックナンバー
input int Magic_Breakout = 1002; // ブレイク買いのマジックナンバー
14. 実装要件¶
新バー検出¶
static datetime LastBarTime = 0;
bool IsNewBar() {
datetime CurrentBarTime = iTime(Symbol(), Period(), 0);
if (CurrentBarTime != LastBarTime) {
LastBarTime = CurrentBarTime;
return true;
}
return false;
}
用途:エントリー・エグジット条件は新バー確定時のみ評価。同一バー内での複数判定を防ぐ。
確定足ベースの評価¶
// 現在足(未確定)ではなく、前足(確定)のデータを使用
double Close_Confirmed = iClose(Symbol(), Period(), 1); // 前足の終値
double Low_Confirmed = iLow(Symbol(), Period(), 1); // 前足の安値
double High_Confirmed = iHigh(Symbol(), Period(), 1); // 前足の高値
用途:エントリー条件は確定足ベースで判定し、未確定足での誤判定を防ぐ。
マジックナンバー管理¶
const int MAGIC_PULLBACK = 1001; // 押し目買い
const int MAGIC_BREAKOUT = 1002; // ブレイク買い
bool IsPositionOpen(int magic) {
for (int i = PositionsTotal() - 1; i >= 0; i--) {
if (PositionGetTicket(i) > 0) {
if (PositionGetInteger(POSITION_MAGIC) == magic) {
return true;
}
}
}
return false;
}
用途:マジックナンバーで戦略内のポジションを識別し、他の EA との干渉を防ぐ。
ATR 計算¶
double GetATR(int period) {
return iATR(Symbol(), Period(), period, 0); // 現在足の ATR
}
double GetATR_SMA(int atr_period, int sma_period) {
// ATR の SMA(平均 ATR)を計算
double sum = 0;
for (int i = 0; i < sma_period; i++) {
sum += iATR(Symbol(), Period(), atr_period, i);
}
return sum / sma_period;
}
用途:ボラティリティフィルター、SL/TP 計算に使用。
EMA 計算¶
double GetEMA(int period) {
return iMA(Symbol(), Period(), period, 0, MODE_EMA, PRICE_CLOSE, 0);
}
用途:トレンドフィルター(Close > EMA(50))に使用。
スプレッド確認¶
bool IsSpreadAcceptable(double max_spread_pips) {
double spread = (Ask - Bid) / Point; // pips 単位
return spread <= max_spread_pips;
}
用途:スプレッド拡大時の取引禁止。
ポジション数確認¶
int CountOpenPositions() {
int count = 0;
for (int i = PositionsTotal() - 1; i >= 0; i--) {
if (PositionGetTicket(i) > 0) {
if (PositionGetString(POSITION_SYMBOL) == Symbol()) {
count++;
}
}
}
return count;
}
用途:Max_Positions チェック。
連敗カウント¶
int CountConsecutiveLosses() {
int count = 0;
for (int i = OrdersHistoryTotal() - 1; i >= 0; i--) {
if (OrderGetTicket(i) > 0) {
if (OrderGetDouble(ORDER_PROFIT) < 0) {
count++;
} else {
break; // 勝ちで中断
}
}
}
return count;
}
用途:クールダウン機能の発動判定。
補足:バックテスト初期値の推奨¶
以下の初期値でバックテストを開始し、サンプル数が月 10 トレード以上になるよう調整してください:
| パラメータ | 初期値 | 調整方向 |
|---|---|---|
Pullback_Lookback_Bars | 20 | 無取引なら 12 に短縮 |
Pullback_ATR_Buffer_Mult | 0.15 | 無取引なら 0.25 に緩和 |
Breakout_Lookback_Bars | 30 | 無取引なら 15 に短縮 |
Trend_EMA_Period | 50 | 反応性重視なら 20 に短縮 |
ATR_SL_Mult | 1.5 | 損切り頻度が高いなら 2.0 に拡大 |
ATR_TP_Mult | 2.5 | 利確頻度が低いなら 2.0 に短縮 |
最終チェックリスト¶
- ✅ 固定価格(160.80, 160.95)を相対表現に変換
- ✅ トレンドフィルター(EMA50)を必須条件に設定
- ✅ ボラパニック撤退(ATR × 2.0)を実装
- ✅ 連打防止(5 本間隔)を実装
- ✅ 1 日最大 3 トレード制限を実装
- ✅ 連敗クールダウン(3 連敗で 24 時間停止)を実装
- ✅ 建値移動ロジック(ATR × 1.2 で建値に移動)を実装
- ✅ 無取引回避の緩和策を記載
- ✅ 過剰取引防止の設計を記載
- ✅ Story Package(X 投稿フック、ブログ見出し、失敗時の見せ方)を記載
- ✅ MQL5 input パラメータ一覧を記載
- ✅ 実装要件(新バー検出、確定足、マジックナンバー等)を記載
免責事項
本EAは自動生成された検証用コードです。実運用可否はご自身で検証してください。