TradingView約定|Broker Emulator・Bar Magnifier | SG Group
本文へ移動
TradingView解説 · 最終内容確認 Read in English
ORDER-FILL ENGINE · TV12

TradingViewの注文はどう約定する?Broker EmulatorとBar Magnifierの仕組み

Strategy Testerの取引は、実際のbrokerへ送られた注文履歴ではありません。TradingViewのBroker Emulatorが利用可能なchart data、注文種類、生成時刻、gap、intrabar前提から模擬約定を作ります。Bar Magnifierは下位時間足dataを使ってbar内の順序を細かくしますが、tick履歴、板、queue、部分約定、latencyを完全再現する機能ではありません。本稿では、利益指標ではなく「なぜこのbar・この価格でfillされたのか」を一件ずつ説明できる監査方法を扱います。

この記事が役立つ方: Strategy Testerでstopやlimitの約定barが想定と違う人、同一barでentryとexitが起きる条件を理解したい人、Bar Magnifierの有無を比較したいPine戦略利用者

まず押さえる重要ポイント

INTRABAR PATH AUDIT

同じOHLCでも、価格の通過順序がfillを変える

OPEN100
HIGH106
LOW96
CLOSE103
  1. 1
    Path AOpen 100 → High 106 → Low 96 → Close 103entry stopを先に通過し、後からprotective stopへ届く可能性
  2. 2
    Path BOpen 100 → Low 96 → High 106 → Close 103protective levelはentry前なので同じ注文結果にならない可能性
  • Buy stop104entry trigger
  • Protective stop98exit trigger
  • Limit target105price-based exit
O=100、H=106、L=96、C=103は架空値です。実際の経路はOHLC四点だけでは一意に分かりません。
DIRECT ANSWER

Strategy markerは、Broker Emulatorが作った模擬fillの記録

TradingView strategyはorder commandを作り、Broker Emulatorが次に利用可能なtickまたは価格条件でfillを模擬します。 codeが条件barで注文を生成した時刻と、markerが表示されるfill時刻は同じとは限りません。market order、price-based order、process-on-close等で境界が変わるため、List of Tradesとchart markerだけでなく、order typeと作成barも照合します。

この仕組みは、過去のbarへ機械的に同じruleを適用するためのsimulationです。brokerのorder book、実際のspread、通信遅延、rejection、partial fill、価格改善を自動で復元しません。したがって「Strategy Testerで104に約定した」ことは、「同じ日時の実口座でも必ず104で約定した」という証拠ではありません。

01 · DEFAULT PATH

OHLCだけの履歴barではintrabar経路を仮定する

OHLCはbar内で到達した四点を示しますが、すべてのtick順序を保存していません。Broker Emulatorはopenがhighとlowのどちらに近いか等の規則から、open→high→low→closeまたはopen→low→high→closeという経路を仮定します。entryとexitの両水準が同じbarのrange内にある場合、この順序が結果を変えます。

OHLC監査で確認すること
論点質問誤読保存する証拠
Range注文価格はhigh-low内かrange内なら必ずfillO/H/L/Cとorder price
Pathどちらを先に通る仮定か実tick順序と同じ想定sequence
Gap前closeと現openの間か指定価格でfillprevious close・open
Same barentry後にexit水準へ届くかhigh/lowだけで断定order creation/fill順

価格がrangeへ触れたことと、十分な流動性で注文全量が約定したことは同義ではありません。

fill監査の最小記録Fill explanation = order type + creation time + activation price + available path + fill ruleCoverage ratio = Bar Magnifierで下位足を確認できたsample ÷ 監査sample式は説明可能性の監査で、実市場との誤差推定ではありません。

失敗境界は四種類に分けます。注文が作られる前に同じ価格へ触れていても、その接触は約定証拠になりません。前bar終値と次bar始値の間を飛び越えたgapでは、指定価格を順番に通過したと仮定できません。同一barの高値と安値にentryとexitが両方含まれても、entry後にexitへ到達した順序が必要です。limit注文では価格条件に加え、現在のverification設定と注文が有効だった期間を確認します。

02 · ORDER LIFECYCLE

market・limit・stop・stop-limitの役割を分ける

market orderは価格を指定せず次の利用可能な機会でfillを求めます。limit orderは指定価格以上に不利にならない条件、stop orderはstop到達後にmarket型の注文をactivateする考え方、stop-limitはstop activation後にlimit条件を持ちます。同じ「線へ触れた」表示でも、注文種類によって必要なeventが違います。

