MQL5 ポジションサイジングの実装方法|ロット計算とリスク管理

目次

1. MQL5におけるポジションサイジングとは

【結論】ポジションサイジングは「1回のトレードでどれだけのロットを持つか」を決めるアルゴリズムであり、利益よりもドローダウン管理に直結する最重要要素です。

1.1 ポジションサイジングの定義

【定義】ポジションサイジングとは、口座資金・損切り幅(SL)・市場条件をもとに、適切な取引量(ロット)を決定するルールのことです。

単なる数値計算ではなく、「どのような基準でロットを決めるか」という戦略設計そのものを指します。
たとえば以下はすべてポジションサイジングの一種です。

  • 毎回0.1ロット固定で取引する
  • 口座残高の1%だけリスクを取る
  • ボラティリティ(価格変動)に応じてロットを変える

MQL5では最終的に volume(ロット)として注文に渡しますが、その裏側にあるロジックがポジションサイジングです。

初心者が混同しやすいポイントとして、「ロット計算=ポジションサイジング」と思いがちですが、これは誤りです。
ロット計算はあくまで結果であり、ポジションサイジングはその決め方(アルゴリズム)です。

1.2 ロットサイズ計算との違い

【結論】ロットサイズ計算は「数値を出す処理」、ポジションサイジングは「その数値の決め方」です。

具体的には以下の関係になります。

  • ポジションサイジング:戦略(例:1%リスクで取引する)
  • ロット計算:実装(例:0.13ロットと計算される)

この違いを理解していないと、EA(自動売買)の設計が崩れます。

例として、同じエントリー条件でも以下で結果は大きく変わります。

  • 固定ロット → 安定だが成長しにくい
  • リスク連動 → 資金増加とともに利益も増える

つまり、エントリー精度が同じでも、ポジションサイジングで最終損益は大きく変わります。

1.3 なぜ重要か(実務視点)

【結論】ポジションサイジングは「利益最大化」ではなく「破産回避」のために最適化するべきです。

多くの初心者はエントリー手法(インジケーターやシグナル)に注目しますが、実務では以下の影響がより大きくなります。

  • ドローダウン(資金減少)の大きさ
  • 連敗時の耐久性
  • execution(約定品質)によるブレ耐性

例えば、スプレッド(spread)やスリッページ(slippage)が発生すると、想定より損失が増えるケースがあります。
このときロットが大きすぎると、想定以上の資金減少につながります。

特に重要なポイントは以下です。

  • ロットが大きいほど、誤差(execution差)の影響も拡大する
  • 連敗時に資金曲線が急激に悪化する
  • 過大ロットは短期間で口座破綻を引き起こす

逆に、適切なポジションサイジングを行うと以下の効果があります。

  • ドローダウンを制御できる
  • フォワードテストと実運用の乖離が小さくなる
  • 長期的に再現性が高くなる

注意点として、「利益を最大化するロット」は必ずしも最適ではありません。
理論上の最適値(例:ケリー基準)は、実務ではリスクが高すぎることが多いです。

そのため現実的には、

  • 低めのリスク(1〜2%)
  • execution誤差を考慮
  • ブローカー制約(最小ロット・最大ロット・注文条件)を考慮

といった設計が必要になります。

2. MQL5で実装する主要ポジションサイジング手法

【結論】実務で使われるポジションサイジングは「固定ロット」「固定リスク」「ボラティリティ連動(ATR)」の3つが中核です。まずはこの3つを理解すれば、EA設計の大半はカバーできます。

2.1 固定ロット(毎回同じ取引量)

【結論】最もシンプルで再現性が高いが、資金効率は低い手法です。

毎回同じロット(例:0.1ロット)でエントリーする方法です。
バックテストやロジック検証でよく使われます。

実装例

double lot = 0.1;

MqlTradeRequest request;
request.volume = lot;

メリット

  • 実装が非常に簡単
  • テスト結果が安定(再現性が高い)

デメリット

  • 資金が増えてもロットが増えない
  • 複利効果が働かない

