1. MQL5のrisk-per-tradeとは何か
【結論】
risk-per-tradeとは「1回のトレードで許容する最大損失割合」を意味する。
ロットではなく「損失額」を基準にすることで、資金破綻リスクを制御できる。
1.1 risk-per-tradeの定義
【結論】
risk-per-tradeは「資金に対して、1回の取引でどこまで損失を許容するか」を数値化したもの。
【定義】
risk-per-tradeとは「口座残高に対する最大損失割合(%)」のこと。
例えば以下のように解釈する:
- 口座残高:100,000円
- risk-per-trade:1%
- → 最大損失:1,000円
この「1,000円以内に損失を抑える」ようにロットやストップロス(SL)を設計する。
重要なのは、「勝つための設定ではなく、負けを制御するための設定」である点。
トレードの生存率は、このパラメータでほぼ決まる。
1.2 ロットサイズとの違い
【結論】
ロットは「取引量」、risk-per-tradeは「損失許容量」であり、意味が根本的に異なる。
初心者がよく混同するポイント:
- lot(ロット)=どれだけ取引するか
- risk-per-trade=どれだけ損してよいか
この違いが理解できていないと、資金管理が破綻する。
同じロットでも、リスクは変わる:
- SLが10pips → 小さいリスク
- SLが100pips → 大きいリスク
つまり、ロットだけではリスクは決まらない。
必ず以下の3要素で決まる:
- ロット(volume)
- SL距離(pips)
- 通貨の1pip価値
このため、実務では「ロット固定」は危険とされる。
相場のボラティリティ(値動きの大きさ)やスプレッドに応じてリスクが変動してしまうため。
1.3 関連概念(トレード設計で重要な要素)
【結論】
risk-per-tradeは単体では機能せず、複数の要素と組み合わせて初めて意味を持つ。
主要な関連概念:
- position sizing(ポジションサイジング)
→ リスクに応じてロットを調整する考え方 - stop loss(ストップロス)
→ 損失を確定させる価格。risk計算の前提条件 - spread(スプレッド)
→ 売買価格差。実質的な損失増加要因 - slippage(スリッページ)
→ 約定ズレ。特に指標時にリスク超過の原因 - execution(約定品質)
→ ブローカーやサーバーの影響 - drawdown(ドローダウン)
→ 資金減少率。risk設定と強く相関する
特に重要なのは「SLが必須」という点。
SLがなければ、risk-per-tradeは成立しない。
よくある誤解・注意点
- ロットを小さくすれば安全 → 誤り
→ SLが広ければリスクは増える - 勝率が高ければriskは不要 → 誤り
→ 連敗は必ず発生する - スプレッドを無視 → 実損が増える原因
- 複数ポジションの合算リスク未管理 → 実質riskが倍増
2. risk-per-tradeの計算方法
【結論】
risk-per-tradeは「許容損失額 → SL距離 → ロット」の順で計算する。
ロットを先に決めるのではなく、損失から逆算するのが正しい手順。
2.1 基本計算式
【結論】
ロットは「許容損失 ÷(SL距離 × 1pip価値)」で求める。
計算の全体像:
- 許容損失額 = 口座残高 × risk(%)
- ロット = 許容損失額 ÷(SL距離 × 1pip価値)
例:
- 口座残高:100,000円
- risk:1% → 許容損失:1,000円
- SL距離:50pips
- 1pip価値:100円(※通貨ペアによる)
→ ロット = 1,000 ÷ (50 × 100) = 0.2 lot
このように、ロットは結果であり「入力ではない」。
2.2 計算手順(実務用テンプレ)
【結論】
以下の手順を固定化すれば、どの通貨ペアでも再現可能。
手順:
- ① 口座残高を取得する
- ② risk(%)を決める(例:1%)
- ③ 許容損失額を算出する
- ④ エントリーからSLまでの距離をpipsで算出
- ⑤ 1pipあたりの価値を取得
- ⑥ ロットを計算
- ⑦ 最小ロット・ステップに丸める
重要ポイント:
- SLが決まらないとロットは決まらない
- 先にロットを決める設計はNG
- 複数ポジション時は合算riskを確認
2.3 MQL5での実装例(ロット計算)
【結論】
MQL5では「AccountInfo」「SymbolInfo」を使って計算する。
double CalculateLot(double risk_percent, double stoploss_pips)
{
double balance = AccountInfoDouble(ACCOUNT_BALANCE);
double risk_amount = balance * (risk_percent / 100.0);
double tick_value = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);
double tick_size = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE);
double pip_value = tick_value / tick_size;
double lot = risk_amount / (stoploss_pips * pip_value);
double min_lot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN);
double lot_step = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP);
lot = MathMax(min_lot, lot);
lot = NormalizeDouble(lot / lot_step, 0) * lot_step;
return lot;
}
補足:
SYMBOL_TRADE_TICK_VALUE:最小価格変動あたりの金額SYMBOL_TRADE_TICK_SIZE:最小価格変動幅- 通貨ペアによって値が異なるため必ず取得する
2.4 実務での注意点(重要)
【結論】
理論通りに計算しても、実運用では誤差が発生する。
主なリスク要因:
スプレッド(spread)
- エントリー時点で既にマイナス
- SLに到達する前に損失増加
スリッページ(slippage)
- 約定価格がズレる
- 指標時は特に顕著
約定品質(execution)
- ブローカー差あり
- VPSやレイテンシも影響
CFD・指数・ゴールドの違い
- pipの概念が通貨と異なる
- tick_valueの扱いが重要
よくある失敗
- pip計算を固定値で扱う
→ 通貨ペアで異なるため危険 - ロット丸めをしない
→ 注文拒否(invalid volume) - 最小ロット未考慮
→ 小資金でriskが過大になる - SL未設定
→ 計算自体が無意味
補足:他手法との違い(軽く)
- 固定ロット → 計算不要だがリスク変動
- マーチンゲール → 回収重視だが破綻確率高
- risk-per-trade → 計算必要だが最も安定
3. なぜrisk-per-tradeが重要なのか
【結論】
risk-per-tradeは「資金の生存率」を決める最重要パラメータである。
利益ではなく損失を制御することで、長期的な再現性と安定性が確保される。
3.1 資金破綻を防ぐ仕組み
【結論】
risk-per-tradeを固定することで、連敗しても資金が急激に減らない構造を作れる。
トレードで最も危険なのは「一撃で資金が大きく減ること」。
これを防ぐのがrisk-per-tradeの役割。
例:
- risk 1% → 10連敗しても約-10%
- risk 5% → 10連敗で約-40%
この差は致命的。
ポイント:
- リスクは線形ではなく「複利で悪化」する
- 損失が大きいほど回復が困難になる
例えば:
- -10% → +11%で回復
- -50% → +100%で回復
このため「負けを小さくする設計」が最優先となる。
3.2 ドローダウンとの関係
【結論】
risk-per-tradeはドローダウン(DD)を直接コントロールする唯一の手段。
ドローダウンとは:
- 資金のピークからの下落率
- トレードシステムの耐久性指標
riskが高いと:
- DDが急激に拡大
- メンタル崩壊・EA停止の原因
riskが低いと:
- DDが緩やか
- 長期運用が可能
重要な関係:
- DD ≒ risk × 連敗数
つまり、riskを半分にすればDDも大きく抑えられる。
実務では:
- DD20%以内 → 安定運用
- DD30%以上 → 危険域
このラインは多くのトレーダー・EAで共通。
3.3 EA運用との相性
【結論】
EA(自動売買)ではrisk-per-tradeは必須レベルの設計要素。
理由:
- EAは連続してトレードする
- 連敗が必ず発生する
- 感情による停止ができない
つまり、人間よりも「リスク制御の重要性」が高い。
riskを固定することで:
- バックテストとフォワードの整合性が取れる
- 再現性のある資金曲線になる
- EAの評価が可能になる
逆にrisk未設定の場合:
- テスト結果が意味を持たない
- 実運用で破綻しやすい
3.4 期待値との関係
【結論】
期待値がプラスでも、riskが高すぎると破綻する。
トレードの基本式:
- 期待値 = 勝率 × 利益 – 敗率 × 損失
ここで重要なのは:
- 損失(=risk)が直接影響する
例:
- PF(Profit Factor)が高くても
- riskが大きければDDで退場する
つまり:
- 「勝てるか」より「生き残れるか」が優先
この考え方はEAでも同じ。
よくある誤解・失敗
- 勝率が高いからriskを上げる
→ 連敗で一気に崩壊 - バックテストで好成績だからriskを上げる
→ 過剰最適化(overfitting)の典型 - DDを無視する
→ 実運用で耐えられない - 複数ポジションのriskを合算しない
→ 実質riskが2倍・3倍になる
補足:他手法との違い
- 固定ロット
→ DD制御不可 - マーチンゲール
→ 短期回収・長期破綻 - risk-per-trade
→ DD制御・長期安定
結論として、長期運用を前提にするなら
risk-per-trade以外の選択肢はほぼ存在しない。
4. 他の資金管理手法との比較
【結論】
risk-per-tradeは「損失基準」でリスクを制御する手法であり、他手法よりもドローダウン管理と再現性に優れる。
固定ロットやマーチンゲールは一見シンプルだが、長期運用では破綻リスクが高い。
4.1 資金管理手法の比較
【結論】
各手法は「何を基準にロットを決めるか」が異なる。リスク制御の観点ではrisk-per-tradeが最も合理的。
| 手法 | 基準 | 特徴 | メリット | デメリット |
|---|---|---|---|---|
| risk-per-trade | 損失額 | SLベースでロット決定 | DD制御・再現性高 | 計算が必要 |
| 固定ロット | ロット固定 | 常に同じ取引量 | 簡単・実装容易 | DD拡大・相場適応不可 |
| 固定比率(Fixed Fractional) | 資金割合 | 資金に応じてロット増減 | 複利成長 | 変動大・急減あり |
| マーチンゲール | 損失回収 | 負けるほどロット増加 | 短期回収力 | 破綻リスク極大 |
重要な違い:
- risk-per-trade → 「負けたとき」を基準
- 他手法 → 「取引量」や「勝ち」を基準
トレードにおいては「負けの制御」が最優先となるため、この差は決定的。
4.2 固定ロットとの違い
【結論】
固定ロットは簡単だが、ボラティリティやSL距離に対応できないためリスクが不安定になる。
問題点:
- SLが広い → リスク増加
- SLが狭い → リスク減少
つまり:
- 同じロットでもリスクが毎回変わる
特に以下の状況で危険:
- 指標時(spread拡大・slippage発生)
- ボラティリティ急変
- 通貨ペア変更
固定ロットは「見た目が安定」なだけで、内部リスクは不安定。
4.3 マーチンゲールとの違い
【結論】
マーチンゲールは短期的には有効だが、長期ではほぼ確実に破綻する構造。
特徴:
- 負けるほどロット増加
- 1回の勝ちで回収を狙う
問題:
- 資金制約により無限継続不可
- DDが指数的に増加
risk-per-tradeとの違い:
- risk-per-trade → 最大損失を固定
- マーチンゲール → 最大損失が無制限に拡大
この構造差により、リスクプロファイルが完全に異なる。
4.4 固定比率(Fixed Fractional)との違い
【結論】
固定比率は資金成長に適しているが、ドローダウンが大きくなりやすい。
特徴:
- 資金に応じてロットを増減
- 利益時にロット増加
メリット:
- 複利で成長可能
デメリット:
- DD時もロットが大きい
- 回復に時間がかかる
risk-per-tradeとの関係:
- risk-per-tradeは「固定比率の一種」とも言えるが
- SLを前提とする点でより実務的
4.5 実務での選択基準
【結論】
初心者・EA運用・長期運用ではrisk-per-tradeが最適解となる。
用途別の選択:
- 初心者
→ risk-per-trade一択(理由:破綻防止) - EA運用
→ 必須(理由:再現性) - スキャルピング
→ risk-per-trade + スプレッド考慮 - 短期ギャンブル
→ 固定ロットやマーチン(非推奨)
よくある誤解・失敗
- 固定ロットの方が安定する
→ 見かけだけでリスクは不安定 - マーチンゲールは勝てる
→ 資金制約で必ず破綻 - 固定比率なら安全
→ DDが大きくなる - 手法を混在させる
→ リスク管理が崩壊
補足:なぜrisk-per-tradeが主流か
- プロトレーダー・ファンドで標準
- リスク管理が定量化できる
- バックテストとの整合性が高い
この3点が理由。
5. よくある失敗・注意点
【結論】
risk-per-tradeは「正しく実装して初めて機能する」。
SL未設定・コスト未考慮・ロット丸めミスの3点が主な破綻要因。
5.1 ストップロス未設定
【結論】
SL(ストップロス)がなければ、risk-per-tradeは成立しない。
理由:
- riskは「最大損失」を前提に計算する
- SLがない=損失上限がない
結果:
- 計算したロットが無意味になる
- 想定外のドローダウンが発生
実務対策:
- エントリーと同時にSLを必ず設定
- ATR(平均的な値動き幅)でSL距離を決める
- 「後から入れる」は禁止(約定遅延・execution影響)
5.2 スプレッド・スリッページ未考慮
【結論】
実際の損失は「SL距離+コスト」で決まる。計算より必ず増える。
見落とされがちな要素:
- spread(売買価格差)
- slippage(約定ズレ)
- commission(手数料)
例:
- SL 20pips
- spread 2pips
→ 実質22pipsの損失
特に危険な場面:
- 指標発表時(spread拡大・slippage増加)
- 流動性が低い時間帯
実務対策:
- SL距離に+αを加える
- スプレッドが一定以上ならエントリーしない
- VPS環境でexecutionを安定させる
5.3 ロット丸めミス(invalid volume)
【結論】
ロットは必ず「最小ロット」と「ステップ」に合わせて丸める必要がある。
よくあるエラー:
- invalid volume
- not enough money
原因:
- 計算ロットがブローカー仕様に合っていない
MQL5対策コード例:
double AdjustLot(double lot)
{
double min_lot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN);
double max_lot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX);
double step = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP);
// step単位で切り捨て(安全側)
lot = MathFloor(lot / step) * step;
// 範囲制限
lot = MathMax(min_lot, lot);
lot = MathMin(max_lot, lot);
return lot;
}
※ロットは証券会社ごとに最小値・最大値・ステップが異なるため、必ず制約に合わせて調整が必要です。未対応の場合、Invalid volumeエラーが発生します。
ポイント:
- 必ず丸める
- 小数点桁数はブローカー依存
5.4 ボラティリティ無視
【結論】
SL距離を固定すると、相場環境によってリスクが歪む。
問題:
- 低ボラ → SL狭すぎ(ノイズで損切り)
- 高ボラ → SL広すぎ(リスク増大)
解決策:
- ATR(Average True Range)を利用
- ボラティリティに応じてSL調整
例:
- SL = ATR × 1.5
これにより:
- 相場に適応したリスク管理が可能
5.5 複数ポジションのリスク合算ミス
【結論】
個別riskだけでなく「合計risk」を管理しないと意味がない。
よくあるミス:
- 各ポジション1% → 合計3%になっている
- 同一通貨ペアで相関リスク増大
実務対策:
- 同時保有ポジション数を制限
- 合計risk上限を設定(例:最大3%)
- 相関の高い通貨(EURUSDとGBPUSDなど)を考慮
5.6 pip価値の誤認(通貨・CFD差異)
【結論】
1pipの価値は通貨ペア・商品ごとに異なるため、固定値は危険。
特に注意:
- JPYペア(桁数違い)
- ゴールド(XAUUSD)
- 指数(NASDAQ, DAX)
誤ると:
- リスクが数倍ズレる
対策:
SymbolInfoDoubleで必ず取得- 手計算を排除
よくある失敗まとめ(短文化)
- SLなし → risk無効
- spread未考慮 → 損失増
- ロット丸めなし → 注文拒否
- ボラ無視 → リスク歪み
- 合算risk未管理 → DD暴走
6. 実務での使いどころ(EA・裁量)
【結論】
risk-per-tradeは「毎回同じリスクでトレードするための仕組み」。
EAでは自動化、裁量ではルール化することで再現性を担保できる。
6.1 EAでの実装パターン
【結論】
EAでは「ロットを固定しない」設計が基本。risk-per-tradeから毎回ロットを算出する。
代表的な実装パターン:
- 固定risk(例:常に1%)
- 通貨ペア別にrisk調整
- ボラティリティ連動(ATRベース)
基本フロー:
- ① エントリー条件成立
- ② SL距離を決定(固定 or ATR)
- ③ riskからロットを計算
- ④ 発注(OrderSend)
MQL5実装イメージ:
double risk_percent = 1.0;
double sl_pips = 50;
double lot = CalculateLot(risk_percent, sl_pips);
// 注文処理(簡略)
trade.Buy(lot, _Symbol, Ask, sl, tp);
設計ポイント:
- ロットは毎回変わる(資金・SLに依存)
- エントリー条件とリスク計算を分離する
- execution遅延やslippageも考慮する
6.2 裁量トレードでの活用
【結論】
裁量でも「エントリー前にロットを決める」ことでブレを排除できる。
手順:
- ① エントリーポイントを決める
- ② SL位置を決める
- ③ risk(%)を決める
- ④ ロットを計算
- ⑤ エントリー
重要:
- 「ロットを先に決める」はNG
- 感情によるロット変更を防ぐ
メリット:
- トレードごとのリスクが一定
- メンタル負担が軽減
- パフォーマンスの比較が可能
6.3 実務ベースの推奨設定
【結論】
riskは低めに固定するほど、生存率が上がる。
一般的な目安:
- 初心者:0.5〜1%
- 中級者:1〜2%
- 上級者:2%前後
3%以上は:
- DDが急拡大
- 精神的・資金的に不安定
補足:
- スキャルピング → spreadの影響が大きいため調整必要
- デイトレ → 1〜2%が現実的
- EAポートフォリオ → 合算riskで管理
6.4 実務で使える応用パターン
【結論】
risk-per-tradeは状況に応じて「調整」することで精度が上がる。
代表例:
ATR連動型
- SL = ATR × 係数
- ロットは自動調整
→ ボラティリティ適応
時間帯フィルター
- 指標時はriskを下げる
- 低流動時間は回避
→ slippage対策
スプレッドフィルター
- spreadが一定以上ならエントリー禁止
→ 実損制御
ポートフォリオ制御
- 同時ポジション数制限
- 通貨相関を考慮
→ DD安定化
よくある失敗
- EAでロット固定
→ 相場変化に対応できない - 裁量でロットを感覚で決定
→ 再現性が崩壊 - 複数EAでrisk未統合
→ 全体リスク過大 - 指標時も同じrisk
→ slippageで想定外損失
補足:他手法との実務差
- 固定ロット → 管理不要だが危険
- マーチンゲール → 短期利益・長期破綻
- risk-per-trade → 管理必要だが最も安定
7. FAQ(よくある質問)
【結論】
risk-per-tradeに関する疑問は「適切な%設定」「SLとの関係」「複数ポジション管理」に集約される。
ここを正しく理解すれば、実務での大半の問題は解決する。
7.1 risk-per-tradeは何%が最適?
【結論】
一般的には「1〜2%」が最もバランスが良い。
理由:
- 連敗時のドローダウンが抑えられる
- 長期運用で生存率が高い
目安:
- 0.5〜1% → 安全重視(初心者・EA推奨)
- 1〜2% → 標準
- 3%以上 → 高リスク(非推奨)
不確実性が高い戦略では、さらに低くするのが合理的。
7.2 固定ロットとどちらが良い?
【結論】
risk-per-tradeの方が圧倒的に安全で再現性が高い。
理由:
- SL距離に応じてリスクが一定になる
- ボラティリティやspread変化に対応できる
固定ロットの問題:
- 相場状況でリスクが変動
- ドローダウンが制御できない
7.3 ストップロスなしでも使える?
【結論】
使えない。SLは必須条件。
理由:
- riskは「最大損失」を前提に計算する
- SLがなければ損失上限が存在しない
例外:
- 理論上はあるが、実務では非現実的
7.4 複数ポジションの場合はどうする?
【結論】
「合計risk」で管理する必要がある。
例:
- 1ポジション1% × 3ポジション
→ 合計3%のリスク
対策:
- 合計risk上限を設定(例:最大3%)
- 相関の高い通貨を同時保有しない
7.5 EAに必須ですか?
【結論】
必須レベルで重要。
理由:
- EAは連続トレードする
- 感情で止められない
- 連敗が必ず発生する
risk未設定のEAは:
- バックテストと実運用が乖離
- 破綻確率が高い
7.6 ボラティリティは考慮するべき?
【結論】
考慮すべき。特にATRを使うのが一般的。
理由:
- 相場は常に変動する
- 固定SLではリスクが歪む
実務例:
- SL = ATR × 1.5
- ロットは自動調整
これにより:
- 安定したリスク管理が可能
7.7 スキャルピングでも有効?
【結論】
有効だが、調整が必要。
注意点:
- spreadの影響が大きい
- slippageが発生しやすい
対策:
- riskを低めに設定(0.5%など)
- スプレッドフィルターを導入
- execution環境を最適化(VPSなど)
7.8 riskを上げれば利益は増える?
【結論】
短期的には増えるが、長期的には破綻リスクが上がる。
理由:
- ドローダウンが指数的に増加
- 連敗時の資金回復が困難
重要:
- 利益は「期待値」で決まる
- riskは「生存率」を決める
この2つは分けて考える必要がある。
8. まとめ
【結論】
risk-per-tradeは「利益を増やすための設定」ではなく、「退場しないための設計」である。
ロットではなく損失を基準にすることで、トレードの再現性と長期安定性が確保される。
8.1 risk-per-tradeの本質
【結論】
トレードの成否は「どれだけ勝つか」ではなく「どれだけ生き残るか」で決まる。
重要ポイント:
- risk-per-trade = 最大損失の上限管理
- ロットではなく「損失」で考える
- SLが前提条件
この設計により:
- 連敗しても資金が急減しない
- ドローダウン(DD)が制御できる
- EAでも裁量でも同じ結果を再現できる
8.2 実務での最適解
【結論】
初心者〜中級者は「risk 1%前後+SL必須+ロット自動計算」が最も合理的。
推奨構成:
- risk:1%(安全重視なら0.5%)
- SL:ATRなどで動的に設定
- ロット:毎回計算(固定禁止)
さらに安定させるために:
- spreadフィルター導入
- slippage対策(指標回避・VPS)
- 合算risk管理(最大3%など)
8.3 失敗しないためのチェックリスト
【結論】
以下を満たしていれば、基本的なリスク管理は成立する。
チェック項目:
- SLを必ず設定している
- riskからロットを逆算している
- pip価値を正しく取得している
- ロットをブローカー仕様に丸めている
- spread・slippageを考慮している
- 複数ポジションの合計riskを管理している
1つでも欠けると、設計が破綻する可能性がある。
8.4 最終結論(短文化)
- ロットではなく「損失」で管理する
- risk-per-tradeは生存率を決める
- 1〜2%が現実的な最適解
- EA・裁量どちらでも必須