
동적으로 고정된 VWAP와 거래량 분포를 결합한 유동성 포착 전략은 가격 이탈 가치 영역과 거래량 이상성을 기반으로 한 양적 거래 방법이다. 이 전략은 주로 일간 재계산된 고정된 거래량 가중 평균 가격 ((VWAP) 과 거래량 분포의 최고 거래량 가격 (POC) 을 주요 기준점으로 사용하고, 상대적으로 강한 약한 지표 ((RSI) 와 거래량 이상성 검출을 결합하여 가격 이탈 가치 영역과 충분한 유동성 지원이 있을 때 거래 기회를 포착한다.
이 전략의 핵심 원칙은 가격과 가치 절전 지점 (VWAP와 POC) 의 오차를 식별하고, 합성 거래량 및 동적 지표 확인과 결합하여 시장에서의 유동성 기회를 포착하는 것입니다. 구체적으로 구현하는 원칙은 다음과 같습니다:
동적 고정 VWAP 계산전략: VWAP 계산을 매 거래일 초에 재설정하여 VWAP가 당일 가격 가중치를 반영할 수 있도록 보장합니다. VWAP 값을 축적된 거래량 (cumVol) 과 축적된 가격에 거래량 (cumPV) 을 곱하는 방식으로 동적으로 업데이트합니다.
성과 분포 분석: 가격대를 여러 계층으로 나누고, 각 가격대의 거래량을 계산하여, 거래량이 가장 많은 가격대 중간 지점을 POC (Point of Control) 으로 찾는다. 이 과정은 각 거래일에 재설정되어, POC가 당일 거래량 분포를 반영하도록 한다.
신호 생성 논리:
위험 관리:ATR ((평균 실제 범위) 를 기반으로 스톱 로드 및 스톱 스탠드 레벨을 동적으로 설정한다. 전략은 기본적으로 1.5배의 ATR을 스톱 로드, 2배의 ATR을 스톱 로드로 사용하며, 리스크 수익률은 1:1.33로 보장한다.
다중 인증 메커니즘전략: 두 가지 핵심 가치 지점 (VWAP 및 POC) 에서 가격의 오차, 거래량 이상 및 RSI 확인 삼중 조건 필터링 신호를 통해 가짜 신호의 가능성을 효과적으로 감소시킵니다.
동적적 시장 적응: 매일 재계산된 VWAP와 거래량 분포는 전략이 다양한 시장 환경에 적응하고 최신 가격과 거래량 상황을 반영할 수 있도록 보장합니다.
수량-가격 관계에 기반한 분석 프레임워크이 전략은 가격 (VWAP), 거래량 (Volume Profile) 및 동력 (RSI) 분석을 통합하여 가격 관계 분석 프레임워크를 구축합니다.
자율적 위험 관리ATR 기반의 스톱 로드 설정은 시장의 변동성에 따라 위험 관리가 자동으로 조정될 수 있도록 하며, 다양한 변동 환경에서 일관된 위험 관리를 제공합니다.
시각 확인 지원: 전략은 VWAP, POC 및 신호 표시의 시각화를 제공하여 거래자가 전략 논리와 신호 생성 과정을 직관적으로 이해할 수 있도록합니다.
유동성 포착 장점: 거래 조건으로 평균 이상의 거래량을 요구함으로써, 전략은 시장에서 유동적인 사건을 포착하는 데 초점을 맞추고 거래의 실행 효율성과 슬라이드 포인트 통제를 향상시킵니다.
일일 데이터에 지나치게 의존하는 것전략: 매일 VWAP 및 거래량 분포를 재설정하여, 일일 간의 연속성이 부족하여, 더 장기적인 시장 구조를 무시합니다. 다중 주기 VWAP 또는 더 장기적인 거래량 분포를 추가 참조로 추가하는 것을 고려해야합니다.
성량 이상 탐지 민감성전략: 일정한 거래량 배수 (기본 3배) 를 사용하여 예외를 탐지합니다. 다른 시장이나 다른 기간에는 다른 파라미터 설정이 필요할 수 있습니다.
RSI 하락 고정 리스크: RSI가 고정된 40⁄60 값을 사용하는 것은 모든 시장 환경에 적합하지 않을 수 있으며, 특히 트렌드 시장에서 기회를 놓치거나 과도한 신호를 생성 할 수 있습니다. RSI 값을 동적으로 조정하거나 트렌드 식별 메커니즘과 결합하는 것이 고려 될 수 있습니다.
너무 작은 위험: 높은 변동성이 있는 시장에서 1.5배의 ATR의 중지 손실은 너무 작을 수 있으며, 이로 인해 자주 중지 손실이 발생합니다. 시장 환경이나 변동성 특성의 동력에 따라 중지 손실 배수를 조정하는 것이 고려되어야합니다.
트렌드 필터 부족: 전략에는 명확한 트렌드 필터링 메커니즘이 없으며, 강한 트렌드 중 역동 신호를 일으킬 수 있습니다. 강한 트렌드 중 역동 거래를 피하기 위해 트렌드 식별 구성 요소를 추가하는 것이 좋습니다.
다주기 VWAP 통합: 여러 시간 주기의 VWAP를 도입하여 VWAP 대역을 형성하여 전략의 다차원 분석 능력을 향상시킵니다. 이것은 다른 시간 프레임의 가격 편차를 식별하여 신호의 신뢰성을 향상시킵니다.
자율적 거래량 절감: 고정된 교류량 배수를 교류량 변동성에 기반한 적응한 임계값으로 대체하여, 예를 들어 교류량 Z 분수 또는 교류량 표준 차차 배수를 사용하여, 실제 교류량 비정상을 더 정확하게 식별한다.
시장 상태 분류: 시장 상태를 식별하는 모듈을 추가하여 트렌드 시장, 간격 시장 및 고 변동 시장을 구분하고, 다른 시장 상태에 따라 전략 매개 변수 및 신호 생성 논리를 조정합니다.
시간 필터: 시간 필터 기능을 추가하여 시장 개시와 종결 전의 높은 변동의 시기를 피하거나 특정 효율적인 거래 시기를 집중하십시오.
성과 분배 강화: 거래량 분포 분석을 최적화하고, 시간 가격 기회를 도입하여 (TPO) 분석을 수행하거나, 더 안정적인 시장 구조 정보를 얻기 위해 다일 축적된 거래량 분포를 고려합니다.
동적 차단 장치: 시장의 변동성이나 가격 구조에 기반한 동적 스톱 전략을 구현합니다. 예를 들어, 강력한 브레이크 시 트래킹 스톱을 사용하여 수익 잠재력을 극대화합니다.
기계 학습 강화: 결정 나무 또는 무작위 숲 알고리즘을 사용하여 다중 매개 변수 조합을 최적화하여 전략의 적응성을 향상시키는 기계 학습 알고리즘을 도입하여 매개 변수 선택 및 신호 생성을 최적화하십시오.
동적으로 고정된 VWAP와 거래량 분포를 결합한 유동성 캡처 전략은 가격 이탈 가치 영역을 기반으로 거래량 확인을 결합한 양적 거래 시스템이다. VWAP, 거래량 분포 POC, RSI 및 거래량 변동성 검사를 통합함으로써 전략은 가격 이탈 가치 영역을 효과적으로 식별하고 거래량이 많은 거래량 지원 거래 기회를 확보할 수 있다. 전략의 핵심 장점은 다수의 확인 메커니즘과 자율적 위험 관리이지만, 일일 데이터에 지나치게 의존하고 트렌드 교차의 부족 등의 위험도 있다.
/*backtest
start: 2025-04-14 00:00:00
end: 2025-05-14 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Liquidity Sniper + VWAP Profile", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=1, max_bars_back=500)
// === Inputs ===
volumeMultiplier = input.float(3.0, title="Volume Multiplier")
atrLength = input.int(14, title="ATR Length")
slMultiplier = input.float(1.5, title="Stop Loss ATR Multiplier")
tpMultiplier = input.float(2.0, title="Take Profit ATR Multiplier")
levels = input.int(24, title="Volume Profile Levels", minval=10, maxval=100)
// === VWAP Calculation ===
var float cumVol = na
var float cumPV = na
isNewDay = ta.change(time("D"))
if isNewDay
cumVol := volume
cumPV := hl2 * volume
else
cumVol += volume
cumPV += hl2 * volume
vwap = cumPV / cumVol
plot(vwap, color=color.orange, title="Daily VWAP")
// === Volume Profile (Lite) ===
profileHeight = high - low
step = profileHeight / levels
var float[] volumeProfile = array.new_float(levels, 0.0)
if isNewDay
for i = 0 to levels - 1
array.set(volumeProfile, i, 0.0)
for i = 0 to levels - 1
levelLow = low + step * i
levelHigh = levelLow + step
if close >= levelLow and close < levelHigh
vol = array.get(volumeProfile, i)
array.set(volumeProfile, i, vol + volume)
maxVol = array.max(volumeProfile)
var float POC = na
for i = 0 to levels - 1
if array.get(volumeProfile, i) == maxVol
POC := low + step * i + step / 2
plot(POC, title="Volume Profile POC", color=color.blue)
// === Indicators ===
atr = ta.atr(atrLength)
vol = volume
volMA = ta.sma(volume, 20)
rsi = ta.rsi(close, 14)
// === Signal Logic ===
buySignal = close < vwap and close < POC and vol > volMA * volumeMultiplier and rsi < 40
sellSignal = close > vwap and close > POC and vol > volMA * volumeMultiplier and rsi > 60
// === Debug Plots ===
plotshape(buySignal, title="BUY Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(sellSignal, title="SELL Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
// === Entry + Exit ===
if buySignal
strategy.entry("BUY", strategy.long)
strategy.exit("TP/SL BUY", from_entry="BUY", stop=close - atr * slMultiplier, limit=close + atr * tpMultiplier)
if sellSignal
strategy.entry("SELL", strategy.short)
strategy.exit("TP/SL SELL", from_entry="SELL", stop=close + atr * slMultiplier, limit=close - atr * tpMultiplier)