よくある失敗

  • 小さすぎるロットで実運用 → 利益が伸びない
  • 大きすぎるロットで固定 → ドローダウン過大

2.2 固定リスク(口座残高の○%)

【結論】最も実務的で推奨される手法。資金管理とロットが自動連動します。

口座残高に対して一定割合(例:1%)だけリスクを取る方法です。
損切り幅(SL)を前提にロットを逆算します。

基本ロジック

  • リスク金額 = 残高 × リスク%
  • ロット = リスク金額 ÷(SL幅 × 1ロットあたりの損失)

実装例(簡略)

double balance = AccountInfoDouble(ACCOUNT_BALANCE);
double riskPercent = 0.01; // 1%
double riskAmount = balance * riskPercent;

double stopLossPips = 50; // 仮
double pipValue = 10.0;   // 通貨ペア依存

double lot = riskAmount / (stopLossPips * pipValue);

メリット

  • ドローダウンが制御しやすい
  • 資金増加に応じてロットも増える(複利)

デメリット

  • SL設定が不適切だと破綻する
  • pip価値(通貨ペア・口座通貨)に依存

よくある失敗

  • pipValueを固定値で扱う → 計算ミス
  • スプレッド(spread)やスリッページ(slippage)未考慮
  • 証拠金チェックなしでOrderSend → エラー

2.3 ATRベース(ボラティリティ連動)

【結論】市場の変動に応じてロットを調整できるため、実運用で非常に強い手法です。

ボラティリティ指標である Average True Range を使い、相場の荒さに応じてロットを変えます。

考え方

  • ボラが大きい → ロットを小さく
  • ボラが小さい → ロットを大きく

実装例

int atrHandle = iATR(_Symbol, PERIOD_CURRENT, 14);
double atr[];
CopyBuffer(atrHandle, 0, 0, 1, atr);

double volatility = atr[0];
double baseLot = 0.1;

double lot = baseLot / volatility;

メリット

  • 相場環境に適応できる
  • 急変動時のリスク低減

デメリット

  • 計算がやや複雑
  • ATRの期間設定に依存

よくある失敗

  • ATR値をそのまま使用 → ロットが極端になる
  • 最小ロット制限を無視 → Invalid volumeエラー

2.4 マーチンゲール型

【結論】短期回収力は高いが、長期的には破綻リスクが極めて高い手法です。

負けるたびにロットを倍増させる方式です。

  • 0.1 → 0.2 → 0.4 → 0.8 …

メリット

  • 1回勝てば損失回収しやすい

デメリット

  • ドローダウンが指数関数的に増加
  • 証拠金不足で破綻

注意点

  • ブローカーの最大ロット制限
  • execution遅延による誤作動

2.5 逆マーチン(アンチマーチン)

【結論】勝ちトレードを伸ばす設計で、トレンドフォローEAと相性が良い手法です。

勝ったときだけロットを増やす方式です。

  • 勝ち → 0.1 → 0.2 → 0.4
  • 負け → 初期ロットに戻す

メリット

  • トレンドに乗ると利益拡大
  • 負け時のリスクは限定

デメリット

  • レンジ相場で不利
  • 連勝前提の設計になる

2.6 ケリー基準(上級者向け)

【結論】理論上は最適だが、実務ではリスク過大になりやすい手法です。

勝率とリスクリワードから最適ロットを算出します。

概念式

  • f = 勝率 − (負率 / リスクリワード)

メリット

  • 理論上の最大成長率

デメリット

  • 勝率推定が難しい
  • 過剰最適化に陥りやすい

実務での扱い

  • 半分(1/2ケリー)などに調整するのが一般的

3. ポジションサイジングの仕組み(なぜ機能するのか)

【結論】ポジションサイジングは「期待値を拡大する装置」であり、同時に「破産確率を制御する装置」です。ロットの設計次第で、同じ手法でも結果は大きく変わります。

3.1 期待値とリスクの関係

