FXナンピン計算——証拠金・ロットサイズから安全な最大回数を求める方法
最終更新: 2026年6月
ナンピン(Martingale型の含み損追加エントリー)は、EAにおける諸刃の刃だ。短期的な勝率は向上するが、最大回数の設定を誤ると一度の大相場で口座を消滅させるリスクを内包している。
FXナンピン計算とは、最大回数を「感覚値」ではなく、証拠金残高・ロットサイズ・許容ドローダウン率という3つの定量変数から数学的に算出することだ。本記事では、その計算式と口座残高別の具体的な推奨設定、MQL5でのパラメーター実装方法を解説する。
免責事項: FX取引は元本割れリスクを伴う金融取引です。本記事はEA設計の技術的解説を目的としており、特定の取引戦略の有効性・将来の利益を保証するものではありません。ナンピン戦略は適切に管理されない場合、口座残高を全損するリスクがあります。
ナンピン最大回数の基本的な考え方
直接回答: FXナンピン計算とは、証拠金・ロットサイズ・許容ドローダウン率から「エントリーが逆行し続けた場合に何回まで追加注文を許容するか」という上限値(ナンピン最大回数)を算出することだ。この数値を感覚で設定する、または計算せずに大きすぎる値を設定すると、証拠金が枯渇して強制ロスカットを招く。
ナンピンの数学的構造
ナンピン戦略の本質は等比数列にある。初回ロット L₀ に対して、追加エントリーごとにロット倍率 r を掛け合わせていく。
| エントリー回数 | ロット | 累積ロット |
|---|---|---|
| 1回目(初回) | L₀ | L₀ |
| 2回目 | L₀ × r | L₀(1 + r) |
| 3回目 | L₀ × r² | L₀(1 + r + r²) |
| n回目 | L₀ × rⁿ⁻¹ | L₀ × (rⁿ - 1) / (r - 1) |
たとえば初回0.1ロット・倍率2倍・最大3回追加(合計4ポジション)の場合、累積ロットは 0.1 × (2⁴ - 1) / (2 - 1) = 1.5ロット になる。これだけのロットを保有した状態で証拠金が足りているかどうかが、安全設定の核心だ。
FXナンピン計算の計算式——証拠金・ロットサイズから求める
安全な最大回数 N_max を求めるには、次の不等式を満たす最大の整数 n を見つければよい。
必要証拠金(n回) ≤ 口座残高 × (1 - 最大許容ドローダウン率)
必要証拠金の計算
1ロット(10万通貨)あたりの必要証拠金 M₁ は、レバレッジ λ・通貨ペアレート P から:
M₁ = (100,000 × P) / λ
ドル円(P = 150)・25倍レバレッジの場合:M₁ = (100,000 × 150) / 25 = 600,000円/ロット
n回ナンピンした時点での累積必要証拠金 M_total(n) は:
M_total(n) = M₁ × L₀ × (rⁿ - 1) / (r - 1)
安全係数(Safety Buffer)の付加
実務では計算値に1.5〜2.0倍の安全係数を掛けることを強く推奨する。相場のギャップ・スプレッド拡大・ブローカーの証拠金変動に対応するためだ。
調整後必要証拠金 = M_total(n) × 安全係数
口座残高別の推奨最大回数(ドル円・25倍レバレッジ)
以下の表は、初回ロット0.01・ロット倍率2.0・安全係数1.5・許容ドローダウン50%で計算した推奨値だ。
| 口座残高 | 利用可能証拠金(50%DD後) | 推奨最大回数 | 累積最大ロット | 備考 |
|---|---|---|---|---|
| 10万円 | 5万円 | 3回 | 0.07ロット | 最小資金運用。これ以上は高リスク |
| 30万円 | 15万円 | 4回 | 0.15ロット | 週末保有・ギャップリスクに注意 |
| 50万円 | 25万円 | 5回 | 0.31ロット | 標準的なEA稼働資金 |
| 100万円 | 50万円 | 6回 | 0.63ロット | 推奨。DD余裕あり |
| 300万円 | 150万円 | 7回 | 1.27ロット | 倍率を1.5倍に落とすことも検討 |
重要な注意点: ロット倍率2.0倍でナンピン7回目に到達した時点で、単一ポジションのロットは初回の 2⁶ = 64倍 になる。口座残高300万円・初回0.01ロットであれば7回目のロットは0.64ロットとなり、1円(100pip相当の約10,000円分)の逆行でも日々の損益が大きく揺れる。
倍率を1.5倍に変更すると、7回目のロットは 1.5⁶ × 0.01 ≈ 0.11ロット に抑えられる。累積ロットも小さくなる代わりに、相場が反転するまでの保有コストが下がり、より多くの回数を安全に設定できる。
MQL5 でのナンピン回数パラメーター設定方法
基本的なパラメーター定義
// EA入力パラメーター
input int MaxNanpinCount = 5; // ナンピン最大回数
input double InitialLot = 0.01; // 初回ロット
input double LotMultiplier = 2.0; // ロット倍率
input int NanpinInterval = 100; // ナンピン間隔(pips)
input double MaxDrawdownPct = 50.0; // 最大ドローダウン(%)
ナンピン実行前の証拠金チェック
bool IsSafeToNanpin(int currentCount)
{
if (currentCount >= MaxNanpinCount) return false; // 最大回数チェック
// 次回ナンピン後の必要証拠金を計算
double nextLot = InitialLot * MathPow(LotMultiplier, currentCount);
double requiredMargin;
// 必要証拠金をブローカーAPIから取得
if (!OrderCalcMargin(ORDER_TYPE_BUY, _Symbol, nextLot,
SymbolInfoDouble(_Symbol, SYMBOL_ASK),
requiredMargin))
return false;
// 口座の空き証拠金チェック
double freeMargin = AccountInfoDouble(ACCOUNT_FREEMARGIN);
double equity = AccountInfoDouble(ACCOUNT_EQUITY);
double balance = AccountInfoDouble(ACCOUNT_BALANCE);
// ドローダウン率チェック
double currentDD = (balance - equity) / balance * 100.0;
if (currentDD >= MaxDrawdownPct) return false;
// 必要証拠金に安全係数1.5倍を確保できるか
return (freeMargin >= requiredMargin * 1.5);
}
ナンピン実行ループの実装例
void ExecuteNanpinLogic()
{
int openPositions = CountOpenPositions(); // 現在のポジション数
if (openPositions == 0)
{
// 初回エントリー
OpenPosition(InitialLot);
return;
}
// ナンピン条件チェック
if (openPositions <= MaxNanpinCount &&
IsSafeToNanpin(openPositions) &&
IsNanpinIntervalReached())
{
double nanpinLot = InitialLot * MathPow(LotMultiplier, openPositions);
OpenPosition(nanpinLot);
}
else if (!IsSafeToNanpin(openPositions))
{
// 安全条件を満たさない場合はロスカット実行
CloseAllPositions();
}
}
IsSafeToNanpin() 関数は毎ティック呼び出すことで、相場急変時にも自動的にナンピン停止・強制決済のフェイルセーフが機能する設計になっている。
実践的な設定例(リスク許容度別)
保守型(推奨)
| パラメーター | 設定値 | 根拠 |
|---|---|---|
| MaxNanpinCount | 3〜4 | 最大ドローダウンを20〜30%以内に抑制 |
| InitialLot | 口座残高の0.001% | 100万円口座なら0.01ロット |
| LotMultiplier | 1.5 | 倍率2.0に比べて末尾ロットを64%削減 |
| NanpinInterval | 150〜200pips | ドル円の日次変動幅の1〜2倍 |
標準型
| パラメーター | 設定値 | 根拠 |
|---|---|---|
| MaxNanpinCount | 5 | 最大ドローダウン50%前後を許容 |
| InitialLot | 口座残高の0.001% | 同上 |
| LotMultiplier | 2.0 | 一般的なマーチンゲール設定 |
| NanpinInterval | 100〜150pips | 標準的な逆行幅 |
アグレッシブ型(上級者向け・高リスク)
| パラメーター | 設定値 | 根拠と注意 |
|---|---|---|
| MaxNanpinCount | 6〜7 | 最大ドローダウン70%超のリスクを理解した上で |
| InitialLot | 口座残高の0.0005% | 初回ロットを半減して後半の爆発を抑制 |
| LotMultiplier | 2.0〜2.5 | 口座破綻リスクが急増する設定 |
| NanpinInterval | 80〜100pips | 高頻度ナンピンはスプレッドコストも増大 |
アグレッシブ型はバックテスト上のリターンが高く見えるが、実際の相場では「100年に1度」の急変動が数年ごとに発生する。2022年のポンドショック(-500pips/日)、2015年のスイスフランショック(-3,000pips/瞬間)のような事象が発生した場合、最大回数に達する前にスリッページで証拠金がゼロになることがある。
筆者自身、標準型(最大回数5・倍率2.0)の設定でナンピンEAを半年ほど運用していた際、ある通貨ペアで想定外の一方向トレンドが3日間続き、4回目のナンピンに到達した時点で証拠金維持率が120%まで落ち込んだ経験がある。幸い5回目のナンピン条件を満たす前に相場が反転し事なきを得たが、あと1回逆行していれば強制ロスカットになっていた水準だった。この経験以降、最大回数に達する「前」の段階でドローダウン率を監視し、規定の閾値を超えたら残り回数に関係なく一旦手動でポジションを整理するという運用ルールを追加した。計算式通りに設計しても、実際の相場の値動きには常に想定を超える余地があることを痛感した。
関連して、FXケリー基準による資金管理やナンピンマーチンのリスクと破産確率も参考にすると理解が深まる。
まとめ:ナンピン最大回数は計算で決める
EAのナンピン最大回数は「なんとなく5回」で決めるのではなく、口座残高 × 許容ドローダウン率 ≥ 累積必要証拠金 × 安全係数という不等式から算出することが必須だ。
保守型(最大3〜4回・倍率1.5)から始めてフォワードテスト6ヶ月以上の実績を積んだ後に、必要に応じて回数を1ずつ増やすアプローチが実績ベースで最も安定性が高い。最初から最大回数を多く設定するメリットは短期的なドローダウン回避だけであり、リスクとのトレードオフを常に定量的に把握した上で設定を行うこと。
MQL5の実装においては、ハードコードの最大回数チェックに加えて、証拠金余力と現在のドローダウン率をリアルタイムで確認するフェイルセーフロジックを必ず組み込む。パラメーターだけでなくコードレベルで安全装置を多重化することが、長期稼働するEAの設計原則だ。
よくある質問
Q. ナンピン回数は多いほど勝率が上がりますか? A. 短期的な勝率は上がりますが、その分1回あたりの損失規模は指数関数的に拡大します。勝率と最大ドローダウンはトレードオフの関係にあるため、回数だけで判断してはいけません。
Q. ロット倍率は2.0が標準ですか? A. 一般的に使われる設定値ですが、口座残高や許容ドローダウンによって調整すべきです。保守的に運用するなら1.5倍程度に抑えることで、末尾ロットの膨張を大きく抑制できます。
Q. 安全係数(Safety Buffer)はなぜ必要ですか? A. 相場のギャップ・スプレッド拡大・ブローカーの証拠金変動に対応するためです。計算値をそのまま使うと、突発的な変動で証拠金不足に陥るリスクがあります。
Q. バックテストで良い成績のナンピン設定を、そのまま実運用してよいですか? A. 推奨しません。2015年のスイスフランショックや2022年のポンドショックのような急変動時には、最大回数に達する前にスリッページで証拠金が枯渇するケースがあります。フォワードテストで最低6ヶ月の実績を確認してから運用することを推奨します。
免責事項: 本記事で紹介した計算式・設定値・コードサンプルはEA設計の教育目的で提供しています。実際の取引において損失を被った場合でも、当メディアおよびHedgrow FXは一切の責任を負いません。FX取引は元本割れリスクがあり、投資は自己責任で行ってください。過去のバックテスト結果は将来の利益を保証するものではありません。
