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が発生します。

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は「検証で勝つ」だけでなく「実運用で生き残る」設計になります。