ATRでEAロットを計算する方法と最小ロット未満の対処

ATRでEAロットを自動調整するためのチャートとリスク管理画面

FX自動売買のEAを運用していると、同じ0.1ロットでも「今日は値動きが大きくて怖い」「逆に今の相場ならもう少しロットを上げてもよさそう」と感じる場面があります。固定ロットはわかりやすい反面、相場の荒さが変わっても取引量が変わらないため、損切り幅やドローダウンの見え方が大きくブレやすいんですよね。

ATRロット調整は、損切り幅の変化に合わせて取引量を計算する方法です。ATRは相場の平均的な値幅を見る指標なので、EAのロット計算に組み込むと、ボラティリティが高い場面ではロットを抑え、落ち着いた場面では許容範囲内でロットを戻す設計ができます。この記事では、ATRから損切り幅を決める計算、口座通貨への換算、ロットの切り下げ、最小ロット未満なら発注しない分岐まで整理します。

この記事のポイント
  • ATRは方向予測ではなく相場の値幅を測る指標
  • ATRが大きいほどロットを小さくする設計が基本
  • 計算式は許容損失額とATRベースの損切り幅から逆算する
  • EA化では上限ロット・丸め・検証ルールまで決める
目次

ATRロット調整の基本

相場の値幅とロット調整を表すイメージ

ATRは方向ではなく値幅

ATRはAverage True Rangeの略で、ざっくり言うと「一定期間にどれくらい値動きしているか」を見る指標です。上がりそうか下がりそうかを判断するものではなく、相場が荒いのか、静かなのかを数値で見やすくするための指標ですね。たとえばATRが大きい日は、ローソク足の上下幅が広がりやすく、同じ損切り幅でもすぐに引っかかる可能性が高くなります。

EAのロット調整でATRを使う理由は、エントリー方向を当てるためではありません。目的は、1回の負けで受けるダメージを相場の荒さに合わせて整えることです。固定ロットのままATRに合わせて損切り距離だけを広げると、損切り時の想定損失額も増えます。損切り幅まで固定している場合はこの関係と異なるため、固定ロットだけを理由に損失額が増えるとは限りません。

MQL4では公式のiATR関数リファレンスにある通り、通貨ペア、時間足、期間、シフトを指定してATR値を取得できます。MT4やMT5の標準指標としても使えるので、まずチャート上でATRの動きを見てからEAに落とし込むと理解しやすいです。

先に押さえること

ATRは勝率を上げる魔法の指標ではありません。ロットを相場の値幅に合わせ、損失額のブレを小さくするための資金管理パーツとして使うのが現実的です。

ATRを使うときは、まず「今の相場でどれくらい逆行したら、想定が外れたと判断するか」を決めます。その距離をATRの何倍かで表し、そこからロットを逆算します。つまり、ATRロット調整はエントリー条件というより、損切り幅と取引量を一緒に設計する考え方です。

この前提を外さなければ、ATRを過信しにくくなります。値幅が大きい日は慎重に、値幅が小さい日は上限を守りながら、同じリスク感覚でEAを動かすための土台として見るのがちょうどいいです。

固定ロットとの違い

固定ロットは、常に同じロット数で注文する方法です。資金が少ないうちは管理しやすいですし、バックテスト結果も読みやすいメリットがあります。ただし、ATRの拡大に合わせて損切り幅を広げる設計では、同じロットを維持すると想定損失額が増えます。固定ロットとATR調整を比べるときは、損切り距離も同じ条件で比較する必要があります。

ATRロット調整は、固定ロットのわかりやすさを少し手放す代わりに、1回あたりの想定損失を一定に近づける考え方です。ATRが大きいときは損切り幅も広めに見積もるのでロットは小さくなり、ATRが小さいときは損切り幅が狭くなるのでロットは相対的に大きくなります。結果として、値動きの大小に合わせて取引量が変わります。

スクロールできます
項目固定ロットATRロット調整
管理のしやすさ単純で見やすい計算条件の確認が必要
高ボラ相場ATRで損切りを広げると想定損失が増えるロットを抑えやすい
低ボラ相場取引量を変えない許容内でロットを戻せる
EA向きの使い方初期検証や小資金運用資金管理を自動化したい運用

もちろん、ATRロット調整にも注意点はあります。ATRが低いからといって無制限にロットを上げると、指標発表や急変で一気に想定外の損失を受けるかもしれません。ATRが高く、許容損失内のロットが最低発注量を下回るなら、その取引は見送ります。取引機会を残すために最低発注量へ引き上げると、先に決めた損失条件を崩してしまいます。

