TradingViewの平均足・Renkoでバックテストしてよい?合成価格と約定の注意点
平均足(Heikin Ashi)、Renko(練行足)、Kagi、Line Break、Point & Figure、Range等は、値動きを別の規則で見やすく変換します。しかし、画面上のbar価格が実市場で取引できた価格とは限りません。合成OHLCを注文fillへ使うと、存在しなかった価格でentry・exitできたようなbacktestが生まれます。本稿はchart typeの優劣や売買手法を論じず、signalに使った値とorderをfillした標準市場価格を分離するための監査手順を示します。
この記事が役立つ方: 平均足やRenko上のStrategy Testerが通常ローソク足より良すぎる人、合成chartをsignal研究に使いながら約定の現実性を守りたいPine利用者
まず押さえる重要ポイント
- 非標準chartのbarは価格や時間を変換した分析表示で、実際に取引可能だったOHLCと同一ではない。
- 合成価格をsignalとfillの両方へ使うと、利益・drawdown・stop到達が現実より有利に見える場合がある。
- Heikin Ashiには標準OHLCでorderをfillする選択肢があるが、signal値とfill値の責任を記録する必要がある。
- Renko、Kagi、Line Break、Point & Figure等は同じ設定だけで標準価格backtestへ変わらず、標準chartで再設計する。
- 合成版と標準価格版をtrade IDでpair比較し、消えたtradeや大きな価格差を収益指標より先に欠陥として扱う。
見えているbarと、取引できる価格を分ける
- O 100.0
- H 103.0
- L 98.0
- C 101.0
- O 99.5
- H 102.2
- L 99.0
- C 101.6
- Signalどの系列から条件を計算したか
- Orderいつ、どのtypeを生成したか
- Fill標準価格か合成価格か
非標準chartは分析表示には使えても、既定のstrategy fillを鵜呑みにしない
平均足やRenko等の非標準chart上でstrategyを実行すると、合成barの価格水準が模擬注文のfillへ使われ、実市場で再現できない結果になる場合があります。 chartが滑らか、trendが明確、stopが少ないという見た目は、売買可能価格で同じ結果になる証拠ではありません。
安全な設計では、まず「条件計算に使うsignal series」と「注文fillを評価するmarket series」を別欄にします。合成系列を研究に使う場合も、通常ローソク足のsymbol ID、session、timeframe、標準OHLCで注文が成立したかを検証します。比較はnet profitより先に、entry/exit価格差とtrade IDから始めます。
最初に合成版と標準価格版の比較結果を開示する
| 証拠 | Synthetic version | Standard baseline | 判定 |
|---|---|---|---|
| Chart / series | chart typeとsignal source | ticker ID・session・timeframe | 入力basisを識別できるか |
| Entry | trade ID・bar・price | 対応ID・bar・price | 存在しない価格で始まっていないか |
| Exit | stop/target・bar・price | 同じorder ruleの結果 | synthetic high/lowだけに依存しないか |
| Sample | trade count・欠落ID | trade count・追加/消失ID | 結果選択を後付けしていないか |
standard baselineが作れない仮説は、約定可能性を主張せず視覚分析の範囲へ戻します。
比較で最初に見るのはprofitではなく、standard版では存在しないtrade、entry/exitの大きな価格差、同一barでだけ成立したtradeです。合成版の好成績が標準版で消えた場合、後から都合の良いchart typeを選ばず、入力欠陥として残します。
比較結果には、全trade数、pair化できた件数、合成版だけに存在する件数、標準版だけに存在する件数、価格差の中央値と最大値を同時に示します。一つの代表tradeだけで結論を作らず、対応不能tradeを分母から消しません。差の原因をsignal時刻、注文生成、fill basis、session、欠損dataへ分類し、分類不能は独立した未解決欄へ残します。
chart構造を判定し、標準価格baselineを作れるか決める
Heikin Ashiは現在と過去の標準OHLCから平均化した合成OHLCを作ります。Renko、Line Break、Kagi、Point & Figure等は、価格変化の条件でbarやbrickを構成し、通常の時間barと同じ境界を持ちません。Range chartも一定の値幅を基準にします。名前を一括して「ノイズ除去chart」と扱わず、時間・価格・sessionのどれが変換されたかを確認します。
| Chart | 変換の中心 | backtestでの危険 | 安全な扱い |
|---|---|---|---|
| Standard candles/bars | 実dataの時間OHLC | 粒度・gap・fill仮定 | 基準series |
| Heikin Ashi | 平均化した合成OHLC | synthetic fill | signal/fillを分離 |
| Renko / Range | 値幅でbrick/bar形成 | 時間と価格経路の近似 | 標準chartでrule再構成 |
| Kagi / Line Break / P&F | 反転・break規則 | 取引不能な合成level | 視覚分析に限定 |
実装と利用可能機能は変更され得るため、現行TradingView公式資料を確認してください。
特にRenko等は、historical chartとrealtime形成過程が同じ情報を持たない場合があります。brickが完成した後の整った履歴を、当時その順序で利用できた確定情報だとみなすとlook-aheadに近い誤読が生じます。ここではTV04の一般的repaintingではなく、series constructionとfill priceだけを監査します。
- 時間barとの対応を確認
各合成barに同じ時間境界の標準barがあるなら、signalとfillを分離できるか検討します。
- 標準価格optionの適用範囲を確認
Heikin Ashi向け設定をRenko等へ一般化せず、公式referenceで対象を固定します。
- 標準chartでruleを再構成
brickや反転条件をanalysis inputとしてrequestし、注文は標準bar上で生成します。
- 対応付け不能なら用途を限定
取引可能価格と時刻を証明できない表示は、視覚分析または仮説生成に留めます。
この判断は結果を見る前に記録します。合成版の利益が大きかった後で標準価格baselineの要否を変えると、chart type自体が最適化parameterになります。判断日、chart family、構成値、標準barへの対応方法、対応不能の理由を台帳へ残し、後から都合の良い分岐へ移動しないようにします。
平均足caseでsignal時刻と標準OHLC fillを照合する
Heikin Ashiは各time barに対応する合成barを持つため、TradingView strategyには平均足chart上でもstandard OHLCでorderをfillする設定があります。Pineでは`fill_orders_on_standard_ohlc`、画面では対応するProperties optionとして提供される場合があります。名称とavailabilityは現行公式資料で確認します。
この設定は「平均足strategyが正しい」ことを保証しません。signalは合成値、fillは標準値という二系列の設計になるため、entry conditionがどのbar closeで確定し、orderがいつ生成され、標準価格のどこでfillされたかを残します。平均足の色変化を標準closeで起きたeventと同一視しません。
Signal state = function(synthetic OHLC, confirmed time)Fill evidence = standard OHLC + order type + Broker Emulator ruleSynthetic gap = |synthetic fill reference − standard fill reference|Synthetic gapは入力差の監査値で、取引可能なarbitrageや将来損益を示しません。| 証拠 | 記録する値 | 失敗境界 |
|---|---|---|
| signal source | 平均足ticker、timeframe、session、確定bar | 形成中の合成値を確定値として使用 |
| execution source | 標準ticker ID、OHLC、fill option | 合成OHLCへ暗黙に戻る |
| order lifecycle | 条件成立・生成・fillのbarと時刻 | 平均足の色変化と注文時刻を同一視 |
| paired trade | rule ID、entry/exit差、消失trade | 利益だけを比較して価格差を無視 |
signalが同じでもfill basisが違えば別versionです。画面の見た目ではなく、注文ごとの標準価格証拠で判定します。
Renko系caseはbrick完成時刻と標準barへの写像を反証する
`fill_orders_on_standard_ohlc`の扱いを、Renko、Kagi、Line Break、Point & Figure等へ一般化しません。TradingView公式declaration referenceは、この機能がHeikin Ashi向けで、他の非標準chartには同じように影響しない旨を説明しています。Renko chart上のstrategyを一項目切り替えて現実的にできる、と約束しないことが重要です。
代わりに標準chartをexecution contextにし、必要なら`ticker.renko()`等から得た値を明示的なanalysis inputとしてrequestします。その上で、brick由来のconditionをいつ確定扱いにするか、standard barでorderがいつ生成されるかを設計します。lower-timeframe近似にも限界があるため、結果がbrick size一つへ依存していないかも別versionで確認します。
具体的な失敗例は、完成後のbrick列では反転が一つに見えるのに、標準barでは同じ期間に複数回水準を往復しているcaseです。brick sizeを少し変えるだけで条件bar、trade数、entry時刻が大きく変わるなら、価格優位性より構成規則への依存を疑います。同じ期間を複数brick sizeで固定比較し、標準barへ写像できないtradeは「未検証」として残します。
合成値をrequestし、三つの価格basis versionを再現する
下のPine v6 sampleはHeikin Ashi closeをanalysis seriesとして取得し、確定chart barで架空のcross conditionを評価します。`fill_orders_on_standard_ohlc = true`はHeikin Ashi chartで標準OHLC fillを使う意図を記録します。通常chartで実行した場合も標準chart価格が基準です。20期間は説明用で、推奨signalではありません。
//@version=6
strategy(
"Heikin-Ashi signal audit demo",
overlay = true,
fill_orders_on_standard_ohlc = true
)
string haTicker = ticker.heikinashi(syminfo.tickerid)
float haClose = request.security(
haTicker,
timeframe.period,
close,
gaps = barmerge.gaps_on,
lookahead = barmerge.lookahead_off
)
float haBasis = ta.sma(haClose, 20)
bool longCondition = ta.crossover(haClose, haBasis) and barstate.isconfirmed
bool exitCondition = ta.crossunder(haClose, haBasis) and barstate.isconfirmed
if longCondition
strategy.entry("L", strategy.long)
if exitCondition
strategy.close("L")
plot(haClose, "HA close", color.teal)
plot(haBasis, "HA basis", color.orange)requestした値のrealtime確認、session、gaps、chart typeを保存し、Renko等へ同じ結論を拡張しないでください。
`request.security()`を追加すると別data contextが入ります。same-timeframeでもsessionとgapsを確認し、higher timeframeへ変える場合はTV14のconfirmation patternを使います。codeがcompileすること、markerが整うこと、standard fillでrobustなことは別の検証です。
再現では三runを分けます。第一は標準signal・標準fillの基準版、第二は合成signal・標準fillの検証版、第三は合成signal・合成fillの診断専用版です。期間、symbol、order rule、cost、sizingを固定し、各runへ別version IDを付けます。同じrule IDでtradeをpair化し、entry前提が違って対応不能になった地点も削除しません。第三runは性能候補ではなく、合成価格依存がどこで生じたかを示す反証資料として扱います。
標準価格で監査した結果だけを分析工程へ送る
signal時刻とstandard fillの対応を説明できるCSV/XLSXだけを、Backtest & Robustness Labへ渡します。合成価格版と標準価格版を対にしてKPI、DD、取引分布、OOS差を読むと、価格basisの変更でどの結論が崩れたかを特定できます。このpairを保存して再比較する必要が生じた時、有料のversion管理と深い診断が役立ちます。
無料インジケーターは合成chart上の見え方を観察する入口ですが、indicatorのplotだけではStrategy Tester用の取引一覧を作れません。無料indicatorのplotを使う場合もsource、inputs、chart type、確定条件を確認し、strategy化は別仕様として扱います。
合成価格と標準価格の差をticksと概算影響へ変換
同じ架空eventのstandard fill reference、synthetic reference、数量、tick sizeを入力し、series定義差の大きさを確認します。
absolute gap=|B−A|、ticks=gap÷D、quantity-scaled gap=gap×C。contract multiplier、currency、cost、slippageを含まず、利益機会や実損益ではありません。
よくある質問
平均足でstrategyを使うことは禁止ですか?
禁止という単純な話ではありません。ただし合成OHLCをfillへ使う既定結果は実市場を表さない可能性があり、標準OHLC fillとsignal seriesを明示して監査します。
fill_orders_on_standard_ohlcでRenkoも直せますか?
同じようには扱えません。公式referenceではHeikin Ashi向けの機能として説明され、RenkoやKagi等の合成価格問題は標準chartで再設計します。
Bar MagnifierならRenko backtestは現実的になりますか?
保証されません。下位足のintrabar detailと、Renko自体のsynthetic price/time constructionは別問題です。
合成signalを通常ローソク足chartで使えますか?
Pineで合成tickerを明示的にrequestし、standard chartをexecution contextにする設計は可能です。ただしsignalの確定時刻、session、gaps、order生成時刻を別々に監査してください。
合成価格版と標準価格版のtrade数は一致していなければなりませんか?
一致は必須ではありません。価格basisによってsignalやfill条件が変わればtrade集合も分岐します。差を消そうとせず、最初に分岐したrule ID、時刻、signal価格、standard OHLCをpair監査へ残してください。
根拠資料と確認先
- TradingView Pine Script | Non-standard charts dataHeikin Ashi、Renko、Kagi等の合成dataと利用上の注意
- TradingView | Unrealistic results on non-standard charts非標準chart strategyの約定が実市場を表しにくい理由
- TradingView Pine Script | Declaration statementsfill_orders_on_standard_ohlcと適用範囲の公式reference
- TradingView Pine Script FAQ | Strategies非標準chart backtestに関する公式FAQ
- TradingView Pine Script | Other timeframes and dataticker IDをrequestする際のdata contextとgaps
編集・発行: SG Group · 編集方針: TradingView公式ヘルプとPine Script公式文書を優先し、金融市場・商品に関する説明は取引所、監督当局、一次資料で補完しています。機能、データ、料金、接続条件は変わるため、実際の利用前に公式画面とリンク先の最新情報を確認してください。
重要事項: 本記事はTradingViewの画面、チャート、アラート、スクリーナー、ペーパートレード、Pine Script等の一般的な学習情報です。投資助言、売買シグナル、特定商品・データ提供者・ブローカーの推奨、将来価格や利益の保証ではありません。機能、料金、データ、取引所区分、通知、注文連携、Pine Scriptの仕様はプラン・地域・接続先・時点で異なり変更されることがあります。実際の資金を使う前に、TradingView公式資料、データ提供元、接続先事業者の最新条件を確認し、架空データまたはペーパートレードで手順を検証してください。

