TradingViewストラテジーのポジションサイズ設定|固定数量・金額・資産比率の違い
売買条件が同じでも、Pineが「10」を10契約として読むのか、口座通貨10単位として読むのか、資産の10%として読むのかで、取引履歴とエクイティ曲線は別物になります。本記事は適正ロットを推奨する記事ではありません。Pine Script v6の数量指定がどの順序で解釈され、初期資金・口座通貨・価格・必要証拠金とどう結び付くかを、再現できる監査手順として整理します。
この記事が役立つ方: Pine Scriptでstrategy()を作成し、注文数量が想定と合わない人/サイズ方式を変えたバックテストを比較したい人
まず押さえる重要ポイント
default_qty_typeは固定数量・金額・percent_of_equityの意味を決め、default_qty_valueがその値を決める。strategy.entry()またはstrategy.order()に非naのqtyを渡すと、既定サイズではなく契約・株・ロット・単位数として処理される。- 資産比率は価格と利用可能エクイティの両方で数量が変わるため、固定数量と同じ売買条件でも複利経路とドローダウンが変わる。
- 必要証拠金は損失予算ではなくブローカーエミュレーターがポジションを維持できるか判定する担保率であり、サイズ方式と分けて確認する。
- 数量方式を変更したら別バージョンとしてストラテジーテスター結果を出力し、同じ期間・コスト条件で比較する。
注文サイズは「注文数量があるか」から分岐する
- 注文数量が非na注文数量:契約・株・ロット・単位default_qty_type/default_qty_valueを上書き
- 注文数量がnaまたは省略strategy()の既定サイズ固定数量/金額/資産比率へ分岐
- 固定数量指定数の契約・株・ロット・単位
- 金額口座通貨で指定した名目額
- percent_of_equity利用可能エクイティに対する割合
結論:ポジションサイズは売買ルールと同格の検証条件
TradingViewのストラテジーで数量を確認するときは、最初に「既定サイズ」と「注文ごとの上書き」を分けます。strategy()のdefault_qty_typeとdefault_qty_valueは、qtyを省略したエントリー/注文の既定値です。注文関数に非naのqtyがあれば、その呼び出しでは既定値を使いません。
この違いは表示上の設定差ではありません。固定数量なら価格や残高が変わっても原則として同じ数量を発注します。金額なら口座通貨の名目額を価格で数量へ変換し、資産比率なら利用可能エクイティと価格の両方から数量が変わります。したがって、サイズ方式を変えた結果を「同じストラテジー」として一つに混ぜず、検証バージョンを分ける必要があります。
固定数量・金額・percent_of_equityを同じ「10」で比べない
| タイプ | 値10の意味 | 数量が変わる主因 | 監査ポイント |
|---|---|---|---|
| strategy.fixed | 10契約・株・ロット・単位 | 注文上書き、銘柄の数量仕様 | 取引マーカーの約定数量と最終建玉数量を分ける |
| strategy.cash | 口座通貨10単位の名目額 | 価格、口座通貨への換算 | 口座通貨と銘柄通貨を記録する |
| strategy.percent_of_equity | 利用可能エクイティの10% | エクイティ、価格、既存建玉、必要証拠金 | 残高経路による数量変化を確認する |
同じ数値でも単位が違います。銘柄の最小数量や丸めは別途確認してください。
固定数量 = default_qty_value金額方式の概算数量 ≈ 配分額 ÷ 注文価格資産比率方式の概算数量 ≈(利用可能エクイティ × 割合 ÷ 100)÷ 注文価格概算必要証拠金 = 建玉の想定元本 × 必要証拠金率 ÷ 100実際には銘柄の1ポイントの価値、通貨換算、数量の最小刻みと丸め、既存ポジション、ブローカーエミュレーターの仕様が加わります。特に先物・CFDでは、チャート価格だけを1契約の名目価値とみなせない場合があります。syminfo.pointvalueや銘柄仕様を確認せず、株式の単純な「金額÷価格」をそのまま移植しないでください。記事内のミニ計算は単純化した教育用モデルであり、契約仕様の代替ではありません。
注文数量の上書きと決済数量の別ルールを切り分ける
qtyの優先順位は、設定画面を変えたのに結果が変わらないときの第一確認項目です。エントリー/注文内に固定値や計算値が残っていれば、設定項目の既定注文数量を変更してもその注文には反映されません。既定値へ戻すならqtyを省略するか、条件に応じてnaを渡します。
| 呼び出し | 注文数量 | 使われるサイズ | 注意 |
|---|---|---|---|
| strategy.entry()/strategy.order() | 非na | 注文数量で指定した契約・株・ロット・単位数 | default_qty_type/default_qty_valueは使わない |
| strategy.entry()/strategy.order() | naまたは省略 | strategy()の既定サイズ | 設定項目で利用者が変更できる |
| strategy.exit() | 注文数量指定 | 決済対象の絶対数量 | qty_percentもある場合は注文数量優先 |
| strategy.close()/strategy.close_all() | — | 対象建玉に結び付く決済数量 | 新規エントリーの既定サイズとは別 |
決済注文の予約・部分決済・OCAはTV17で詳しく扱います。
資金・通貨・必要証拠金は「数量へどう入るか」だけを見る
ストラテジー設定全体の再現手順はTV11へ譲り、ここでは数量変換へ入る依存だけを確認します。initial_capitalは資産比率方式の最初の利用可能エクイティ、currencyは金額方式の指定単位、margin_long/margin_shortは作成された名目建玉を維持できるかという制約です。
金額の値は口座通貨から銘柄数量へ換算され、資産比率はその時点の利用可能エクイティから名目割当額を作ります。必要証拠金はエントリーのqtyを選ぶ方式ではありませんが、担保不足による注文不能や強制縮小が数量経路を変えるため、同じ実行の前提として残します。
金額配分の単位 = ストラテジーの口座通貨割合配分 = 利用可能エクイティ × 割合 ÷ 100概算必要証拠金 = 建玉の想定元本 × 必要証拠金率 ÷ 100通貨換算、1ポイントの価値、数量刻み、既存建玉、ブローカーエミュレーターの強制縮小は別途照合する単純化モデルです。同じエントリー条件で数量方式だけを比較する
次の教育用コードは単純な移動平均交差を使い、設定項目の既定サイズをそのまま利用します。シグナルの優位性を示す例ではありません。コード内にqtyを置かないことで、固定数量・金額・資産比率を設定項目から切り替えたときの差を監査しやすくしています。
//@version=6
strategy(
"Quantity interpretation audit",
overlay = true,
initial_capital = 100000,
currency = currency.USD,
default_qty_type = strategy.percent_of_equity,
default_qty_value = 10,
margin_long = 100,
margin_short = 100
)
int fastLength = input.int(20, "Fast length", minval = 1)
int slowLength = input.int(50, "Slow length", minval = 2)
float fast = ta.sma(close, fastLength)
float slow = ta.sma(close, slowLength)
bool longCondition = ta.crossover(fast, slow)
bool flatCondition = ta.crossunder(fast, slow)
if longCondition and strategy.position_size == 0
strategy.entry("Long", strategy.long)
if flatCondition and strategy.position_size > 0
strategy.close("Long")
plot(fast, "Fast", color.aqua)
plot(slow, "Slow", color.orange)
plot(strategy.position_size, "Position size", display = display.data_window)
plot(strategy.equity, "Equity", display = display.data_window)注文関数に非naの<code>qty</code>を追加すると、ここで設定した既定数量をその注文だけ上書きします。
比較時はコードとシグナルを固定し、①固定数量、②金額、③資産比率の順で一つずつ変更します。各実行について数量タイプ、値、初期資金、通貨、必要証拠金、期間、銘柄、時間足、コストを記録し、取引一覧を別名で保存してください。
資産比率の概算を手計算と取引一覧で照合する
ミニ計算機は、利用可能エクイティの一定割合を単純な価格で割り、概算数量と必要証拠金を表示します。株式のように1単位の名目価値を価格とみなせる単純モデルです。先物の1ポイントの価値、FX換算、CFD契約サイズ、数量丸め、既存建玉、手数料は含みません。
- 設定項目を保存する
数量タイプ・値、初期資金、通貨、必要証拠金、手数料、スリッページを控えます。
- 最初の3取引を照合する
エントリー価格、約定数量、建玉数量、利用可能エクイティを確認します。
- 一条件だけ変える
シグナルを固定し、数量タイプまたは数量値のどちらか一つだけを変更します。
- 別ファイルで出力する
条件名を付けたストラテジーテスター CSV/XLSXとして保存します。
- 分布とドローダウンを比較する
損益額だけでなく、率、取引数、ドローダウン、証拠金不足による強制処理、外れ値を同じ期間で比較します。
数量前提台帳を一つのストラテジーテスター出力へ結び付ける
研究記録の単位を「1実行=数量前提台帳の1行+ストラテジーテスター出力1点」と決めます。版IDを共通鍵にし、ソース側のqty経路と結果側の実数量を後から一対一で再照合できる状態にします。
- 同じIDのエントリーが常に同じ数量方式を使っているか
- 固定数量・金額・資産比率のファイル名と設定記録が対応しているか
- 銘柄や時間足を変えたときに数量単位の意味を再確認したか
- 未決済取引、強制縮小、反転注文を通常の決済済み取引と混同していないか
- 純利益だけでなくドローダウン率、取引ごとの損失分布、時系列の建玉集中を比較したか
台帳の最低列は版ID、スクリプトのハッシュ値、銘柄、時間足、エントリーID、数量タイプ、値、上書き有無、口座通貨/銘柄通貨、1ポイントの価値、必要証拠金、最初の3取引の期待数量と実数量です。期待値と実測値が一致しない実行には公開前の未解決フラグを付けます。
ファイル名にも版IDと数量方式を含め、固定数量、金額、資産比率を上書き保存しません。この台帳があれば、好成績の原因がエントリールールか、複利経路か、後半の建玉集中かを同じ証拠から切り分けられます。
資産比率注文サイズ概算
単純な「1単位の名目価値=価格」のモデルで、割当額・概算数量・必要証拠金を確認します。
計算:割当額=a×c÷100、数量=割当額÷b、必要証拠金=割当額×d÷100。契約サイズ、1ポイントの価値、通貨換算、数量刻み、コスト、スリッページ、既存建玉は含みません。
よくある質問
設定項目で注文サイズを変えたのに結果が変わらないのはなぜですか?
strategy.entry()またはstrategy.order()に非naのqtyが指定されている可能性があります。その呼び出しではdefault_qty_type/default_qty_valueより注文数量が優先されます。
percent_of_equityは1取引の損失を同じ割合にできますか?
できません。これは注文の名目サイズをエクイティ割合で決める方式です。ストップ到達時の損失率をそろえるには、ストップ距離、1単位の価格変動価値、数量丸め、スリッページなどを別に計算します。
必要証拠金率25%はリスク25%という意味ですか?
違います。必要証拠金はブローカーエミュレーター上で名目ポジションを維持するための担保率です。ストップ時の損失予算や最大ドローダウン許容度とは別の前提です。
注文数量を設定項目の既定サイズへ戻すにはどうしますか?
strategy.entry()またはstrategy.order()の注文数量を省略するか、既定値を使う分岐でnaを渡します。補助関数や途中計算が数値へ置換していないことも確認してください。
根拠資料と確認先
- TradingView Pine Script — Declaration statements既定数量タイプ・値、初期資金、口座通貨、必要証拠金の公式仕様。
- TradingView Pine Script — Strategiesポジションサイズ、ブローカーエミュレーター、必要証拠金、注文動作の公式解説。
- TradingView Pine Script — Strategies FAQ固定リスク数量、レバレッジ、注文が出ない場合などの公式FAQ。
- TradingView Help — Strategy propertiesStrategy Properties画面と各引数の対応。
- TradingView Help — Simulating leverage in Pine Script必要証拠金と強制縮小シミュレーションの公式説明。
編集・発行: SG Group · 編集方針: TradingView公式ヘルプとPine Script公式文書を優先し、金融市場・商品に関する説明は取引所、監督当局、一次資料で補完しています。機能、データ、料金、接続条件は変わるため、実際の利用前に公式画面とリンク先の最新情報を確認してください。
重要事項: 本記事はTradingViewの画面、チャート、アラート、スクリーナー、ペーパートレード、Pine Script等の一般的な学習情報です。投資助言、売買シグナル、特定商品・データ提供者・ブローカーの推奨、将来価格や利益の保証ではありません。機能、料金、データ、取引所区分、通知、注文連携、Pine Scriptの仕様はプラン・地域・接続先・時点で異なり変更されることがあります。実際の資金を使う前に、TradingView公式資料、データ提供元、接続先事業者の最新条件を確認し、架空データまたはペーパートレードで手順を検証してください。