【結論】ロットは期待値を増幅するが、同時に損失も増幅するため、バランス設計が必要です。

トレードの基本構造は以下で表されます。

  • 期待値 = 勝率 × 平均利益 − 負率 × 平均損失

ここでポジションサイジングが影響するのは「平均利益」と「平均損失」のスケールです。

例えば同じロジックでも、

  • ロット0.1 → 小さく勝ち、小さく負ける
  • ロット1.0 → 大きく勝ち、大きく負ける

つまりロットは「結果を拡大する倍率」です。

重要なポイントは以下です。

  • ロットを上げても勝率は変わらない
  • ロットを上げるとドローダウンは急増する
  • 適正ロットを超えると資金曲線が崩壊する

よくある誤解として「勝てる手法ならロットを上げれば良い」がありますが、これは危険です。
期待値が正でも、ロットが大きすぎると連敗で資金が枯渇します。


3.2 ドローダウンとの関係

【結論】ドローダウンはロットに比例して増加し、過大ロットは回復不能な損失を生みます。

ドローダウン(DD)は資金のピークからの減少幅です。
ポジションサイジングが適切でないと、以下の問題が発生します。

  • 連敗時に急激な資金減少
  • 回復に必要な利益が非現実的になる

例えば、

  • 10%損失 → 約11%で回復
  • 50%損失 → 100%で回復

この非線形構造が重要です。

つまり、

  • ロットが大きい → DDが深くなる
  • DDが深い → 回復が困難

固定リスク(例:1〜2%)が推奨される理由はここにあります。

注意点として、

  • スプレッド拡大
  • スリッページ
  • 約定遅延(execution遅れ)

これらがあると、想定以上にDDが増えることがあります。


3.3 破産確率(リスク・オブ・ルイン)

【結論】ロットが大きいほど破産確率は急増し、特にマーチンゲールは極端に危険です。

破産確率とは「資金がゼロまたは運用不能になる確率」です。

ポジションサイジング別の傾向は以下です。

  • 固定ロット → 安定だが成長遅い
  • 固定リスク → 破産確率を抑えやすい
  • マーチンゲール → ほぼ確実に破綻

重要な考え方は以下です。

  • 連敗は必ず発生する
  • 連敗時のロットが重要
  • 資金が減った後のロット制御が鍵

固定リスク手法は、

  • 資金減少 → ロットも減少

となるため、破産確率を抑えられます。

一方マーチンゲールは、

  • 負け → ロット増加

となるため、連敗で指数的にリスクが増大します。


3.4 スプレッド・スリッページとの関係

【結論】execution品質(約定条件)が悪いと、理論上のポジションサイジングは成立しません。

実運用では以下の要素が必ず影響します。

  • spread(売買価格差)
  • slippage(注文価格のズレ)
  • execution(約定速度・約定精度)

これらが影響する理由は以下です。

  • 想定より不利な価格で約定する
  • 実際の損失が増える
  • リスク計算がズレる

特にロットが大きい場合、

  • スリッページ1pip → 損失が大きくなる
  • スプレッド拡大 → エントリー時点で不利

となり、理論上の期待値が崩れます。

実務では以下の対策が必要です。

  • スプレッドフィルターを入れる
  • 重要指標(ニュース)時は停止
  • VPS環境でexecutionを安定化

4. 手法別比較(どれを選ぶべきか)

【結論】実務では「固定リスク」または「ATR連動」を基準に選択すれば大きく外しません。マーチン系は制御前提でのみ採用すべきです。

4.1 ポジションサイジング比較表

【結論】安定性・再現性・execution耐性を重視すると、固定リスクとATR連動が最適解になりやすいです。

手法 安定性 収益性 ドローダウン耐性 execution耐性(spread/slippage) 実装難易度 推奨度
固定ロット 検証用
固定リスク
ATR連動 中〜高
マーチン 高(短期)
逆マーチン 中〜高
ケリー基準 高(理論) 上級者

