Pine Scriptが出来高フットプリントに対応しました。これにより、各価格バー内の詳細なオーダーフローに直接アクセスできるようになりました。
このアップデートにより、下位の時間足を使った回避策に頼ることなく、カスタム・フットプリント・インジケーターの構築、精密な出来高指標の取得、およびバー内のアクティビティの分析が可能になります。
Pineでフットプリントを活用するメリット
Footprintリクエストを使えば、高度なバー内データに即座にアクセスし、構造的に重要なオーダーフローレベルをマッピングできます。主な機能は以下の通りです:
- 詳細な出来高の内訳: バー全体および特定の価格レベルにおける正確な「買い」(ask)と「売り」(bid)の合計出来高
- 精密な出来高デルタ: 買い圧力と売り圧力の正確な差
- 重要なオークションレベル: バーのポイント・オブ・コントロール(POC)、バリューエリア・ハイ(VAH)、バリューエリア・ロー(VAL)への即時アクセス
- インバランス: 特定の価格行における買い・売りのインバランスデータ
request.footprint() をカスタムスクリプトと組み合わせることで、戦略と実行に集中しながら、詳細なオーダーフローデータをプログラムでモニタリングすることができます。
フットプリントとデータ構造の仕組み
request.footprint() 関数は、現在のバーの出来高フットプリント情報をリクエストするためのコアツールです。呼び出されると、そのバーのすべての出来高フットプリントデータを含むフットプリントオブジェクトを返します。
データは主に2つの構造で編成されています:
- フットプリントオブジェクト: バー全体の指標にアクセスできます。footprint.*() 関数を使用することで、買い出来高合計、売り出来高合計、バー全体の出来高デルタなどのデータを取得できます。
- Volume_rowオブジェクト: ポイント・オブ・コントロール(POC)やバリューエリアの境界など、フットプリント内の特定の価格行を表します。volume_row.*() 関数を使用することで、特定の行の価格レベル、出来高、出来高デルタ、インバランスを取得できます。
注: 特定のバーでフットプリントデータが利用できない場合、request.footprint() 関数は na を返します。
footprint.*() や volume_row.*() 関数で指標を取得しようとする前に、返されたオブジェクトが naでないこと をスクリプトで必ず確認してください。
使用例
以下は、フットプリントをリクエストし、データポイントにアクセスする方法を示すシンプルなスクリプトです:
//@version=6
indicator("Footprint Data Highlight", overlay = true)
// Request the footprint object for the current bar (100 ticks per row, 70% Value Area)
footprint reqFootprint = request.footprint(100, 70)
// We use a block to ensure we only process data when the footprint is available
if not na(reqFootprint)
// 1. Access overall bar metrics from the `footprint` object
float totalBuyVol = reqFootprint.buy_volume()
float totalSellVol = reqFootprint.sell_volume()
float volumeDelta = reqFootprint.delta()
// 2. Retrieve a specific `volume_row` object (the Point of Control)
volume_row pocRow = reqFootprint.poc()
// 3. Access specific price values from the `volume_row` object
float pocUpperPrice = pocRow.up_price()
float pocLowerPrice = pocRow.down_price()
// --- USING THE VARIABLES ---
// Use Buy/Sell Volume and Delta in a label
if barstate.islast
label.new(bar_index, high,
text = "Buy: " + str.tostring(totalBuyVol, format.volume) +
"\nSell: " + str.tostring(totalSellVol, format.volume) +
"\nDelta: " + str.tostring(volumeDelta, format.volume),
color = color.new(color.blue, 20),
textcolor = color.white,
style = label.style_label_down)
// Use POC prices to highlight the POC area on the chart
linefill.new(
line.new(bar_index, pocUpperPrice, bar_index[1], pocUpperPrice, color = color.orange),
line.new(bar_index, pocLowerPrice, bar_index[1], pocLowerPrice, color = color.orange),
color.new(color.orange, 80))
// Plotting the volume delta on a separate pane (if moved to non-overlay)
// or as a reference value in the Data Window
plot(not na(reqFootprint) ? reqFootprint.total_volume() : na, "Volume Delta", display = display.data_window)
なお、フットプリント機能を使用するには、PremiumまたはUltimateプランが必要です。
Pine Script® のエクスペリエンスに関する最新の改善情報については、ユーザーマニュアルのリリースノートをご確認ください。
これらの機能が皆様のお役に立てば幸いです。プラットフォームをより良くするために、引き続きフィードバックやご提案をお寄せください。私たちは皆様のためにTradingViewを構築しており、皆様のご意見をいつでもお待ちしております。
TradingViewチーム