具体的には次の順で解説します。①市場マイクロストラクチャの要点、②主要指標(板・VWAP・スプレッド・出来高)の意味、③3つの再現手法(VWAPリクレーム/スプレッド・スクイーズ/アイスバーグ検知)、④実務のリスク管理と運用ルーチン、⑤バックテストと取引日誌の作り方、⑥MQL4
による簡易EA(自動売買)のサンプルです。
1. なぜ「注文フロー」を読むと勝率が上がるのか
値動きは究極的に成行と指値の衝突で決まります。ファンダメンタルズや金利、ニュースは「どちらに突っ込む成行が増えるか」を通じて初めて価格に反映されます。したがって短期売買では、直近の成行圧力と受け止める指値の厚みに着目するだけで、材料の解釈を介さずに優位性(エッジ)を得られます。
特に個人投資家が戦いやすいのは、①寄付き〜前場前半の方向付け、②重要節(VWAP・直近高安・日足の支点)での攻防、③スプレッドと出来高の同時収縮→拡張といった瞬間です。ここでは大口参加者もポジション調整や執行を行うため、テープ(約定連続)と板の崩れ方に癖が出ます。
2. まず押さえる4つの観測指標
2-1. 板情報(Depth)
板は「どの価格にどれだけの待機流動性があるか」を示す供給曲線のスナップショットです。厚い価格帯はスローダウンしやすく、薄い価格帯はスルーしやすい。板は見せ玉やキャンセルも混じるため、崩れ方(取り消しの連鎖)と約定の通過速度を同時に追うのがコツです。
2-2. VWAP(出来高加重平均価格)
VWAPは機関投資家の執行ベンチマークです。価格がVWAPを上回って滞留すれば買い優位、下回って滞留すれば売り優位と解釈しやすい。寄り後のトレンド転換点でもっとも効きやすい指標のひとつです。
2-3. スプレッド(気配差)
スプレッドは瞬間的な競争度合いを示します。スプレッド縮小+出来高増は「約定競争が激化し、どちらかに抜けやすい」サイン。反対にスプレッド拡大は「休憩・様子見」です。
2-4. 出来高・テープ速度
出来高は確証です。価格の抜けが本物なら、数本連続で平均出来高を上回るのが通例。テープ(約定連続の速度)が速く、同時に板の薄い側が食われるか取消されるなら、短時間のモメンタムと見なせます。
3. ダークプールの基礎(やさしく)
ダークプールは板を公開しない私設取引で、大口が市場インパクトを抑えて約定するために使います。市場外約定そのものは価格形成の参考になりにくいものの、取引所側の板が薄くなる時間帯や価格帯が生まれやすく、結果として上場市場のブレイクやフェイクの確率に影響します。
初心者はダークプールの詳細データを直接追わなくても、取引所側の「板の薄化」+「スプレッドの異常な広がり/急な縮小」といった周辺症状から十分に推測できます。以降のセットアップは、こうした症状を手掛かりに構築します。
4. 3つの再現性あるエントリー手法
4-1. VWAPリクレーム(回復)戦略
狙い:寄付き後の初動でVWAPを一度割り込んだ銘柄が、スプレッド縮小+出来高増を伴ってVWAPを再奪回する瞬間に順張りで乗る。短時間で1~2Rを抜き取り、負けは0.7R以内に抑えます。
条件:①直近5〜15分でVWAP下に滞留、②直近3本で出来高が移動平均(20本)を上回る、③気配スプレッドが直近30分の下位20%に縮小、④直近高値〜VWAP間に板の薄い帯がある。
エントリー:VWAPを明確に上抜け(ヒゲでなく実体)し、直後の押しがVWAP付近で止まったら成行買い。損切りはVWAPを実体で再度割れたら。利食いは直近高値手前で半分、残りはトレーリングで追う。
理由:VWAP近辺はアルゴ執行の集積点。回復+スプレッド縮小は、上方向への成行需要>下方向の指値供給を示すため、短い「推し目の買い」が機能しやすい。
4-2. スプレッド・スクイーズ戦略
狙い:板の薄い側に向けて成行が連続し、気配差が一時的に最小化→直近レンジをブレイクする動きに同調。短期のインパルス(衝動)を取ります。
条件:①3〜5分の狭いレンジ、②スプレッドが銘柄平常の下位10〜20%に入り、③レンジ端の反対側板が明らかに薄い、④テープ速度上昇。
エントリー:レンジ上端+最小スプレッドが一致する瞬間に成行買い。損切りはレンジ中央割れ。利食いはレンジ幅×1.0〜1.5倍を目安に。
理由:ブレイクの成功確率は「薄い板+速いテープ+狭いスプレッド」が重なるほど急上昇します。条件が揃うまで徹底的に待つのが肝です。
4-3. アイスバーグ(隠れ板)検知戦略
狙い:同一価格で小口約定が何十回も続くのに、板表示数量が減らない/すぐ回復する場合、アイスバーグ指値の可能性。これに成行がぶつかり続けて「吸収→転換」する瞬間を狙います。
条件:①同一価格での反復約定、②板数量が減っても即座に補充、③その直下(買い)または直上(売り)の板が薄い。
エントリー:買いならアイスバーグ上抜けの直後、売りなら下抜け直後。損切りは再度その価格帯に潜る実体足。利食いは直近の密集板帯で。
理由:大口の執行完了後は反対方向に軽くなるため、短期の伸びが狙えます。
5. 銘柄選定と時間帯のクセ
日中の全銘柄を追うのは非効率です。以下のフィルタで十分戦えます。
- ギャップ(前日終値比±2〜5%以上)で寄り付く銘柄
- 寄付き30分で出来高上位の銘柄
- ニュース・決算・指数入替などイベント当日
時間帯は、寄付き〜前場前半がもっとも手掛かりが多く、後場寄り〜引けはVWAP意識のリバランスが効きやすいです。
6. リスク管理(これだけはルール化)
- 1トレードの許容損失=口座残高の0.3〜0.7%。勝率が読めないうちは0.5%固定。
- 最低リスクリワード=1:1.3〜1.5。1:1以下は原則スキップ。
- 滑り・手数料を前提に、エントリー価格+最小スプレッドの半分を上乗せして期待値計算。
- 連敗3回でサイズ半減+休憩。日次ドローダウンが-2%で取引停止。
これらは資金を守るための回避義務です。ルールからの逸脱は、バックテストで優位性が証明されるまでは禁止します。
7. 実例シナリオ(数値で手順を確認)
仮想銘柄A、寄付き直後に-3.1%のギャップダウン。寄り後15分で一度VWAPを割り込み、その後、出来高が平均の1.8倍→2.2倍に増加。スプレッドは平常0.08%→0.03%まで縮小。板は上方向が薄く、直近高値とVWAPの間に空洞帯が存在。
ここでVWAPリクレーム戦略を発動。VWAP上抜けの実体確定で成行買い。初期損切りはVWAP-0.15%。利食い1は直近高値手前で1R、利食い2はトレーリング(直近安値-0.2%)。実行結果:平均滑り0.02%、手数料往復0.01%を考慮しても、期待値は+0.24R/トレード。
8. ログとバックテスト(手動でも十分)
最低限、次の7項目を日誌に残します:セットアップ種類、時間、VWAPとの位置、スプレッド水準、出来高倍率、板の薄い方向、結果(R)、学び。10〜20取引で傾向が見えます。
エクセルでは、R = (平均利食い幅 - 平均損切り幅) / 損切り幅
、期待値 = 勝率×平均勝ちR - 負率×平均負けR
を列にして自動集計します。勝率が50%、平均勝ち1.5R、平均負け0.8Rなら、期待値は 0.5*1.5 - 0.5*0.8 = 0.35R
です。
9. すぐ動かせるMQL4 EA(簡易版・学習用)
MT4のFX/CFD向けに、日中セッションVWAP(疑似:M1出来高=ティックボリューム)とスプレッドを用いた簡易EAサンプルを提示します。学習用としてお使いください。
//+------------------------------------------------------------------+
//| VWAPBreakoutEA.mq4 (学習用サンプル) |
//| 条件: VWAPリクレーム & スプレッド閾値 & 出来高(ティック)増 |
//+------------------------------------------------------------------+
#property strict
input double RiskPerTrade = 0.5; // 口座残高に対する%
input int AtrPeriod = 14;
input double AtrMultSL = 1.2;
input double AtrMultTP = 1.6;
input int VolLookback = 20; // 出来高MA
input double VolFactor = 1.5; // 出来高閾値
input double MaxSpreadPt = 25; // 最大許容スプレッド(ポイント)
datetime day_start = 0;
double cum_pv = 0, cum_v = 0;
double SessionVWAP()
{
// 今日のM1バーを走査してVWAP(疑似) = sum(TypicalPrice*Volume) / sum(Volume)
int bars = iBars(_Symbol, PERIOD_M1);
datetime today0 = iTime(_Symbol, PERIOD_D1, 0);
double pv=0, v=0;
for(int i=0; i<bars; i++)
{
datetime t = iTime(_Symbol, PERIOD_M1, i);
if(t < today0) break;
double high = iHigh(_Symbol, PERIOD_M1, i);
double low = iLow(_Symbol, PERIOD_M1, i);
double close= iClose(_Symbol, PERIOD_M1, i);
double tp = (high+low+close)/3.0;
double vol = iVolume(_Symbol, PERIOD_M1, i);
pv += tp*vol;
v += vol;
}
if(v==0) return iClose(_Symbol, PERIOD_M1, 0);
return pv/v;
}
double LotsByRisk(double sl_points)
{
double risk_money = AccountBalance() * (RiskPerTrade/100.0);
double tickval = MarketInfo(_Symbol, MODE_TICKVALUE);
double lotstep = MarketInfo(_Symbol, MODE_LOTSTEP);
double minlot = MarketInfo(_Symbol, MODE_MINLOT);
if(sl_points<=0 || tickval<=0) return minlot;
double pip_value_per_lot = tickval / MarketInfo(_Symbol, MODE_TICKSIZE);
double lots = risk_money / (sl_points * pip_value_per_lot);
// 丸め
lots = MathFloor(lots/lotstep)*lotstep;
if(lots < minlot) lots = minlot;
return lots;
}
bool VolumeOK()
{
double ma=0;
for(int i=1;i<=VolLookback;i++) ma += iVolume(_Symbol, PERIOD_M1, i);
ma /= VolLookback;
double cur = iVolume(_Symbol, PERIOD_M1, 0);
return (cur >= ma*VolFactor);
}
int OnInit(){ return(INIT_SUCCEEDED);}
void OnTick()
{
// スプレッド条件
double spread_pt = (Ask - Bid)/Point;
if(spread_pt > MaxSpreadPt) return;
// VWAP計算
double vwap = SessionVWAP();
double price = (Ask+Bid)/2.0;
// ATRベースSL/TP
double atr = iATR(_Symbol, PERIOD_M1, AtrPeriod, 0);
if(atr<=0) return;
double sl_points = (AtrMultSL*atr)/Point;
double tp_points = (AtrMultTP*atr)/Point;
// エントリー条件(買いの例): 直近バーがVWAP上で確定、かつ出来高閾値クリア
static datetime last_time=0;
datetime ct = iTime(_Symbol, PERIOD_M1, 0);
bool newbar = (ct != last_time);
if(newbar)
{
bool prev_below = iClose(_Symbol, PERIOD_M1, 1) < SessionVWAP();
bool now_above = iClose(_Symbol, PERIOD_M1, 0) > vwap;
if(prev_below && now_above && VolumeOK())
{
// 既存ポジがなければ新規買い
if(PositionsTotal()==0 && OrdersTotal()==0)
{
double lots = LotsByRisk(sl_points);
double sl = Bid - sl_points*Point;
double tp = Ask + tp_points*Point;
int ticket = OrderSend(_Symbol, OP_BUY, lots, Ask, sl_points/5, sl, tp, "VWAPBreakoutEA", 0, 0, clrNONE);
}
}
last_time = ct;
}
}
※ 実運用前にストラテジーテスターで検証し、パラメータ(VolFactor, MaxSpreadPt, AtrMultSL/TPなど)を銘柄特性に合わせて調整してください。
10. 失敗パターンと回避策
- フェイク回復:VWAP越えがヒゲのみで出来高が伴わない → 見送り。
- 広がるスプレッド:エントリー直後にスプレッド拡大 → 即時縮小しなければ撤退。
- ニュースバースト:指標や要人発言の直撃帯 → 予定時刻の±3分は新規を避ける。
11. チェックリスト(印刷推奨)
- ギャッパー/出来高上位から3〜5銘柄を抽出。
- VWAPの位置関係と直近高安の距離を確認。
- スプレッドが平常の下位20%にあるか。
- 板の薄い方向はどちらか(抜けやすい側)。
- 出来高は移動平均の1.5倍以上か。
- 損切り幅と利食い候補でRR≥1:1.5を確保できるか。
- 連敗・日次DDルールに抵触していないか。
12. まとめ
短期売買での再現性は、条件が揃うまで待つ規律で決まります。本稿のエッセンスは次の3点に凝縮されます。
- VWAPの回復/割れは「方向付け」の最短手掛かり。
- スプレッド縮小+出来高増は「直近ブレイクの確率上昇」の合図。
- 板の薄い帯を背に、RR≥1:1.5で手仕舞い設計。
この3点を機械的に満たす局面だけを繰り返せば、初心者でもゆっくり右肩上がりを現実的に狙えます。明日からは「待つ」ことが最大の武器です。
コメント