MQL5 risk-per-tradeとは?計算と実装手順を解説

目次

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・裁量どちらでも必須