注文種類と監査点
種類生成後に必要なこと主な監査点
Market次の利用可能なtick生成barとfill bar、slippage仮定
Limitlimit条件を満たす価格touch/trade-through、gap、未約定仮定
Stopstopでactivate後にfilltriggerとfillを分離
Stop-limitstop activation+limit条件activateしても未約定の可能性

正確な現在仕様はTradingView公式StrategiesとBroker Emulator資料を確認してください。

chart barのcloseで条件を評価してmarket orderを作る標準的なstrategyでは、markerが次barのopen側に現れることがあります。これを「signalが遅れた」とだけ表現すると原因が不明です。条件確定時刻、order creation、next available tickという三段階で説明します。

03 · BAR MAGNIFIER

下位時間足で経路を細かくしても、coverageを確認する

Bar Magnifierを有効にすると、Broker Emulatorは利用可能な下位時間足dataを参照し、chart barのOHLCだけに基づく既定経路より細かなintrabar情報でfillを模擬します。同じchart bar内でentry後にexit水準へ到達した順序を確認できれば、既定仮定では起きなかったsame-bar exitが生じる場合があります。

ただし下位足dataの取得上限があり、長いhistoryの初期部分ではcoverageがないことがあります。plan、symbol、chart timeframe、available lower timeframeも影響します。Bar Magnifier ONという一項目だけを保存せず、どの期間に適用されたか、比較sampleの何件がcoverage内かを確認します。

Bar Magnifier coverage証拠台帳
記録項目残す証拠不足時の扱い
対象範囲最初と最後の対象chart bar、trade IDcoveredと未確認を分離する
下位時間足実際に参照されたintervalと銘柄識別子推測したtick列へ置換しない
注文時系列生成・activation・fillのbarと時刻順序不明のtradeを保留する
比較versionMagnifier OFF/ON以外が同一の設定表同時変更したrunを比較から外す
欠損と上限下位足が取得できない期間と件数coverage率の分母へ残す

coverage内でも実市場約定の証明にはなりません。ここで証明するのは、どの模擬fillがどの粒度のchart dataに基づいたかです。

04 · PINE V6 EXAMPLE

注文種類とBar Magnifier設定をsourceへ残す

下のPine v6 sampleは、確定barの架空crossからbuy stopを生成し、position成立後にstopとlimitのexitを置きます。`use_bar_magnifier = true`を明示しますが、機能availabilityと適用coverageは実環境で確認が必要です。EMA期間、10 ticks、20 ticksは教育用で、推奨entry・stop・targetではありません。

Pine Script v6:intrabar fill監査用samplepine
//@version=6
strategy(
    "Intrabar fill audit demo",
    overlay = true,
    use_bar_magnifier = true,
    calc_on_order_fills = false,
    process_orders_on_close = false
)

float basis = ta.ema(close, 20)
bool setup = ta.crossover(close, basis) and barstate.isconfirmed

if setup
    float entryStop = high + syminfo.mintick
    strategy.entry("L", strategy.long, stop = entryStop)

if strategy.position_size > 0
    float protectiveStop = strategy.position_avg_price - 10 * syminfo.mintick
    float target = strategy.position_avg_price + 20 * syminfo.mintick
    strategy.exit("L-X", "L", stop = protectiveStop, limit = target)

plot(basis, "EMA", color.orange)

同じsourceをMagnifier OFF/ONで比較する場合も、他のpropertiesとchart contextをTV11のfingerprintで固定してください。

source codeだけで実際のfillを説明できるとは限りません。List of Tradesからentry/exit barとpriceを取り、chart O/H/L/C、下位足coverage、order creation logと突き合わせます。`calc_on_order_fills`や`process_orders_on_close`を変更する比較は、TV15のexecution auditと組にしてください。

05 · FILL AUDIT

驚いたfillから順に一件ずつ反証する

fill反証ログ
確認対象保存する証拠反証質問
対象tradeID・entry/exit時刻・価格・方向・数量どの一件を説明しようとしているか
注文生成condition・bar・order type注文はfillより前に存在したか
価格経路previous close・O/H/L/C・gap・想定sequenceその順序で水準へ到達できたか
Magnifier下位足coverage・ON/OFF差既定path依存のfillではないか
未解決不足data・未確認仕様・市場非再現flag推測を事実として埋めていないか

空欄を推測で埋めず、説明不能も監査結果として残します。