読み取りポイント

  • 固定ロットは「検証用・ベンチマーク」
  • 固定リスクは「汎用・実運用の基準」
  • ATR連動は「ボラティリティ適応」
  • マーチン系は「回収速度と破産リスクのトレードオフ」

4.2 初心者向けの選び方

【結論】最初は「固定リスク(1〜2%)」一択で問題ありません。

選定フロー(迷ったらこの順で判断)

  • ステップ1:固定リスク(1%)で運用開始
  • ステップ2:ドローダウンが許容範囲か確認
  • ステップ3:必要ならATR連動へ拡張

理由は以下です。

  • 資金減少時にロットが自動で縮小される
  • 連敗時の破産確率が低い
  • execution誤差(slippageなど)の影響を抑えやすい

よくある失敗

  • 初期からマーチン系を採用
  • リスク%を5%以上に設定
  • SL未設定で固定リスクを使う(計算が破綻)

4.3 実務(EA開発)での選択基準

【結論】ポジションサイジングは「EAの特性 × 市場環境」で決めます。

代表的な組み合わせ

  • トレンドフォローEA
    → 逆マーチン or 固定リスク
    理由:勝ちトレードを伸ばせる
  • レンジEA(逆張り)
    → 固定リスク
    理由:連敗時の耐久性が重要
  • 高ボラティリティ市場(例:指標時)
    → ATR連動
    理由:急変動に自動適応
  • スキャルピング
    → 固定ロット or 低リスク固定
    理由:spread・slippageの影響が大きい

4.4 他手法との違い・代替手段

【結論】ポジションサイジングは単体ではなく、他のリスク制御と組み合わせて使います。

主な代替・補完手段

  • ドローダウン制御(equity stop)
    → 一定DDでEA停止
  • 最大ポジション制限
    → 同時保有数を制限
  • スプレッドフィルター
    → spreadが広い時はエントリーしない
  • 約定条件(order条件)制御
    → execution品質が悪い時は取引停止

重要な考え方

  • ポジションサイジング単体では不十分
  • 「ロット × フィルター × 停止条件」で設計する

5. MQL5での実装手順(How)

【結論】実装は「リスク算出 → ロット計算 → 制約補正 → 証拠金確認 → 注文」の順で行います。順序を崩すとInvalid volumeやNot enough moneyが発生します。

MQL5 fixed risk position sizing diagram showing lot size calculation from account balance and stop loss distance, including execution flow, risk management logic, code example, and trade chart with SL and TP visualization

5.1 基本手順(再利用可能)

【結論】固定リスク法をベースに実装すると汎用性が高く、そのままATR連動にも拡張できます。

手順(コピペ可)

  • 口座残高を取得
  • 許容リスク%を設定
  • 損切り幅(SL)を価格差で算出
  • 1ロットあたりの損失(tick value)を取得
  • ロットを計算
  • ロット制約(min/max/step)に合わせて丸め
  • 証拠金チェック
  • 注文実行

コード例(固定リスク・簡略版)

double CalcLot(double riskPercent, double stopLossPriceDistance)
{
    double balance = AccountInfoDouble(ACCOUNT_BALANCE);
    double riskAmount = balance * riskPercent;

    double tickValue = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);
    double tickSize  = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE);

    // 1ロットあたりの損失
    double lossPerLot = (stopLossPriceDistance / tickSize) * tickValue;

    if(lossPerLot <= 0.0) return 0.0;

    double lot = riskAmount / lossPerLot;
    return lot;
}

補足(なぜこの計算か)

  • tickValue:1ティックあたりの損益
  • tickSize:1ティックの価格幅
    → これで「価格差 → 損益」に変換できる

よくある失敗

  • pipベースで固定値を使う → 通貨ペア依存で崩れる
  • SL距離を価格差ではなくpipsで扱う → 計算ズレ

5.2 ロット制約対応(最重要)

【結論】SYMBOL_VOLUME_MIN / MAX / STEPに合わせないと、ほぼ確実にInvalid volumeエラーになります。