固定ロットはシンプル、ATRロット調整は相場の値幅に合わせて損失額を整えやすい。この違いを理解してからEAへ入れると、設定ミスを減らしやすくなります。

すでにEAの資金管理全体を見直したい場合は、FX自動売買の資金管理とロット計算も合わせて読むと、証拠金や停止ルールとのつながりが見えやすいです。ここではATRによる損切り距離と発注量に絞り、口座全体の資金管理は関連記事で確認してください。

ロット計算の基本式

順序は、許容損失額を決め、ATRで損切り距離を決め、その距離で1ロットがいくら損失になるかを計算し、最後に発注量へ直す、です。ATRは価格の値幅であり、ロットでも損失額でもありません。価格単位のATRをpipsへ換算する方法と、価格差のまま損益計算する方法を混ぜないようにします。

損切り幅と取引量の計算を検討するイメージ
スクロールできます
計算するもの式と単位
許容損失額R計算に使う資金B × リスク率r(口座通貨)
損切り距離DATR × 倍率k(価格差)
1ロットの想定損失L損切り距離Dを損益へ換算(口座通貨/ロット)
計算ロットVR ÷ L(ロット)

pipsで計算するなら、ロット=許容損失額÷(ATRのpips数×倍率×1ロットあたり1pipの損益額)です。資金Bは口座残高か有効証拠金かを明示し、リスク率1%を式へ入れる場合は0.01に直します。率は計算用の仮定で、どの口座でも安全という意味はありません。

例として、円口座の計算資金10万円、リスク率1%、ATR20pips、倍率1.5、1ロットあたり1pipの損益額1,000円と仮定します。許容損失は1,000円、距離は30pips、1ロットの想定損失は30,000円です。したがって計算ロットは1,000÷30,000=約0.03333。最小0.01、刻み0.01なら0.03ロットへ切り下げ、価格差による想定損失は900円です。0.04へ切り上げると1,200円で条件を超えます。

この例は手数料、スワップ、滑りを含みません。費用込みで1,000円に収めたいなら、費用の見積額を先に予算から引くか、ロット別の費用を含めて再計算します。損切り距離を確定しないEAには、そのまま適用できません。損切りを後から遠ざけると当初のロット計算も無効になります。

価格・point・pipsの単位をそろえる

異なる目盛りで同じ距離を測る単位換算のイメージ
説明用の生成イメージです。実際の操作画面・検証データを示すものではありません。

MT4・MT5のATRは、銘柄の価格と同じ単位の値幅として扱います。例えばUSD/JPYでATRが0.20なら価格差0.20円です。1pip=0.01円とする通貨ペアの慣例では20pips、Point=0.001円の3桁表示なら200pointsになります。20pipsと200pointsを同じ数値で入力しないことが大切です。

スクロールできます
単位確認すること
価格差ATR×倍率や、エントリー価格と損切り価格の差
point銘柄のPoint。価格差÷Pointでpoint数になる
pipFXでの慣例的な単位。銘柄の定義を確認して価格差から換算
tick発注価格の最小変化幅。Pointと必ず同一とは限らない
口座通貨の損益値幅を金額へ換算した値。円口座なら円で比較する

一般的なFXでは非円ペアの1pipを0.0001、円ペアを0.01とすることが多いものの、ゴールドや指数CFDへ同じルールを流用しないでください。桁数だけで銘柄仕様を決めず、契約サイズ、tick幅、損益通貨を確認します。円口座でEUR/USDを取引する場合も、ドル建て損益を円へ換算する必要があります。ドルの損失額を円の許容額で直接割る計算はできません。

MT4のMarketInfoで読むMODE_TICKSIZEは、MQL4公式の銘柄仕様ではpoint数です。価格単位のtick幅はMODE_TICKSIZE×MODE_POINTへ直します。MODE_TICKVALUEは口座通貨建てのtick価値なので、1ロットの損失の概算は「価格差÷価格単位のtick幅×tick価値」です。値がゼロ、取得失敗、仕様との不整合なら発注を見送ります。

一方、MT5のSYMBOL_TRADE_TICK_SIZEは価格の最小変化幅です。MQL4のMODE_TICKSIZEと同じ単位だと思って移植しないでください。MT5では、OrderCalcProfitの公式仕様に沿い、売買方向、銘柄、参照ロット、予定エントリー価格、予定損切り価格から口座通貨建ての損益を見積もれます。有効な参照ロットの損失絶対値をロット数で割れば、1ロット相当の損失を計算できます。戻り値がfalse、結果がゼロ・非数、または損切りのはずなのに利益になる符号なら注文へ進めません。

