
유동성 사냥과 역전 거래 전략은 시장의 유동성 사냥 행동을 포착하고 그 후의 강력한 역전에서 출전하는 것을 중점으로 하는 고급 양적 거래 시스템이다. 이 전략의 핵심 아이디어는 역사적 고점이나 낮은 지점이 돌파된 상황을 식별하고 (유동성 사냥) 그 다음 방향의 역전이 일어날 수 있음을 나타내는 시장의 눈에 띄는 역전 형태를 기다리는 것이다. 이 전략은 단순히 역전을 포착하는 것이 아니라 실제 반응적 역전을 찾아서 더 적은, 그러나 더 의미있는 거래 신호를 제공합니다.
이 전략의 작동 원리는 두 가지 중요한 단계에 기반합니다. 먼저 유동적인 사냥 행동을 식별하고, 그 다음에는 반전 신호를 확인합니다.
유동적인 사냥 식별전략은 역기적 회귀기 (기본 20주기) 를 사용하여 역사적 고위와 낮은 지점을 결정한다. 현재 가격이 이전 최고점을 돌파하거나 이전 최저점을 돌파하면 잠재적인 유동성 포획 사건으로 간주된다.
역확인: 유동성 사냥 사건이 발생한 후, 전략은 강력한 역풍을 찾는데, 그 폭은 14주기 ATR의 1.2배가 넘어야 한다. 다중 신호를 하기 위해서는 강력한 시선이 필요하며, 공백 신호를 하기 위해서는 강력한 시선이 필요한다.
신호 생성이 전략은 유동성 사냥과 역확인 두 가지 조건이 동시에 충족될 때만 거래 신호를 생성합니다.
탈퇴 장치이 전략은 두 가지 탈퇴 메커니즘을 적용합니다.
이 양적 거래 전략의 코드를 분석하면 다음과 같은 중요한 장점을 찾을 수 있습니다.
기관의 행동을 포착하는 것이 전략은 기관들이 흔히 하는 유동성 포획 행위를 식별하는데 초점을 맞추고 있는데, 이는 보통 대기자금이 주도하는 시장 운영이며, ‘지능한 돈’의 움직임을 따라갈 수 있다.
고품질 신호유동성 사냥과 강력한 역전환을 결합한 이중 확인 메커니즘을 통해 전략은 약한 신호를 효과적으로 필터링하여 높은 확률의 거래 기회를 생성합니다.
매우 적응력이 좋다이 전략은 ATR을 사용하여 역전환의 폭 요구 사항을 동적으로 조정하여 다양한 시장 변동에 적응할 수 있도록합니다.
개선된 위험 관리100% 스톱로즈와 시간 퇴출의 쌍방향 보호 장치가 통합되어 거래 당 위험 경계를 효과적으로 제어합니다.
양방향 거래전략: 다수와 적자를 동시에 지원하고, 단일 방향에 국한되지 않고 다양한 시장 환경에서 기회를 찾을 수 있습니다.
변수 조정: 회귀 기간, ATR 배수, TP/SL 비율, 지분 기간과 같은 핵심 매개 변수들은 모두 조정할 수 있으며, 전략이 높은 유연성을 갖는다.
이 전략은 세련된 디자인에도 불구하고 다음과 같은 잠재적인 위험들이 있습니다.
가짜 침입 위험: 시장이 짧은 기간 동안 역사적으로 높은 낮은 지점을 돌파한 후 즉시 다시 돌아가는 경우가 발생할 수 있으며, 이는 잘못된 신호를 유발합니다. 해결 방법은 거래량 확인이나 지속 기간 요구 사항을 돌파하는 것과 같은 추가 필터링 조건을 추가하는 것이 고려 될 수 있습니다.
고정 비율 TP/SL의 한계고정된 비율의 스톱로스를 사용하는 것은 모든 시장 환경에 적합하지 않을 수 있습니다. 특히 변동성이 크게 변하는 기간 동안 ATR 기반의 동적 스톱로스 설정을 고려하는 것이 좋습니다.
시각 장애물: 고정 주기 탈퇴는 트렌드가 막 시작되었을 때 우수한 위치에서 조기 탈퇴를 초래할 수 있다. 탈퇴 시기는 트렌드 지표의 동적 조정과 결합하여 고려할 수 있다.
매개변수 민감도: 정책 성능은 파라미터 선택에 민감하다. 특히 회귀 기간 길기와 ATR 배수. 과잉 적합성을 피하기 위해 충분한 파라미터 최적화와 회귀 테스트가 필요합니다.
시장 환경에 대한 적응력: 이 전략은 간격의 흔들림 시장에서 가장 효과적일 수 있지만, 강한 추세 시장에서 너무 많은 잘못된 신호를 일으킬 수 있습니다. 시장 환경 식별 메커니즘에 가입하는 것이 좋습니다.
코드의 심층적인 분석을 바탕으로 다음과 같은 최적화 방향이 제시되었습니다.
동적 ATR 배수: 현재 전략은 고정된 1.2배의 ATR을 역전환의 판단 기준으로 사용하며, 시장의 변동성 역동성에 따라 이 배수를 조정하는 것을 고려할 수 있으며, 높은 변동기 동안 배수를 낮추고 낮은 변동기 동안 배수를 높일 수 있다.
양수 확인: 매매량 분석을 추가 확인 요소로 추가하여, 예를 들어, 유동적인 사냥시 매매량이 증가하도록 요구하고, 반전시 매매량이 더 커진다.
다중 시간 주기 확인: 더 높은 시간 주기에서 지지/저항 영역을 찾고, 이러한 중요한 영역 근처의 유동적인 사냥 사건에서만 신호를 생성한다.
지능형 정지 장치: 단순한 고정된 비율이 아닌 스톱포드를 추적하거나 시장 구조에 기반한 동적 스톱포드를 구현한다.
트렌드 필터: 트렌드 인식 컴포넌트를 추가하여 강한 트렌드에서 역전 거래를 줄이고, 트렌드 방향에서만 신호를 받거나 파라미터를 조정한다.
최적화된 회귀기: 현재 고정 회귀 기간 ((20주기) 을 사용하는 것은 모든 시장에 적용되지 않을 수 있습니다. 시장의 변동성에 따라 자동으로 조정되는 적응 회귀 기간을 구현하는 것을 고려하십시오.
반전 패턴 인식: 간단한 반전 이외에, 더 복잡한 반전 형태를 식별할 수 있습니다. 침식 형태, 줄, 사격 별 등이 반전 인식의 정확도를 향상시킵니다.
유동성 사냥과 역전 거래 전략은 시장에서 유동성 사냥과 그 후의 강력한 역전 행동을 식별하여 높은 확률의 거래 기회를 포착하는 정교하게 설계된 정량 거래 시스템입니다. 이 전략은 기술 분석과 시장 미시 구조 이론을 결합하여 특히 시장 조작과 역전의 중요한 순간에 초점을 맞추고 있습니다.
엄격한 이중 확인 메커니즘을 적용함으로써 (~ 유동성 사냥 + 강도 반전) 이 전략은 시장의 소음을 효과적으로 필터링하고 진정한 품질의 설정이 발생할 때만 신호를 발산합니다. 또한, 완벽한 위험 관리 시스템 (~ 이중 탈퇴 메커니즘) 은 자금의 안전을 보장합니다.
이 전략은 상당히 완벽하지만, 특히 동적 변수 조정, 여러 확인 메커니즘 및 더 지능적인 자금 관리와 관련하여 여러 가지 최적화 방향을 탐색 할 수 있습니다. 이러한 최적화를 통해이 전략은 다양한 시장 조건에서 더 안정적이고 신뢰할 수있는 거래 신호를 제공하는 잠재력을 가지고 있습니다.
이 전략은 시장의 전환점을 포착하려는 거래자들에게 체계적이고 규율적인 방법을 제공하여 감정적 인 거래를 피하고 장기적인 수익성을 높이는 데 도움이 됩니다.
/*backtest
start: 2015-02-22 00:00:00
end: 2025-05-14 16:31:09
period: 1h
basePeriod: 1h
*/
//@version=5
strategy("Liquidity Hunt + Reversal Strategy (TP/SL + Time-Based)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === Settings ===
len = input.int(20, title="Lookback for Liquidity Hunt")
barExit = input.int(5, title="Exit After How Many Bars")
tpPerc = input.float(2.0, title="Take Profit (%)") / 100
slPerc = input.float(1.0, title="Stop Loss (%)") / 100
// === Liquidity Hunt Detection ===
prevHigh = ta.highest(high, len)[1]
prevLow = ta.lowest(low, len)[1]
liqUp = high > prevHigh
liqDown = low < prevLow
// === Reversal Confirmation ===
atr = ta.atr(14)
bigBearish = close < open and (open - close) > (atr * 1.2)
bigBullish = close > open and (close - open) > (atr * 1.2)
// === Signals ===
longSignal = liqDown and bigBullish
shortSignal = liqUp and bigBearish
// === Open Trades ===
if (longSignal)
strategy.entry("Long", strategy.long)
if (shortSignal)
strategy.entry("Short", strategy.short)
// === Entry Price and Bars in Trade ===
entryPrice = strategy.position_avg_price
barsInTrade = bar_index - strategy.opentrades.entry_bar_index(0)
// === Long Exit ===
if (strategy.position_size > 0)
strategy.exit("Long Exit", from_entry="Long",
limit=entryPrice * (1 + tpPerc),
stop=entryPrice * (1 - slPerc),
when=barsInTrade >= barExit)
// === Short Exit ===
if (strategy.position_size < 0)
strategy.exit("Short Exit", from_entry="Short",
limit=entryPrice * (1 - tpPerc),
stop=entryPrice * (1 + slPerc),
when=barsInTrade >= barExit)
// === Chart Signals ===
plotshape(longSignal, location=location.belowbar, color=color.green, style=shape.labelup, text="LONG")
plotshape(shortSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="SHORT")