ブローカーごとにロット制約があります。

  • 最小ロット(SYMBOL_VOLUME_MIN)
  • 最大ロット(SYMBOL_VOLUME_MAX)
  • ロット刻み(SYMBOL_VOLUME_STEP)

補正コード

double NormalizeLot(double lot)
{
    double minLot  = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN);
    double maxLot  = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX);
    double stepLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP);

    // 範囲制限
    lot = MathMax(minLot, MathMin(maxLot, lot));

    // ステップに合わせて丸め
    lot = MathFloor(lot / stepLot) * stepLot;

    return NormalizeDouble(lot, 2);
}

なぜ必要か

  • ブローカーは任意のロットを受け付けない
  • 例:0.01刻みの環境で0.013はエラー

よくある失敗

  • NormalizeDoubleだけで対応 → step未対応でエラー
  • minLot未満 → 注文拒否

5.3 証拠金チェック(OrderSend前に必須)

【結論】OrderCalcMarginを使わないと、Not enough moneyエラーで止まります。

ロットが正しくても、証拠金不足なら注文できません。

チェックコード

bool CheckMargin(double lot, ENUM_ORDER_TYPE type)
{
    double price = (type == ORDER_TYPE_BUY)
        ? SymbolInfoDouble(_Symbol, SYMBOL_ASK)
        : SymbolInfoDouble(_Symbol, SYMBOL_BID);

    double margin = 0.0;

    if(!OrderCalcMargin(type, _Symbol, lot, price, margin))
        return false;

    double freeMargin = AccountInfoDouble(ACCOUNT_FREEMARGIN);

    return (freeMargin > margin);
}

なぜ必要か

  • レバレッジ・口座条件に依存
  • 同時ポジション数でも変わる

よくある失敗

  • ロット計算だけで注文 → エラー多発
  • フォワードでは通るが本番で失敗

5.4 OrderSendまでの統合フロー

【結論】ロット計算 → 正規化 → 証拠金確認の順を厳守します。

統合例

double rawLot = CalcLot(0.01, stopLossDistance);
double lot    = NormalizeLot(rawLot);

if(lot <= 0.0) return;

if(!CheckMargin(lot, ORDER_TYPE_BUY)) return;

// 注文処理(簡略)
MqlTradeRequest request;
request.volume = lot;
request.symbol = _Symbol;
request.type   = ORDER_TYPE_BUY;

5.5 実務での注意点(execution含む)

【結論】理論通りのロットでも、execution環境で結果は変わります。

考慮すべき要素

  • spread(スプレッド)
  • slippage(スリッページ)
  • execution速度(VPS有無)

対策

  • スプレッドフィルターを入れる
  • 指標時は取引停止
  • VPSで遅延を最小化

よくある失敗

  • バックテスト前提で設計 → 実運用で崩壊
  • スリッページ未考慮 → リスク過大

6. よくある失敗と注意点

【結論】ポジションサイジングの失敗は「ロット制約・証拠金・execution未考慮」の3点に集中します。ここを外すと、理論が正しくても実運用で破綻します。

6.1 Invalid volumeエラー(ロット不正)

【結論】ロット刻み(SYMBOL_VOLUME_STEP)未対応が主因です。

典型原因

  • 0.013のような中途半端なロットを送信
  • 最小ロット未満(SYMBOL_VOLUME_MIN未満)
  • 最大ロット超過(SYMBOL_VOLUME_MAX超過)

対策

  • stepに合わせて丸める(MathFloorベース)
  • min/maxでクランプする
  • NormalizeDoubleだけに依存しない

チェック例

if(lot < SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN)) return;

6.2 証拠金不足(Not enough money)

【結論】OrderCalcMargin未使用、または同時ポジション増加の見落としが原因です。

典型原因

  • レバレッジを考慮していない
  • 既存ポジションの証拠金を無視
  • ロットだけ計算して即OrderSend

対策

  • OrderCalcMarginで事前検証
  • フリーマージン(ACCOUNT_FREEMARGIN)確認
  • 最大ポジション数を制限

