Pine 스크립트가 이제 볼륨 풋프린트를 지원하여, 각 가격 바 내부의 상세한 주문 흐름을 직접 확인할 수 있게 되었습니다.
이번 업데이트를 통해 커스텀 풋프린트 지표를 구축하고, 정확한 볼륨 지표를 추출하며, 더 낮은 타임프레임의 우회 방법을 사용하지 않고도 바 내 활동을 분석할 수 있습니다.
Pine에서 풋프린트를 쓰는 까닭이 뭔가요?
풋프린트 요청을 통해 바 내의 고급 데이터를 즉시 활용하고, 다음과 같이 구조적으로 중요한 주문 흐름 수준을 파악할 수 있습니다:
- 세분화된 거래량 분할: 전체 바 및 특정 가격 수준에서의 정확한 “매수”(매도 호가) 및 “매도”(매수 호가) 거래량 합계
- 정밀한 거래량 델타: 매수 압력과 매도 압력 간의 구체적인 차이
- 주요 옥션 레벨: 바의 POC(Point of Control), VAH(Value Area High), VAL(Value Area Low)에 대한 즉각적인 접근
- 불균형: 특정 가격 행에서의 매수 및 매도 불균형 데이터
request.footprint()를 커스텀 스크립트와 결합하면, 전략과 실행에 집중하면서도 심층 주문 흐름 데이터를 프로그래밍 방식으로 모니터링할 수 있습니다.
풋프린트 및 데이터 구조의 작동 방식
request.footprint() 함수는 현재 바(bar)의 거래량 풋프린트 정보를 요청하는 데 사용되는 핵심 도구입니다. 호출 시, 해당 바에 대해 검색된 모든 거래량 풋프린트 데이터를 포함하는 풋프린트 오브젝트를 반환합니다.
데이터는 두 가지 주요 구조로 구성됩니다:
- 풋프린트 오브젝트: 이를 통해 바의 전반적인 지표를 확인할 수 있습니다. footprint.*() 함수를 사용하면 총 매수량, 총 매도량, 거래량 델타와 같은 데이터를 검색할 수 있습니다.
- Volume_row 오브젝트: 이는 풋프린트 내의 특정 가격 행(예: POC(Point of Control) 또는 Value Area 경계)을 나타냅니다. volume_row.*() 함수를 사용하면 특정 행의 가격레벨, 거래량 값, 거래량 델타 및 불균형(imbalances)을 가져올 수 있습니다.
참고: 특정 바에 대한 풋프린트 데이터가 없는 경우, request.footprint() 함수는 na를 반환합니다.
footprint.*() 또는 volume_row.*() 함수를 사용하여 지표를 추출하기 전에, 반환된 오브젝트가 na가 아닌지 스크립트에서 항상 확인해야 합니다.
사용 예시
다음은 풋프린트를 요청하고 그 기반 데이터 포인트에 접근하는 방법을 보여주는 간소화된 스크립트입니다:
//@version=6
indicator("Footprint Data Highlight", overlay = true)
// 현재 바에 대한 풋프린트 오브젝트 요청 (행당 100틱, 70% 밸류 에어리어)
footprint reqFootprint = request.footprint(100, 70)
// 풋프린트가 사용 가능한 경우에만 데이터를 처리하도록 블록을 사용합니다
if not na(reqFootprint)
// 1. `footprint` 오브젝트로부터 전체 바 메트릭에 액세스
float totalBuyVol = reqFootprint.buy_volume()
float totalSellVol = reqFootprint.sell_volume()
float volumeDelta = reqFootprint.delta()
// 2. 특정 `volume_row` 오브젝트(Point of Control) 가져오기
volume_row pocRow = reqFootprint.poc()
// 3. `volume_row` 오브젝트에서 특정 가격 값을 가져옵니다
float pocUpperPrice = pocRow.up_price()
float pocLowerPrice = pocRow.down_price()
// --- 변수 사용 ---
// 레이블에서 매수/매도 거래량 및 델타를 사용합니다
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)
// POC 가격을 사용하여 차트상의 POC 영역을 강조 표시
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))
// 별도의 패널에 거래량 델타를 표시(오버레이가 아닌 쪽으로 옮겨진 경우)
// 또는 데이터 창에 참조 값으로 표시
plot(not na(reqFootprint) ? reqFootprint.total_volume() : na, "Volume Delta", display = display.data_window)
이러한 풋프린트 기능을 사용하려면 프리미엄(Premium) 또는 얼티밋(Ultimate) 요금제가 필요합니다.
Pine Script® 사용 환경의 최신 개선 사항을 확인하려면 사용자 매뉴얼의 릴리즈 노트를 주시해 주세요.
이 기능들이 저희가 예상한 만큼 유용하게 활용되기를 바라며, 플랫폼을 더욱 발전시킬 수 있도록 계속해서 피드백과 제안을 보내주시기 바랍니다. TradingView는 여러분을 위해 만들어졌으며, 여러분의 소중한 의견을 언제나 기다리고 있습니다.
TradingView 팀