まず高利益tradeではなく、同一barでentry/exit、gap fill、limit touch、長期history初期など仮定へ敏感なtradeを抽出します。変更後に成績が悪化しても削除せず、どのfill assumptionへ依存していたかをversion差として保存します。

再現手順では、対象tradeを含む期間を固定し、最初に既定経路版、次にBar Magnifier版を同じsource hashとPropertiesで実行します。両方から同じ形式の取引一覧を出力し、trade IDがずれた地点から一件ずつ照合します。さらに別の日に同じchart contextを開き直し、coverage開始位置、注文時刻、fill価格が同じ説明で再構成できるか確認します。成績が良い方を先に採用せず、説明不能件数と未covered件数を合否条件へ使います。

06 · DOWNSTREAM ANALYSIS

約定前提を監査してから結果dataをLabへ渡す

驚いた約定ごとの反証ログとBar Magnifierのcoverage記録がそろったら、対応する約定一覧(CSVまたはXLSX)をBacktest & Robustness Labの比較画面へ投入します。そこでequity curve、DD、取引分布をMagnifier OFF/ONや保守的fillの各versionで照合できます。前提を保った比較を継続保存したい段階が、有料のversion比較へ移る自然な時点です。

無料インジケーターはsignal条件の観察に使えますが、indicatorはstrategy orderやStrategy Testerの取引dataを自動生成しません。注文ruleを別途strategyとして定義し、fill監査を終えてからLabへ進みます。Bar Replay、Paper Trading、Broker Emulatorも互いの代用品ではありません。

INTRABAR COVERAGE AUDIT

fill sampleの下位足coverageと仮定依存を数える

監査したfill数、Bar Magnifier coverage内のfill、same-bar entry/exit、gap crossingを入力します。実市場誤差ではなく、追加確認が必要なsampleを整理します。

下位足coverage率%
既定path対象fills
sensitive casecases

coverage率=min(B,A)÷A、既定path対象=max(A−B,0)、sensitive case=C+D。caseは重複し得るため一意trade数とは限らず、実市場との一致率でもありません。

よくある質問

Broker Emulatorは実際のbroker約定を再現しますか?

完全には再現しません。chart dataとsimulation規則でfillを作り、実際の板、queue、latency、partial fill、rejection等は自動復元しません。

Bar MagnifierをONにすれば正確なtick backtestになりますか?

なりません。利用可能な下位時間足dataでintrabar処理を細かくしますが、tick履歴やmarket microstructureの完全な再現ではなく、coverage上限もあります。

limit価格へbarが触れたら必ず約定しますか?

単純に断定できません。現在のlimit fill設定、gap、order生成時刻、下位足経路を確認し、実市場では流動性も別に考えます。

なぜmarket orderのmarkerがsignal barの次barに出ますか?

bar closeで条件を評価して注文を生成する標準的なstrategyでは、最も早いfill機会が次の利用可能tick、通常は次bar openになるためです。process-on-close等の設定を変えた場合は別契約として記録します。

根拠資料と確認先

  1. TradingView | Broker emulator模擬約定と関連設定の公式概要
  2. TradingView Pine Script | StrategiesBroker Emulator、order types、Bar Magnifierの公式manual
  3. TradingView | What is Bar Magnifier backtesting mode下位時間足、same-bar fill、coverage上限の公式説明
  4. TradingView Pine Script | Declaration statementsuse_bar_magnifierとstrategy計算・fill引数の公式reference
  5. TradingView Pine Script FAQ | Strategiesorder timing、Bar Magnifier、strategy testingの公式FAQ

編集・発行: SG Group · 編集方針: TradingView公式ヘルプとPine Script公式文書を優先し、金融市場・商品に関する説明は取引所、監督当局、一次資料で補完しています。機能、データ、料金、接続条件は変わるため、実際の利用前に公式画面とリンク先の最新情報を確認してください。

重要事項: 本記事はTradingViewの画面、チャート、アラート、スクリーナー、ペーパートレード、Pine Script等の一般的な学習情報です。投資助言、売買シグナル、特定商品・データ提供者・ブローカーの推奨、将来価格や利益の保証ではありません。機能、料金、データ、取引所区分、通知、注文連携、Pine Scriptの仕様はプラン・地域・接続先・時点で異なり変更されることがあります。実際の資金を使う前に、TradingView公式資料、データ提供元、接続先事業者の最新条件を確認し、架空データまたはペーパートレードで手順を検証してください。