TradingViewのStrategy Propertiesを固定する方法:比較可能なバックテスト設定表
同じPine戦略でも、initial capital、base currency、order size、pyramiding、margin、commission、slippageなどが違えば、Strategy Testerの損益、取引数量、margin call、比較可能性は変わります。本稿は「良い設定」を選ぶ記事ではありません。結果を読む前に、どの値をどこで固定し、どの値がUIで上書きされ、どのデータ文脈で実行されたかを一枚の設定フィンガープリントへ残す手順です。コストの計算や感度分析は既存の専門記事へ分離し、ここでは再現性だけを監査します。
この記事が役立つ方: Strategy Testerの結果がPC、共有相手、再読込後で一致しない人、複数戦略や設定versionを同じ前提で比較したい個人トレーダーとPine開発者
まず押さえる重要ポイント
- Strategy Propertiesは成績の飾りではなく、数量、資本制約、約定前提を決める実験条件である。
- script declaration、Settings/Properties、symbol・timeframe・sessionを一つの設定フィンガープリントとして保存する。
- 二つの結果を比べる前に、一度に変更した項目を一つへ絞り、変更理由と実行時刻を記録する。
- commissionやslippageは値と単位だけをここで保存し、コスト控除や感度分析はBT09へ分離する。
- 設定フィンガープリントの完成率は記録の欠落を測る指標であり、最適設定や将来成績を採点するものではない。
結果より先に、実験条件へ名前を付ける
Capital
- Initial 100,000
- Currency USD
- Order 10% equity
Exposure
- Pyramiding 1
- Long margin 100%
- Short margin 100%
Friction
- Commission 0.05%
- Slippage 2 ticks
- Unit verified
Context
- Symbol ID saved
- Timeframe saved
- Session saved
比較できるのは、設定とデータ文脈が固定された結果だけ
Strategy Propertiesは、バックテストという実験の前提条件です。 initial capitalと通貨は損益率や資本制約の基準、order sizeとpyramidingはエクスポージャー、marginは必要資本とmargin call、commissionとslippageは仮定した摩擦を変えます。結果画面のnet profitだけを保存しても、これらが不明なら同じ実験を再現できません。
最初に設定表を保存し、次にStrategy Testerを実行し、最後に結果ファイルと設定表を同じversion IDで結びます。「前回より成績が良い」という比較は、symbol、timeframe、期間、session、script hash、inputs、propertiesのうち意図した一項目だけが違う場合に初めて意味を持ちます。データ提供元や履歴範囲が違う結果も別実験です。
設定を資本・エクスポージャー・摩擦・計算へ分ける
一つのProperties画面を長い入力一覧として扱うと、変更理由が消えます。資本層、エクスポージャー層、摩擦層、計算・約定層へ分けると、どの結果差をどの設定が生んだ可能性があるかを追跡できます。本稿は最初の三層を記録し、計算時刻はTV15、約定機構はTV12で詳しく扱います。
| 層 | 代表項目 | 変わり得るもの | 本稿で残す証拠 |
|---|---|---|---|
| 資本 | initial capital・currency | 率の分母・資本不足 | 値・通貨・根拠 |
| エクスポージャー | order size・pyramiding・margin | 数量・重複建玉・margin call | 型・値・方向別条件 |
| 摩擦 | commission・slippage | 約定後損益 | 単位・値・片道の定義 |
| 計算/約定 | recalculate・fill settings | 注文生成時刻・fill | 別記事への監査リンク |
UI名称や配置は変更されることがあります。現行公式資料と実画面を優先してください。
とくにpercent of equityとfixed quantityは同じ数値でも意味が違います。margin 100%と20%も単純なrisk設定ではなく、必要資本と利用可能なnotionalが変わる条件です。期待損失を決める機能と誤認せず、実際のposition riskはstop、quantity、point value、gap等を別途確認します。
設定フィンガープリントを結果ファイルと同時に保存する
フィンガープリントは暗号学的な保証ではなく、人が差分を見つけるための短い識別子です。完全な表には値、単位、入力場所、根拠、script内固定かUI上書きか、確認日を残し、短縮IDはファイル名や比較表へ付けます。スクリーンショットだけでは文字検索や差分抽出が難しいため、構造化した文字列も保存します。
Fingerprint = script version + input set + capital/currency + sizing + pyramiding + margin + friction + contextCompleteness = 記録済み必須項目 ÷ 必須項目 × 100Review flags = 未記録項目 + UI上書き候補この式は再現性の記録率であり、戦略品質や収益性のscoreではありません。| Field | 例(架空) | 単位/型 | 出所 |
|---|---|---|---|
| initial_capital | 100000 | USD | strategy() |
| default_qty | 10 | % of equity | strategy() |
| pyramiding | 1 | 同方向entry上限 | strategy() |
| margin long/short | 100 / 100 | % | strategy() |
| commission | 0.05 | % per fill想定 | strategy() |
| slippage | 2 | ticks | strategy() |
| context | TICKERID / 60 / regular | ID・分・session | chart |
値は設定方法を示す架空例で、推奨値ではありません。
strategy()へ明示した値とUI上書きを照合する
Pine v6では、strategy declarationへ複数の既定propertyを明示できます。下のsampleは設定を可視化するための教育用です。pyramiding = 1は同方向entryを同時に一件まで許す一建玉意図です。移動平均crossは説明を短くするためだけの仮ルールで、優位性、推奨期間、売買方向を示しません。commissionやslippageの架空値も実際のbroker条件ではありません。
//@version=6
strategy(
"Settings fingerprint demo",
overlay = true,
initial_capital = 100000,
currency = currency.USD,
default_qty_type = strategy.percent_of_equity,
default_qty_value = 10,
pyramiding = 1,
commission_type = strategy.commission.percent,
commission_value = 0.05,
slippage = 2,
margin_long = 100,
margin_short = 100
)
int fastLength = input.int(20, "Fast length", minval = 2)
int slowLength = input.int(50, "Slow length", minval = 3)
float fast = ta.sma(close, fastLength)
float slow = ta.sma(close, slowLength)
if ta.crossover(fast, slow) and barstate.isconfirmed
strategy.entry("L", strategy.long)
if ta.crossunder(fast, slow) and barstate.isconfirmed
strategy.close("L")
plot(fast, "Fast", color.teal)
plot(slow, "Slow", color.orange)Pine Editorの現行compilerと公式declaration referenceで引数名・型を再確認してください。
scriptへ明示すると共有時の出発点を残しやすくなりますが、Properties画面で変更可能な項目がある場合、実行時の値がsource上の既定値と一致するとは限りません。source、Properties画面、出力された設定情報の三つを照合し、UI overrideがあるversionは別IDで保存します。
一度に一つだけ変え、結果差と設定差を混ぜない
設定versionを比較するときはbaselineを複製し、変更対象を一項目へ絞ります。capitalとorder sizeを同時に変えれば、損益額、率、取引可能性のどれが影響したか分離できません。pyramidingを変えるなら、他のproperties、inputs、symbol、期間を固定し、変更前後のtrade count、exposure、margin eventも保存します。
- Baselineを凍結
script hash、inputs、properties、symbol、timeframe、期間を保存します。
- 一項目を変更
変更理由、旧値、新値、単位、実行者、時刻を記録します。
- Testerを再実行
画面値だけでなく、同じ種類のCSV/XLSXを出力します。
- 差分を照合
設定差、trade数、数量、資本制約、警告の順に確認します。
- versionを固定
良く見えた値だけ採用せず、失敗versionも同じ台帳に残します。
commission、spread、slippageを動かした感度分析は別の問いです。ここで複数cost scenarioを再制作せず、BT09のコスト感度とストレステストへ渡します。TV11の役割は、そのBT09へ渡したbaseline設定を第三者が特定できる状態にすることです。
正しい前提を添えてCSV/XLSXを分析工程へ渡す
Strategy Testerから適合するCSV/XLSXを出力したら、同じ名前の設定フィンガープリントと組にします。SG GroupのBacktest & Robustness Labでは、読み込んだ結果からKPI、equity、drawdown、stress、OOS等の記述的な診断へ進めます。比較versionを保存して差分を継続的に扱いたい段階では、有料機能への移行が自然です。
無料TradingViewインジケーター集は観察や仮説づくりの入口ですが、indicator表示そのものはStrategy Testerのstrategy出力ではありません。明確なruleを別途`strategy()`へ実装し、データ・約定・実行条件を検証してから結果をLabへ渡します。見栄えの良いplotを直接「検証済み成績」と呼ばないことが重要です。
公開・共有前に設定の欠落と上書きを監査する
- 通常タイトル、script version、Pine version、source hashを記録した。
- initial capital、currency、order-size type/value、pyramiding、direction別marginを記録した。
- commissionとslippageの値・単位・入力場所を記録し、計算説明はBT09へ分離した。
- symbol ID、provider、timeframe、session、date range、adjustmentを保存した。
- strategy()の既定値とProperties画面の実行値を照合した。
- 一度に変更した項目は一つで、失敗versionも削除していない。
- CSV/XLSX、設定表、実行ログへ同じfingerprint IDを付けた。
設定を固定しても将来の成績は保証されません。再現性は「同じ問いを同じ条件で再実行できる」ための最低条件であり、strategyの妥当性は別にdata quality、fill、execution、sample、cost、OOS、robustnessから検証します。次はTV12で約定前提、TV15で実行タイミングを監査してください。
設定記録の完成度と上書きflagを数える
必須property数、記録済み数、strategy()へ明示した数、UI上書き候補数を入力します。品質や収益性ではなく、再現性台帳の欠落だけを見つけます。
記録完成率=min(記録済み, 総数)÷総数、code明示率=min(code明示, 総数)÷総数、要確認flag=未記録数+UI上書き候補。100%でも設定の適切さや戦略性能は保証しません。
よくある質問
Strategy Propertiesを保存すれば同じ結果を完全再現できますか?
十分条件ではありません。script version、inputs、symbol ID、provider、timeframe、session、履歴範囲、data revisionも一致させる必要があります。設定表は再現性の入口です。
commissionやslippageの正しい値はいくつですか?
普遍的な値はありません。broker、商品、注文、流動性、時期で異なります。本稿では値と単位を保存するだけに留め、計算と感度分析はBT09で扱います。
scriptに書けばProperties画面の確認は不要ですか?
不要にはなりません。実行時に変更された値やchart外部のcontextがあり得ます。source、Properties、出力情報を照合してください。
設定フィンガープリントはCSV内へ書き込む必要がありますか?
必須ではありません。人が読める設定表やJSONを別添しても構いませんが、CSV/XLSXと同じversion ID、実行日時、script hashで一意に結び付けてください。
根拠資料と確認先
- TradingView | Strategy propertiesStrategy Propertiesの公式項目とstrategy()引数の対応
- TradingView Pine Script | Declaration statementsstrategy declarationとproperty引数の公式reference
- TradingView Pine Script | StrategiesStrategy Tester、properties、orders、cost、margin等の公式概念
- TradingView Pine Script FAQ | Strategiesposition sizing、leverage、testingに関する公式FAQ
- TradingView Pine Script | Execution model設定差と分離すべき実行時contextの公式説明
編集・発行: SG Group · 編集方針: TradingView公式ヘルプとPine Script公式文書を優先し、金融市場・商品に関する説明は取引所、監督当局、一次資料で補完しています。機能、データ、料金、接続条件は変わるため、実際の利用前に公式画面とリンク先の最新情報を確認してください。
重要事項: 本記事はTradingViewの画面、チャート、アラート、スクリーナー、ペーパートレード、Pine Script等の一般的な学習情報です。投資助言、売買シグナル、特定商品・データ提供者・ブローカーの推奨、将来価格や利益の保証ではありません。機能、料金、データ、取引所区分、通知、注文連携、Pine Scriptの仕様はプラン・地域・接続先・時点で異なり変更されることがあります。実際の資金を使う前に、TradingView公式資料、データ提供元、接続先事業者の最新条件を確認し、架空データまたはペーパートレードで手順を検証してください。