注意点

  • 通貨ペアやブローカー条件で必要証拠金は変わる

6.3 ストップ距離ミス(Invalid stops)

【結論】ブローカーの最小ストップ距離(Stops level)を無視すると発生します。

典型原因

  • SL/TPが現在価格に近すぎる
  • スプレッドを考慮していない

対策

  • SYMBOL_TRADE_STOPS_LEVELを確認
  • spread分を加味してSL設定

補足

  • execution時に価格がズレる(slippage)とエラーになりやすい

6.4 スプレッド急拡大による誤作動

【結論】ニュース時や流動性低下時に、想定外の損失が発生します。

典型原因

  • spreadが通常の数倍に拡大
  • エントリー時点で大きな含み損

対策

  • スプレッドフィルターを導入

コード例

double spread = SymbolInfoDouble(_Symbol, SYMBOL_ASK) - SymbolInfoDouble(_Symbol, SYMBOL_BID);

if(spread > maxSpread) return;

なぜ重要か

  • ロットが大きいほどspread影響も増幅
  • スキャルピング系では致命的

6.5 スリッページによるリスク崩壊

【結論】slippageはロットが大きいほど損失を拡大させます。

典型例

  • 想定SL:50pips
  • 実際:55pips(slippage発生)

→ リスク計算が崩れる

対策

  • リスク計算に余裕を持たせる
  • 約定条件(deviation)を設定
  • execution品質の良い環境(VPS)を使う

6.6 過剰最適化(バックテスト依存)

【結論】最適なロットは固定ではなく、市場環境で変化します。

典型原因

  • 過去データに最適化しすぎる
  • 特定期間だけ勝つ設定になる

対策

  • フォワードテストを必ず実施
  • ロットは保守的に設定
  • ATRなどで動的調整

6.7 SL未設定・リスク不明状態

【結論】SLなしではポジションサイジングは成立しません。

理由

  • リスク量が計算できない
  • 無制限損失になる

対策

  • 必ずSL前提でロット計算
  • 例外なく強制的に設定する

7. 実務での使いどころ(重要)

【結論】ポジションサイジングは「単体で使うもの」ではなく、EA設計・フォワード検証・ポートフォリオ管理と一体で運用することで効果を発揮します。

7.1 EA設計における役割

【結論】ポジションサイジングはエントリーよりも結果への影響が大きいケースがあります。

多くの初心者は「エントリー精度」を重視しますが、実務では以下の構造になります。

  • エントリー → 勝率を決める
  • ポジションサイジング → 損益の形を決める

同じエントリーでも、

  • 過大ロット → 数回の連敗で破綻
  • 適正ロット → 長期で安定

となります。

特にEAでは以下が重要です。

  • ロジックの優位性(edge)は限定的
  • ポジションサイジングで結果が大きく変わる
  • 再現性(再現できる利益)が最優先

実務ポイント

  • 固定リスクをベースに設計
  • ロットは「攻める」のではなく「守る」ために使う

7.2 フォワードテストでの調整

【結論】ポジションサイジングはバックテストではなく、フォワードで最終調整します。

理由は以下です。

  • slippage(約定ズレ)が再現されない
  • spread変動が不完全
  • execution環境が異なる

そのため、フォワードテストでは以下を確認します。

  • ドローダウンの実測値
  • 想定リスクとのズレ
  • 連敗時の挙動

調整手順

  • リスク%を段階的に変更(例:1% → 0.8%)
  • ATR係数を微調整
  • 最大ロット制限を追加

よくある失敗

  • バックテスト結果をそのまま採用
  • フォワード期間が短すぎる

7.3 複数EA運用(ポートフォリオ)

【結論】複数EAでは「合計リスク管理」が必須です。

単体EAでは問題なくても、

  • EA A:リスク1%
  • EA B:リスク1%
  • EA C:リスク1%

→ 合計3%リスクになります。

さらに相関(correlation)がある場合、

  • 同時に損失発生
  • 想定以上のドローダウン

となります。