参照ロットに1.0を使う場合も、その銘柄で有効な数量かを確認します。実装した金額換算は、対象ブローカーのデモ環境で銘柄ごとに照合してください。最初は1銘柄に絞り、ATR、予定価格、ロット、損益をそろえてから対象を広げると誤りを見つけやすくなります。

パラメータは検証条件として決める

設定値と上限を別々に調節するイメージ
説明用の生成イメージです。実際の操作画面・検証データを示すものではありません。

ATR期間、時間足、倍率、リスク率、EA独自の最大ロットを先に決めます。ATR期間14や倍率1.5・2.0などは比較用の条件例で、利益や安全性を保証する推奨値ではありません。同じ期間14でも、5分足と日足では表す値幅が違います。エントリー判定とATR計算で別の時間足を使うなら、その意図を明記します。

ATR期間を短くすると直近の値幅への反応が変わり、長くすると反応が緩やかになります。倍率を変えると損切り距離とロットが同時に変わるため、成績差をエントリー条件の改善と取り違えないようにしてください。まず基準条件を1つ固定し、期間や倍率のどちらか1項目だけを変更して比較します。

また、リスク率は単独注文の予算です。複数のEAやポジションが同じ口座で動く場合、含み損や未決済注文を無視して毎回同じ予算を割り当てると、口座全体のリスクが増えます。残高と有効証拠金のどちらを基準にするか、追加ポジションへ割り当てる残り予算をどう求めるかも固定します。

低ATRでロットが大きくなる問題には、独自上限ロット、スプレッド上限、取引時間の制限を併用します。ATRに下限を設けるなら、下回ったら見送るのか、損切り距離に最低幅を使うのかを明示してください。最低幅を採用した場合は、その実際の距離でロットを計算し直します。

EAにATRロット調整を入れる

条件をつないでEAを設計するイメージ。実際のサービス画面ではありません
EA設計を表すイメージ画像です。実際のサービス画面ではありません。

入力項目を先に決める

EAにATRロット調整を入れるときは、いきなり計算式を書くより、まず入力項目を決めた方が整理しやすいです。必要なのは「何をユーザーが変えられるようにするか」です。ATR期間、倍率、リスク率、独自上限、対象時間足、計算に使う残高種別を外部入力として整理します。最小ロットやロットステップはブローカーから取得する銘柄仕様であり、ユーザーが入力した値で上書きしないよう区別します。

逆に、何でも入力できるようにしすぎると、テスト時に組み合わせが増えすぎます。初心者向けのEAなら、最初は「リスク率」「ATR倍率」「最大ロット」くらいに絞り、ATR期間や対象時間足は固定でもかまいません。使う人が迷いにくく、検証もしやすい形にすることが大切です。

入力項目の例

ユーザー設定はATR期間・倍率・リスク率・独自上限。銘柄から取得する情報は最小/最大ロット・刻み・tick幅・損益換算・最小ストップ距離。この2つを分け、取得に失敗したら見送ります。

この段階で「EAを自作したいけれどMQLで細かい計算を書くのは重い」と感じるなら、ノーコードで条件を組み立てる選択肢もあります。条件、決済、ロット計算を分けて整理できると、あとからどこを変えたのか追いやすくなります。

コードを使わないEA作成の流れを確認する

NoCode EA Studioの案内では、MT4・MT5向けEAをブラウザで作成できます。EAファイルの無料受取にはパートナーリンク経由の口座開設と口座番号認証が必要です。ATRによるロット自動調整への対応は、利用前に確認してください。

EA作成と受取条件を確認する

入力項目を決めたら、それぞれの初期値も決めます。初期値は根拠なく安全と扱わず、デモ検証用の条件として設定します。ATRロット調整は、設定次第で大きいロットを出せてしまうため、初期状態から最大ロットを抑えておくと、検証中のミスを減らせます。

設定名もわかりやすくしておくと、後から見直すときに迷いません。

エントリー前にATRを読む

売買条件が成立したら、対象銘柄、ATR時間足、期間、参照足をそろえて値を取得します。確定足を使う設計では直前に確定した足を参照し、現在の未確定足のATRと混ぜません。未確定足を使う場合は、同じ足の途中でも値が変わる前提で検証します。

