이제 Pine 스크립트에서 볼륨 풋프린트를 사용할 수 있습니다

Mar 2

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 팀

 

Look first Then leap

트레이딩뷰는 여러분을 위해 만들어졌으므로 트레이딩뷰의 멋진 기능을 최대한 활용하세요