- リスクリワード比(R:R)が利益の源泉である理由
- 期待値Eとブレークイーブン勝率
- 損切りと利確の設計:ATR・価格構造・ボラティリティ
- 具体例で理解する:株・FX・暗号資産
- ポジションサイズ:常に“1R=口座の一定%”に正規化
- 勝率とR:Rのトレードオフ:4つの基本型
- トレーリングでR_winの上限を広げる
- バックテストと検証:Rで統一し、OOSで妥当性確認
- 心理とプロセス:Rで考える癖を付ける
- Rベース・トレードジャーナルの雛形
- MQL4(MT4)での実装例:ATR損切り+R固定の枚数計算
- 戦略別:R設計の型カタログ
- ドローダウン管理:最大DDを“想定内”に固定する
- チェックリスト:発注前の5つの質問
- まとめ:勝率依存をやめ、Rと期待値で設計する
- 付録:よくあるQ&A(実務的な疑問に短く答える)
リスクリワード比(R:R)が利益の源泉である理由
多くの初心者は“当てること(勝率)”に意識が偏りがちですが、長期で資金曲線を右肩上がりにする核心はリスクリワード比(Risk-Reward Ratio, 以下R:R)です。R:Rは、1回のトレードで想定する損失幅(リスク)に対して、取りにいく利益幅(リワード)が何倍かを示します。勝率が低くても、R:Rが十分に高ければ期待値は正になります。逆に高勝率でも、R:Rが悪ければ長期成績はマイナスになります。
“勝率×平均利益 − (1−勝率)×平均損失 > 0” となるとき、あなたの戦略は統計的に資金を増やします。これを現場で扱いやすくするために、損失幅を1Rとして基準化し、利益やコストをRで測る“R-マルチプル”の考え方を使います。例えば+2.5Rの利確、−1Rの損切り、スリッページ−0.1R、手数料−0.05Rのように表記すれば、資産や銘柄が変わっても戦略を同一スケールで比較できます。
期待値Eとブレークイーブン勝率
期待値Eは “E = 勝率 × 平均利益 − (1 − 勝率) × 平均損失” です。平均利益・平均損失をRで表すと、E = 勝率 × R_win − (1 − 勝率) × R_loss となります。もっと直感的に使うのは“ブレークイーブン勝率”で、R_loss = 1 とすると、必要勝率は 1 / (1 + R_win) です。R_win=2なら必要勝率は33.3%、R_win=1.5なら40%、R_win=0.8なら55.6%です。R_winを引き上げられれば、当てる精度を上げなくても黒字化が容易になります。
重要なのは、R_winを机上で決めるのではなく、“市場構造と一貫した損切り設計”から逆算して定義することです。損切りが緩すぎればR_lossが膨らみ、R_winをいくら引き上げても期待値が崩れます。よって、まず損切り規律を先に固定し、次に取りにいく利幅(利確論理)を設計してR:Rを作る、が正しい順番です。
損切りと利確の設計:ATR・価格構造・ボラティリティ
① ATRベース(ボラティリティ損切り)
Average True Range(ATR)のk倍で損切り距離を可変化します。例:日足ATRが20円の株で、k=1.5なら損切り距離は30円。利確はR:R=2.0にするなら60円。トレンドが続く相場では、ATR×kのトレーリングに切り替えてR_winの上限を伸ばす設計が有効です。
② 構造ベース(支持・抵抗・スイング)
直近スイング安値/高値の外側に損切りを置く方法です。ダマシを避けるために、安値より“さらにATRの0.5倍”外側に余白をとると機械的になります。利確は次の主要レジスタンスまで、またはR:R=2.0固定など。
③ 統計ベース(分布と再現性)
過去n回の同型セットアップで到達した最大有利行距離(MAE/MFE分析)を集計し、到達確率pでの分位点に利確を置く方法です。例えば“60%分位では+1.8R、40%分位では+2.6R”のような分布を見て、R_winを定量的に選定します。
具体例で理解する:株・FX・暗号資産
ケースA:現物株(仮想銘柄ABC)
エントリー価格を1,000円、損切りはスイング安値の970円より外側に−40円(=1R)。R:R=2.2を狙うなら利確は+88円(1,088円)。必要勝率は 1 / (1 + 2.2) ≈ 31.25%。仮に勝率が40%でも、平均+2.2R、平均損失−1Rなら期待値E = 0.4×2.2 − 0.6×1 = +0.28R。手数料・スリッページを合計0.08Rと見積もっても+0.20Rの正の期待値が残ります。
ケースB:FX(USD/JPY)
15分足で直近のボラが高くATR(14)=0.18円とします。損切りは1.2×ATR=0.216円(2.16pips×10)を1Rと定義。R:R=1.8なら利確0.3888円。スキャルに近い戦略でも、Rを固定して検証すれば、勝率52%・平均+1.8R・平均−1Rの戦略は、E=0.52×1.8−0.48×1=+0.456Rで十分に優位です。
ケースC:暗号資産(BTCパーペチュアル)
資金10,000USDT、1トレードあたりリスク1%(=100USDT=1R)。サポート割れ−400USDTに損切り(=4Rに相当するので、ポジションサイズを“損切り距離で”調整して1R=100USDTに合わせます)。R:R=2.5を狙うなら利確は+250USDT。資金管理の一貫化により、ボラの違いに関係なく“毎回の損失は一定の1R”を維持できます。
ポジションサイズ:常に“1R=口座の一定%”に正規化
“損切り距離で枚数を決める”のが要点です。口座残高B、1トレードの許容損失率r%、損切り距離(エントリー〜ストップ)をDとすると、想定損失額はB×r%、よって数量Q = (B×r%) / D。(株なら株数、FX/先物なら数量、暗号資産なら枚数/コントラクト数)
r%=0.5〜1.0が初心者に現実的です。r%が2%を超えるとドローダウンが急増します。Rが一定になるため、戦略の期待値Eやシャープレシオの比較が容易になります。
勝率とR:Rのトレードオフ:4つの基本型
戦略は概ね “高R:R・低勝率(トレンドフォロー)” と “低R:R・高勝率(逆張り/ミーンリバート)” の軸で整理できます。あなたの性格・時間軸・市場に適したゾーンを決め、期待値が安定するほうを選びます。いずれも“1Rの一貫性”が前提条件です。
ミスは“含み益をすぐ利確してR_winが0.8Rに縮むのに、損切りは緩めて1.3Rに膨らむ”こと。これでは必要勝率が55%→62%などに悪化し、統計的に負けます。機械的な利確・損切りの自動化で感情を排除しましょう。
トレーリングでR_winの上限を広げる
トレンドが走る局面では、固定利確より“段階的に引き上げるストップ”が有利です。ATR×k、パラボリックSAR、直近スイング、移動平均の乖離率などでトレールします。期待値は “平均R_winの押し上げ − 途中決済の取りこぼし” のバランスで決まります。バックテストで最良のkやルールを決めましょう。
バックテストと検証:Rで統一し、OOSで妥当性確認
① データ分割:開発は過去データの70%で行い、残り30%(アウト・オブ・サンプル)で固定パラメータのまま検証します。② 手数料・スリッページは控えめではなく“悲観的”に。③ 週次・月次のリスクリワード分解(平均R_win、平均R_loss、勝率、連敗・連勝分布)をチェック。④ 破綻テスト:想定外のスリップやギャップで−2Rが混入しても資金が死なないか。
“カーブフィットしていないか?”は常に点検します。勝率やR_winが期間ごとに崩れていないか、マーケットレジームの変化で破綻していないかを定期点検しましょう。
心理とプロセス:Rで考える癖を付ける
損切りを“お金”で考えると痛みが増幅し、ルール逸脱を生みます。Rで抽象化すると、−1Rは“統計上許容されたコスト”になります。日々の評価は“Rベースの資金曲線”“週次の期待値E”“月次のドローダウン”で行い、評価指標と感情を切り離します。
実務では、仕掛け前に “このトレードのRは何? 期待値は? シナリオ否定ラインは?” をチェックリスト化。エントリー直前に“損切りと枚数”が計算で確定していない取引は見送るべきです。
Rベース・トレードジャーナルの雛形
・日時/銘柄(通貨ペア)/時間軸/セットアップ名/市場レジーム(トレンド/レンジ/高ボラ/低ボラ)/根拠(3行)/リスク距離(R)/予定利確(R)/実現損益(R)/乖離理由(ルール逸脱/想定外スリップ/ニュース)/学び(次回の修正1つ)。
週末に “平均R_win、平均R_loss、勝率、期待値E、最大連敗、最大ドローダウン、1トレード当たりの平均R” を集計します。Rが崩れていないのに連敗しているだけなら、戦略は生きています。Rが崩れているなら、定義の見直しが必要です。
MQL4(MT4)での実装例:ATR損切り+R固定の枚数計算
// +------------------------------------------------------------------+
// | RiskReward_ATR_EA.mq4 (初心者向け・学習用サンプル) |
// | 目的: 1R=口座残高の%固定、ATR損切り距離、R:R=2.0で利確 |
// +------------------------------------------------------------------+
#property strict
input double RiskPerTradePct = 1.0; // 1トレードの許容損失(%) 例:1.0=1%
input double RR_Target = 2.0; // 利確はRの何倍か
input int ATR_Period = 14; // ATR期間
input double ATR_K = 1.5; // 損切り距離 = ATR*K
input int Slippage = 3; // スリッページ
input int Magic = 4242;
double GetATR(string sym, int timeframe, int period){
return iATR(sym, timeframe, period, 0);
}
double LotsByRisk(double stopDistancePoints){
// 1R = 口座残高 * RiskPerTradePct%
double acc = AccountBalance();
double riskAmount = acc * (RiskPerTradePct/100.0);
// 1ポイントあたりの価値(通貨ペアに依存)
double tickValue = MarketInfo(Symbol(), MODE_TICKVALUE);
double lotStep = MarketInfo(Symbol(), MODE_LOTSTEP);
double minLot = MarketInfo(Symbol(), MODE_MINLOT);
// 損切り距離(ポイント) × 1lotのポイント価値 = 1lotの損失額
double lossPerLot = stopDistancePoints * tickValue;
double lots = riskAmount / MathMax(lossPerLot, Point);
// 取引所制約に合わせて丸め
lots = MathFloor(lots/lotStep)*lotStep;
if(lots < minLot) lots = minLot;
return NormalizeDouble(lots, 2);
}
void PlaceTrade(bool isLong){
string sym = Symbol();
int tf = PERIOD_M15;
double atr = GetATR(sym, tf, ATR_Period);
double stopDistance = atr * ATR_K; // 価格単位(ポイント換算に注意)
double pointValue = Point; // ブローカー仕様でDigitsに注意
double stopPoints = stopDistance/pointValue;
double lots = LotsByRisk(stopPoints);
double price = isLong ? Ask : Bid;
double sl = isLong ? price - stopDistance : price + stopDistance;
double tp = isLong ? price + stopDistance*RR_Target : price - stopDistance*RR_Target;
int type = isLong ? OP_BUY : OP_SELL;
int ticket = OrderSend(sym, type, lots, price, Slippage, sl, tp, "RR_EA", Magic, 0, clrAqua);
if(ticket < 0){
Print("OrderSend failed: ", GetLastError());
}else{
Print("Order sent. Ticket=", ticket, " Lots=", lots, " SL=", sl, " TP=", tp);
}
}
int start(){
// 雑なサイン: 移動平均のクロスでデモ(実運用不可)
int fast=10, slow=30;
double maFast = iMA(Symbol(), PERIOD_M15, fast, 0, MODE_EMA, PRICE_CLOSE, 0);
double maSlow = iMA(Symbol(), PERIOD_M15, slow, 0, MODE_EMA, PRICE_CLOSE, 0);
static datetime lastBar=0;
if(Time[0] != lastBar){
lastBar = Time[0];
if(maFast > maSlow) PlaceTrade(true);
if(maFast < maSlow) PlaceTrade(false);
}
return(0);
}
上記は“教材用の最小骨格”です。実運用では、約定拒否や再クオート、最小ストップレベル、価格単位の差(Digits/Point)、ボラ急変時のスリッページ拡大、ニュース回避などの例外処理が必須です。また、TPを固定せずトレーリングで引き上げる版や、建玉分割(部分利確)も検討してください。
戦略別:R設計の型カタログ
トレンドフォロー(順張り)
・損切り:直近スイング外+ATR×0.5。・利確:R固定2.0→伸びるときはATR×kでトレール。・勝率:30〜45%でも期待値は正にできます。
ミーンリバート(逆張り)
・損切り:オーバーシュート継続に備えてATR×1.0以上。・利確:R固定1.0〜1.3。・勝率:55〜70%が狙い。過剰ナンピンは禁止。
ブレイクアウト
・損切り:レンジ内側へ戻ったら即時、もしくはATR×1.0。・利確:初動はR=1.5固定、伸びるときのみトレールでRを拡張。ダマシ耐性が鍵。
ドローダウン管理:最大DDを“想定内”に固定する
1トレードのリスクr%と最大連敗Lの上限を決めれば、概算の最大DDは D ≈ 1 − (1 − r%)^L で見積もれます。r%=1%、L=12なら約11.3%。心理的耐性と資金需要から逆算してr%を決めましょう。
さらに“エクイティ・カーブ・コントロール”として、DDが−10%に達したらr%を0.5%に縮小、−15%で一時停止、などの減速ルールをあらかじめ決めておくと、口座生存率が跳ね上がります。
チェックリスト:発注前の5つの質問
1) このトレードの1Rは何円(何pips/USDT)? 2) R:Rは何倍で、必要勝率はいくつ? 3) その勝率は、過去の同型セットアップで検証済みか? 4) 損切り距離でポジションサイズは計算済みか? 5) 利確・トレールは機械的に実行できるか?
上記に“はい”と即答できないなら、見送るべきです。トレードの難しさは“当てる”ことではなく、“一貫した規律の実行”にあります。Rで世界を統一すれば、規律は実行可能になります。
まとめ:勝率依存をやめ、Rと期待値で設計する
リスクリワード比は、あなたの収益構造そのものです。1Rを固定し、R:Rと期待値で意思決定し、ボラに合わせて損切りと利確を一貫化すれば、勝率に振り回されずに利益を積み上げられます。今日から“Rで考える”習慣に切り替え、すべての記録・検証・改善をRベースで回しましょう。
付録:よくあるQ&A(実務的な疑問に短く答える)
Q1. 勝率が50%を下回っても本当に稼げますか?
A. R:Rが2.0なら必要勝率は33.3%です。ダマシを避け、−1Rを速やかに受け入れる規律があれば、期待値は正にできます。
Q2. 連敗が怖くて損切りが遅れます。
A. 連敗は確率上必ず起きます。−1Rで止められる仕組み化(IFD-OCO、EA、アラート)を使い、感情の介入余地を物理的に消してください。
Q3. どの時間軸が有利ですか?
A. 有利不利は戦略次第です。重要なのはRの一貫性を守れる時間軸かどうか。仕事や生活に合う軸で“同じRを繰り返せるか”で選びます。
Q4. 手数料とスリッページはどう扱う?
A. Rで控えめではなく悲観的に見積もり、期待値計算に織り込む。月次レビューで実測Rコストを上書きしてください。
Q5. ケリー基準は使うべき?
A. フル・ケリーはDDが過大です。0.25〜0.5の分数ケリーや“最大DD上限から逆算したr%固定”が現実的です。
Q6. 逆指値が滑って−1.5Rになりました。
A. 想定外スリップの頻度と規模をログ化し、期待値Eに混ぜて再評価。ニュース時は“取引しない”ルールで頻度を減らすのも有効です。
コメント