MT4のiATRは、銘柄・時間足・期間・shiftを指定して数値を返します。直前確定足を読む指定例はshift=1です。MT5のiATRは数値そのものではなく指標ハンドルを返すため、初期化時に有効性を確認し、CopyBufferでバッファ0の必要な値を取得します。直前確定足1個を読むなら開始位置1、件数1という指定に相当し、実際に1個コピーできたかまで判定します。

ATRが0以下、非数、必要な履歴が未準備、値の取得に失敗した場合はロットを計算せず、新規注文を見送ります。ゼロ除算を避けるためにATRを小さな適当な値へ置き換えると、過大なロットが計算されるおそれがあります。古いキャッシュ値で続行せず、データが有効になってから次の売買判定へ進めます。

スクロールできます
段階処理と見送り条件
データ取得銘柄・時間足・期間・参照足を一致させる。不正値なら見送り
価格の確定売買方向に応じた予定価格とATR損切りを決め、価格刻みに合わせる
距離の確認最小ストップ距離など発注制約を確認。距離を広げたら再計算
損失の換算最終価格で口座通貨の損失を計算。換算不能なら見送り
数量と余力切り下げ・最小量・上限・証拠金・総リスクを確認

買い・売りでは参照するBid/Askと損切り価格の方向が異なります。計算に使った予定エントリー価格から、最終的に送る損切り価格までの距離を評価し、スプレッドを無視した別の価格差と入れ替えないでください。損切り価格をtick刻みに合わせたり、業者の最小ストップ距離に合わせて広げたりしたときも、変更後の価格で損失を計算し直します。

ATRが低い時間帯でも、スプレッドは狭いとは限りません。薄い相場で過大な注文を出さないよう、スプレッド上限、売買可能時間、余剰証拠金を別に確認します。指標前後の急変をATRだけで予測することはできません。

最小ロット未満なら発注を見送る

必要な最小量に満たない場合は処理を進めないイメージ
説明用の生成イメージです。実際の操作画面・検証データを示すものではありません。

計算ロットが発注刻みに合わないときは、許容損失を超えない方向へ切り下げます。さらに、EA独自上限とブローカーの最大ロットの小さい方を上限にします。最小ロットは「必ずここまで引き上げる値」ではありません。許容損失内でその数量を持てないなら、今回の注文を止める条件です。

例えば、許容損失100円、ATR損切りで1ロットの損失が30,000円なら、計算ロットは約0.00333です。最小ロット0.01へ上げると想定損失は300円で、予算の3倍になります。これは最低発注量を満たしていても、損失条件を満たさない注文です。見送るか、戦略・対象銘柄・資金配分を別途見直し、発注のためだけにリスク率を増やさないでください。

スクロールできます
仮定算出・切り下げ結果判断
許容1,000円、損失30,000円/1lot、最小0.01、刻み0.01約0.03333 → 0.03、想定900円ほかの条件も満たしたら発注候補
許容100円、損失30,000円/1lot、最小0.01約0.00333 < 0.01見送り。0.01へ引き上げない
計算0.033、独自上限0.02、最小0.01、刻み0.010.02へ制限して想定損失を再確認上限内でも余力不足なら見送り
独自上限0.005、ブローカー最小0.01上限自体が最小未満発注可能な量がないため見送り

処理順は、①取得値と予算の検証、②計算ロットと上限の小さい方を選ぶ、③発注可能な刻みへ切り下げる、④最小ロット未満なら見送る、⑤最終量で損失・証拠金を再確認する、です。MQL5の銘柄仕様には、最小・最大・刻みだけでなく同方向の保有と注文の合計量の制限もあります。

0.01刻みの例なら、floor(上限適用後のロット÷0.01)×0.01という切り下げになります。ただし、0.01以外の刻みもあるため小数点以下2桁への四捨五入で代用しません。実装では浮動小数点誤差を考慮して刻みの整数個数で扱い、ブローカーで有効な数量かを確認します。丸め誤差の補正で予算を上回った場合も1段階下げ、最小未満になれば見送ります。

必要証拠金と損失予算は別の確認です。損切り時の想定損失が条件内でも、建てるための証拠金が足りないことがあります。業者の発注チェックと口座余力を照合し、実際に送るロット、SL、方向、価格が計算と一致することを最後に確認します。発注エラー時も数量を自動で切り上げて再送しない設計にします。

ノーコードでEAを作る流れを見たい場合は、NoCode EA Studioのアプリで確認できます。この記事のATR計算や見送り分岐をそのまま組めるかは未確認のため、利用可能な機能を確かめてください。ファイル受取にはパートナー口座開設と口座番号認証の条件があります。