実務対策

  • 総リスク上限を設定(例:2〜3%)
  • 同時エントリー制限
  • 通貨ペア分散

重要ポイント

  • ポジションサイジングは「個別」ではなく「全体」で管理する

7.4 VPS運用・execution影響

【結論】execution環境が悪いと、ポジションサイジングは機能しません。

影響する要素

  • 約定速度
  • サーバー距離
  • ブローカー品質

具体的には、

  • slippage増加 → 損失増大
  • 約定遅延 → 不利な価格でエントリー
  • spread変動 → リスク計算崩壊

対策

  • VPSを利用(サーバー近接)
  • execution品質の良いブローカー選定
  • スプレッド監視

7.5 実務での設計テンプレート

【結論】以下の構成で設計すると、ほぼ全ケースに対応できます。

推奨構成

  • ベース:固定リスク(1%)
  • 補助:ATR連動で微調整
  • 制限:最大ロット制限
  • フィルター:spread / 時間 / 指標
  • 安全装置:ドローダウン停止

シンプルな設計思想

  • ロットは小さく始める
  • フォワードで調整する
  • 生き残ることを優先する

8. FAQ

【結論】ポジションサイジングの理解は「ロットの決め方=リスク管理」という認識に集約されます。実務で迷いやすいポイントを短く整理します。

8.1 ポジションサイジングとロット計算の違いは?

ポジションサイジングは「ロットの決め方(戦略)」、ロット計算は「その結果としての数値」です。戦略が先で、計算は後です。

8.2 初心者におすすめの手法は?

固定リスク(1〜2%)が最適です。資金減少時にロットも自動縮小され、破産確率を抑えられます。

8.3 マーチンゲールは使うべきですか?

原則非推奨です。短期回収は可能ですが、連敗時にロットが指数的に増え、破綻リスクが極めて高くなります。

8.4 ATR連動はなぜ有効ですか?

ボラティリティ(価格変動)に応じてロットを調整できるため、急変動時のリスクを抑えられます。固定ロットより実運用に適しています。

8.5 最適なリスク%はどれくらいですか?

一般的には1〜2%です。3%以上はドローダウンが急増しやすく、実務では慎重に扱う必要があります。

8.6 バックテストと実運用で結果が違うのはなぜですか?

spread(スプレッド)やslippage(スリッページ)、execution(約定品質)が再現されないためです。実運用では損失が増える方向にズレやすいです。

8.7 SL(損切り)なしでも使えますか?

使えません。ポジションサイジングは「どれだけ負けるか」を前提に設計するため、SLがないとリスク計算が成立しません。

8.8 複数EAを動かす場合の注意点は?

個別ではなく「合計リスク」で管理します。複数EAが同時に損失を出すと、想定以上のドローダウンになります。

9. まとめ(内部リンク誘導)

【結論】ポジションサイジングは「利益を増やす技術」ではなく、「資金を守りながら長期的に増やすための設計」です。固定リスクを基準に、ボラティリティやexecutionを考慮して調整することが実務では最も安定します。

重要ポイントを短く整理します。

  • ロットは期待値の倍率であり、過大設定は破綻を招く
  • 固定リスク(1〜2%)が最も現実的で再現性が高い
  • ATR連動で市場環境(ボラティリティ)に適応できる
  • spread・slippage・executionの影響で理論は崩れる
  • ロット単体ではなく「フィルター・制御」と組み合わせる

実務では以下の構成が有効です。

  • ベース:固定リスク
  • 調整:ATR連動
  • 制限:最大ロット・同時ポジション
  • 保護:ドローダウン制御(equity stop)
  • 環境:VPS+execution最適化

次に読むべき重要テーマ(内部リンク推奨)

  • ロットサイズ計算(具体的な数式と実装)
  • ドローダウン制御(資金曲線の安定化)
  • エクイティプロテクション(強制停止ロジック)
  • リスク管理(risk per trade設計)

これらを組み合わせることで、EAは「検証で勝つ」だけでなく「実運用で生き残る」設計になります。