ここに書かれた内容は、短期/スキャルピング系の検証では絶対的な共通ルールです。3日間保有のスイング検証など、別カテゴリを明示した場合だけ別ルールセットを作ります。何も指定がない場合、このルールを機械的に適用します。
検証の進め方
- 弱いルールを早い段階で落とすため、検証はSTEPを踏んで広げる。
- STEP 1: まず1通貨、原則USDJPYだけで、固定値1セットを検証する。
- STEP 2: STEP 1で期待値が残った場合だけ、同じ通貨で複数の変数値を試す。
- STEP 3: STEP 2でも有効そうなら、代表的な1設定だけを複数通貨で検証する。
- STEP 4: STEP 3でも崩れない場合だけ、複数通貨かつ複数の変数値で広げる。
- STEP 2まで残るルールは要観察。STEP 4まで残るルールはかなり強い候補として扱う。
- 多くのルールはSTEP 1で落ちる想定。それは探索の失敗ではなく、計算資源を守るための正常なふるい分け。
- 通貨違い、変数違いは同じ基礎ルールのバリエーションとして扱い、UI上も1つの手法ファミリーにまとめる。
- ルール開発は、まず単純な条件で期待値の芽を探す。芽が出たルールだけ、RSI、MA乖離率、MA角度、ボリバン幅、時間帯、ボラティリティ、上位足地合いなどを追加して精度を上げる。
- 条件追加で取引回数が減りすぎる場合は注意する。原則として1000回以上の取引回数を維持する。
ポジションサイズ
- 成績評価の分母は常に100万円。
- 毎回のエントリーは、円建て100万円相当のポジション。
- 1ロットは1万通貨。
- ロット数はエントリー時の価格に応じて可変。累積損益で複利化しない。
- USDJPYが100円なら1.00ロット、120円なら約0.8333ロット。
- EURUSDは、エントリー時のEURJPYを使って100万円相当のユーロ数量を計算する。
約定価格とスプレッド
- 1分足OHLCはミッド価格として扱う。
- 買いエントリーはAsk、買い決済はBid。
- 売りエントリーはBid、売り決済はAsk。
- 現在観測したBid/Ask差を1.5倍して、安全側のスプレッドにする。
- 過去価格には固定pipsではなく、現在価格に対するスプレッド比率を適用する。
- 取引手数料は、別途明示的に追加するまでは独立項目としては未反映。
急変動時の約定禁止
- 1分足の終値が、前の1分足終値から30pips以上動いた場合、その1分はボラティリティが荒すぎる時間として扱う。
- その1分足では、新規エントリーを禁止する。
- その1分足では、通常決済、損切り、利確、時間切れ決済、強制決済も行えないものとする。
- 決済条件がその1分足で発生した場合、次の執行可能な1分足まで決済を送る。
- 目的は、急騰急落の最中にミッド価格で理想的に約定できたように見える、現実離れした検証を避けること。
時間足の扱い
- 1分足データは、約定、損切り、利確、保有時間、指標回避を判定するための実行解像度として使う。
- 売買判断そのものは、15分足、30分足、1時間足、4時間足などにリサンプリングした足を使ってよい。
- 指定がない場合、MA、ボリンジャーバンド、RSI、MACD、トレンド判定など主要インジケータは1時間足基準を標準にする。
- 日足は、相場環境や大きな方向感を見る上位足フィルターとして使ってよい。ただし約定と決済は1分足タイムラインで行う。
- MAなどの期間は、選択したシグナル時間足の上で解釈する。15分足20MAは300分、1時間足20MAは20時間。
- 1分足で直接計算する場合は、時間スケールを一致させる。1時間足20MA相当なら1分足では1,200MA。
- 検証結果には、シグナル時間足と実行時間足を記録し、同じ20MAでも意味が混ざらないようにする。
複数タームの地合い想定
- 新しい手法は、設計段階で数分、数時間、数日、数週間の4タームについて地合いを明示する。
- 数分: おおむね1〜15分。エントリー直前の短期圧力。
- 数時間: おおむね1〜6時間。短期売買で主に見る方向感。
- 数日: おおむね1〜5日。直近の相場テーマやブレイク状態。
- 数週間: おおむね2〜8週間。大きな地合い、上位足の環境。
- 各タームは必ずUP、DOWN、RANGEのどれか1つだけで記録する。ANY、UP_OR_DOWN、RANGE_TO_TREND、PULLBACK、BREAKOUT_DIRECTION、INVERTED_SIGNALなどの混合ラベルは使わない。
- まず数分、数時間、数日、数週間をUP/DOWN/RANGEに落とし込む。その後で、MA角度、MA乖離率、ボリンジャーバンド幅、RSI、過去高値安値ブレイク、時間帯、ボラなど、どの測定器でその地合いを数値化するかをルール詳細として試行錯誤する。
- 押し目買いは、数分ではDOWN、数時間や数日ではUPというように、短期方向と上位足方向を分けて扱う。
- MA角度、MA乖離率、ボリンジャーバンド幅、RSI、過去高値安値ブレイクなどは、UP/DOWN/RANGEを判定するための候補指標であり、地合いラベルそのものではない。
- ルール設計では、単独条件だけに頼らない。たとえばレンジブレイクなら、直近一定期間の高値更新、上位足MA方向、ボリンジャーバンド拡大、RSIの勢い、時間帯、ボラ状態など、複数条件が同時に成立する形で数値化を試す。
- MA乖離率は、距離だけで売買を決めない。UP/DOWN地合いではBB拡大とRSIが揃えば順張り継続の根拠になり、RANGE地合いでは平均回帰の根拠になる。同じ「乖離」でも地合いごとに別ルールとして保存する。
- RSIダイバージェンスは、見た目ではなくスイング条件で定義する。RANGE逆張りでは、価格がM15の前回高値/安値を更新したのにRSIが追随せず、価格が前回水準内へ戻ったことを条件にする。トレンド中の隠れダイバージェンスでは、価格は高値圏/安値圏を保つ一方でRSIだけ深く押し、M15 20MA回復/割れで再エントリーする。
- ある手法が安定して負ける場合は、元ルールを黙って反転せず、別の「罠・反対売買」仮説として保存する。反対売買でも4軸地合いはUP/DOWN/RANGEで明記し、決済理由は根拠崩れ型を維持する。
- ボラ収縮ブレイクは、H1値幅が直近のH1値幅に対して狭いこと、必要に応じてインサイドバーであることを数値化し、その高値/安値をM15で抜けた時だけ検証する。RANGE中の圧縮ブレイクと、UP/DOWNトレンド中の一服後再加速は別ルールとして保存する。
- 東京レンジ構造は、東京時間が完了した後の高値安値だけを使う。欧州/NYでの上限ブレイク、下限ブレイク、ブレイク後再タッチ、だまし抜け回帰はそれぞれ別手法として保存し、4軸地合いも別々に定義する。
- 前日高値/前日安値も、市場参加者が見やすい外部参照点として扱う。前日高値ブレイク、前日安値ブレイク、ブレイク後再タッチ、だまし抜け回帰は別手法として保存し、前日レンジ幅が狭すぎる/広すぎる日は除外する条件も試す。
- 日足ピボットは、前日の日足OHLCだけから計算する。PP、R1、S1を対象に、R1/S1ブレイク、R1/S1反発、S1/R1からPPへの中心回帰を分けて検証する。前日高値安値とは混ぜず、別ジャンルとして保存する。
- 水平線ブレイクは、単なる直近高値更新だけではなく、一定期間の高値/安値に複数回タッチして戻されているか、レンジ幅が過大/過小でないか、ブレイク時にBB拡大やRSIの勢いが伴うかも含めて検証する。
- ボックス上限ブレイク、ボックス下限ブレイク、上限だまし抜け、下限だまし抜けは、方向別に別ルールとして保存する。上限ブレイク買いは数分UP、下限ブレイク売りは数分DOWN、上限だまし売りは数分DOWN、下限だまし買いは数分UPとして扱い、背景の数時間・数日・数週間はRANGEを基本にする。
- キリバンは、100円、105円、110円などの5円刻み、1円刻み、必要に応じて0.5円刻みを、市場参加者が意識しやすい外部参照点として扱う。キリバン付近での反発、ブレイク、ブレイク後の再タッチ、初回タッチ後に一度戻して再度タッチしに行く動き、だまし抜け後のレンジ回帰、キリバン近辺でのBB収縮から拡大などを分けて検証する。
- ボックス相場、フラッグ、ペナント、カップウィズハンドルなどの裁量的パターンは、まず「どの時間軸がUP/DOWN/RANGEか」を決めたうえで、タッチ回数、戻し幅、傾き、収束、ブレイク位置などの数値条件へ分解して検証する。
- FX本などで語られる手法は、曖昧な言葉のまま検証しない。まず「この地合いならこう動きやすい」という仮説に分解し、それぞれを数値条件へ落とし込む。条件を増やす時は、取引回数1000回以上をなるべく維持し、過剰最適化に注意する。
- この地合い想定は
params_jsonに保存し、結果ページにも表示する。 - ローカル一覧にも、手法グループごとに数分、数時間、数日、数週間の4軸を表示する。変数違いで複数の地合い想定が混ざる場合は、そのグループ内の代表値またはユニーク値をまとめて表示する。
- トレンドフォロー改良では、まずMA角度、ボリンジャーバンド幅の拡大/収縮/安定、RSIの勢い/過熱を、単純な数値フィルターとして追加する。
- 上位足ブレイク、MA角度、ボリバン拡大が揃う場合、上がっているところを買いに行く、または下がっているところを売りに行くジャンピングキャッチ型の順張りも有力候補として検証する。
M15再加速の使い方
- H1のBB拡大、MA角度、RSIでトレンドフォロー候補が見えた場合、M15でも直近高値安値ブレイク、2σ付近の張り付き、20MA回復などの再加速確認を追加して精度を上げる候補を検証する。
- これは固定pips利確ではなく、エントリー根拠を複数時間軸で強めるための条件追加。決済はH1の勢い喪失、H1 20MA喪失、BB拡大終了など、根拠崩れ型を優先する。
H4地合いフィルタ
- H1のモメンタム系がSTEP2で有望な場合、D1より細かい背景として4時間足20MA方向、4時間足RSI、4時間足20MAからの乖離、4時間足BB幅の過熱を確認する。
- これは同じ基礎手法の値調整・フィルタ違いとして保存する。目的は、取引回数を極端に殺さずに、年別の崩れや伸びすぎジャンピングキャッチを削ること。
方向別の分解
- 左右対称に見えるルールでも、USDJPYではロングだけ、ショートだけに分解して検証する。期待値がテクニカルの形から来ているのか、通貨ペアの方向バイアスやスワップから来ているのかを確認するため。
- 方向別テストはUP-only、DOWN-onlyとして明示し、4軸地合いもUPまたはDOWNにそろえる。混合ラベルや曖昧な表記は使わない。
時間帯マトリクス
- 有望な短期ルールは、エントリー根拠を変えずに、東京、欧州、NY、東京欧州またぎ、欧州NY重複、NY後半で分解する。
- さらに全平日と火水木だけを分け、時間帯や曜日が期待値を作っているのか、単に価格条件が効いているのかを診断する。時間だけを優位性の根拠にしない。
ボラ品質フィルタ
- H1のBB拡大・バンドウォーク系が有望な場合、H1 ATR14、ATR14の直近平均との差、現在のH1値幅で、低ボラ停滞と高ボラ荒れ相場を分けて検証する。
- これは単独の優位性ではなく、同じトレンドフォロー根拠を「伸びやすく、滑りにくそうなボラ帯」に絞るための条件追加として扱う。
保有期間
- 1回のトレードは15分以上保有する。
- 1回のトレードは24時間以内に決済する。実装上は利用可能な1分足1,440本以内。
- 週末などの非取引時間は、営業分ベースの保有時間としては消費しない。
- 重大指標など別ルールで15分未満決済になりそうな場合、そのエントリー自体を禁止する。
決済思想
- 固定の +N pips 利確、-N pips 損切を標準設計にはしない。市場はエントリー価格を基準に動いているわけではないため。
- トレンドフォローでは、1時間足20MA喪失、RSIの勢い消失、ボリンジャーバンド拡大終了など、入った根拠が崩れた時に撤退する。
- 押し目買い/戻り売りでは、15分足20MAやRSI回復が崩れた時に撤退する。
- レンジ逆張りでは、15分足の中央線回帰など取りに行った現象を取り終えた時に利確し、レンジ仮説が崩れた時に撤退する。
- 24時間以内の最大保有は共通の安全上限として残す。これは優位性の根拠ではなく、短期売買クラスの外枠とする。
- Tier A重大指標前の強制決済、24時間上限、急変動で約定不能な時間帯による決済遅延は例外とする。これらは手法の通常利確/損切ではなく、強制境界として記録する。
Tier A重大指標
- 重大指標は
fx-sokuhou.dbのTier Aイベントを使う。 - 内部比較は
release_at_utcを使う。 - 発表5分前から発表5分後まで、新規エントリー禁止。
- ポジション保有中にTier A発表が来る場合、発表5分前に強制決済。
- 次のTier A強制決済まで15分未満の場合、新規エントリー禁止。
- 目的は、テクニカル検証に重大ファンダ要因を混ぜないこと。
スワップ/ロールオーバー
- ロールオーバー基準はNY 17:00。
- 日本時間では、米国冬時間がおおむね7:00、夏時間がおおむね6:00。
- 1分足の欠落や日付飛びから推定しない。
economic-rates.dbのswap_rollover_calendarとrate_differentialsを使う。- スワップは100万円固定ポジションに対して加減算する。
- これは研究用の近似であり、ブローカーの完全な過去スワップ履歴ではない。
時間帯別集計
- 全時間帯の結果は、全トレードを含む。
- 東京/欧州/NYは、その時間帯内でエントリーから決済まで完結した取引だけを集計する。
- 時間帯をまたいだ取引は、個別時間帯の成績には入れない。
- 東京: 09:00-15:00 JST。
- 欧州: 16:00-21:00 JST。
- NY: 21:00-06:00 JST。
パフォーマンス評価
- 成績評価の分母は常に100万円。累積資産額を分母にしない。
- 年利は
総損益 ÷ 100万円 ÷ 検証年数。 - 1回あたり標準偏差は、各トレードの
損益 ÷ 100万円の標準偏差。 - 年率標準偏差は、1回あたり標準偏差を年間取引頻度で年率換算する。
- PF、勝率、平均勝ち、平均負け、最大DD、資産推移は、スプレッド、スワップ、重大指標フィルター反映後に計算する。
- PDCA探索では、STEP2へ進める主条件をPF 1.20以上とする。PF 1.20以上のルールは、複数の変数値で耐性を確認する。
- 固定100万円分母の年利は参考指標として見るが、STEP2昇格の主条件にはしない。
- PFが高いだけでは採用しない。PF 1.20以上の候補は、負け年数、最悪年損益、特定の数年だけに利益が偏っていないかも確認する。
- PFが少し低くても、負け年数や最悪年損益が改善する場合は、実戦寄りの候補として残して比較する。
- 火曜、水曜、木曜、火水木、月初、時間帯などのフィルターは、価格動作ルールに付随する耐性確認として扱う。曜日や時間帯だけを根拠にしない。
- エントリー条件が有望な場合、固定pips決済を足す前に、H1 20MA喪失、H1 RSI勢い喪失、BB拡大終了、M15回復失敗など、根拠崩れ型の決済を比較する。
- 年別で崩れる候補は、捨てる前にD1 20MA方向、D1 RSI過熱、D1 BB幅の過拡大、D1 20MAからの乖離など、上位足地合いフィルターで改善するか確認する。
時刻基準
- Forex Tester CSVの時刻はUTC/GMT+0として保存する。
- 表示はJSTでもよいが、経済指標やロールオーバーの内部JOINはUTCを優先する。
カレンダー/市場参加者タイミング
- 曜日、月曜、金曜、月初、月末、ゴトー日午前、東京仲値付近は、検証対象のフィルターとして扱う。
- ただしカレンダー条件だけを優位性の根拠にしない。BB拡大、MA角度、RSI、レンジブレイク、キリバンなど、価格側の根拠と組み合わせて検証する。
- この種のルールでも、数分・数時間・数日・数週間の4軸は必ずUP/DOWN/RANGEのいずれかに落とし込む。
- 昇格基準は他と同じく、スプレッド、スワップ、Tier A回避、急変動30pipsブロック、15分以上24取引時間以内の保有制約を反映した後のPF 1.20以上を目安にする。
ブレイク後の押し目/戻り
- 純粋なジャンピングキャッチ系が有望な場合、次の改良として、上位足のブレイク、MA方向、BB拡大、RSIモメンタムを確認したうえで、下位足の押し目/戻りを待つ。
- 例として、H1で高値安値ブレイクとBB拡大が成立したあと、M15が20MA付近まで押して再び回復したら順張りする。
- この場合、ロングの設計では数分はDOWN、数時間・数日・数週間はUPというように、短期逆行と上位足順張りを分けて記録する。
- 決済は固定pipsではなく、M15 20MA回復が崩れる、RSI回復が失われる、または共通ルールの強制決済に達した場合を基本とする。
フェイクブレイク逆張り
- 上位足がRANGEの時だけ、下位足の高値安値抜けが失敗してレンジ内へ戻った動きを逆張り候補にする。
- 曖昧な「だまし」ではなく、M15が直近高値/安値をN pips以上抜け、次にM pips以上レンジ内へ戻り、RSI極端値も伴う、というように数値で定義する。
- 数分・数時間・数日・数週間はいずれもRANGEとして記録し、トレンドフォローとは別の仮説として保存する。
- 決済はM15中央線への回帰、またはレンジ仮説の崩れを基本とする。