バックテストで計算と実損失を比べる

計算上の想定と実測の差を比較するイメージ
説明用の生成イメージです。実際の操作画面・検証データを示すものではありません。

ATRロット調整を入れたら、バックテストでは利益額だけを見ない方がいいです。見るべきなのは、最大ドローダウン、連敗時の残高推移、ロットの最大値、低ATR時の発注量、高ATR時のロット抑制が効いているかです。とくに、相場が急変した期間でロットがどう変わったかを見ると、損失を抑える処理が想定どおりかを確かめられます。

固定ロット版とATRロット調整版を同じ条件で比較するのもおすすめです。エントリーと決済の条件を変えず、ロット計算だけを変えて比べると、ロット計算の影響を見やすくなります。ただしATRで損切り距離も変えるなら、損切りまで変えた効果を含む比較として分けます。利益が少し減っても、最大ドローダウンや資産曲線の乱れが小さくなるなら、長期運用ではATR調整の価値があるかもしれません。

  • 固定ロット版とATR調整版を同じ期間で比較する
  • ロット最大値が想定上限を超えていないか見る
  • 高ボラ期間で損失額が膨らみすぎていないか見る
  • 低ボラ期間で過大ロットになっていないか見る

バックテストで良く見えても、すぐ本番口座に入れるのは早いです。ATRは過去の値幅を見ているため、急なニュースや窓開けには遅れて反応します。デモ口座や小ロットのフォワードテストで、スプレッド拡大、約定ずれ、サーバー時間、週明けの値動きまで確認した方が現実的です。バックテスト結果の読み方は、MT4 EAバックテスト結果の見方でも整理しています。

スクロールできます
検証ケース期待する動作
ATRが0・未取得・履歴不足新規注文しない
ATRが急拡大して計算ロットが最小未満最小へ上げず見送る
ATRが極小で計算ロットが大きい独自上限を適用し、最終損失と証拠金を再確認
SLを価格刻みや最小距離に合わせて変更変更後の距離で数量を再計算
円以外の損益通貨・CFDを利用口座通貨への換算と契約仕様を個別に照合
手数料・滑り・窓開け想定損失と実損失の差、損失超過を確認

検証時はATR、単位、予定価格、SL、計算ロット、切り下げ後の数量、口座通貨の想定損失、見送り理由を照合できるようにします。成績が良いときも、ロットの桁違いや不正な換算が利益を膨らませていないか確認してください。

バックテスト操作が初めてなら、MT4のEA設定とバックテストの手順で条件をそろえられます。最大ドローダウンや連敗、期間外データとデモ運用を合わせ、実行できたことと妥当な計算であることを分けて確認します。

検証では「一番儲かる設定」より「負け方が想定内に収まる設定」を探す方が、EAを長く使いやすくなります。ATRロット調整はそのための資金管理機能として考えるのが自然です。

ATRロット調整を実装するときの要点

データ不正や条件超過では新規注文を止めるイメージ
説明用の生成イメージです。実際の操作画面・検証データを示すものではありません。

ATRロット調整は、相場の値幅で損切り距離を決め、その距離の損失額から取引量を逆算する設計です。ATRが大きいときはロットを小さくし、小さいときは上限内へ制限します。価格差、point、pip、tick、口座通貨をそろえて初めて、損失予算と発注量を比較できます。

実装では、ATR不正なら計算しない、数量は切り下げる、最小ロット未満なら発注しないという分岐を省かないでください。最後に実際のSL価格と数量で損失を再計算し、証拠金、同時保有、スプレッドなどの注文条件を確認します。最初は1銘柄で条件を固定し、手計算、バックテスト、デモ運用の順に照合すると、どこでずれたか追いやすくなります。

ただし、想定損失額は実現損失の上限保証ではありません。ATRは過去の値幅を使うため急変や窓開けを先回りできず、損切り価格どおりに約定しない場合もあります。金融庁のFX取引に関する説明も、急変時にはロスカットがあっても証拠金を超える損失が生じ得るとしています。ATRの採用や特定のリスク率だけを安全の根拠にしないでください。

本記事はEA設計の一般的な説明です。数値例は仕様を仮定した計算例で、特定の取引や収益を推奨・保証するものではありません。実運用の前に対象銘柄・口座通貨・業者の仕様を確認し、損失を負担できる範囲かを判断してください。

よかったらシェアしてね!
目次