
이 전략은 트렌드 확인과 다이내믹 스톱 로드 메커니즘을 결합한 역행한 공정 가치 격차 (Inverted Fair Value Gap, IFVG) 에 기반한 거래 시스템이다. 이 전략은 먼저 시장의 공정 가치 격차 (Fair Value Gap, FVG) 를 식별하고, 그 다음에는 이러한 격차의 역전 신호를 찾고, 동시에 간단한 이동 평균 (SMA) 을 사용하여 전체 시장의 흐름을 확인하고, 마지막으로 평균 실제 파도 (ATR) 를 통해 다이내믹 스톱 로드를 설정하여 리스크 관리를 최적화한다.
이 전략의 핵심은 공정 가치 허점을 확인하고 활용하는 공정 가치 허점 (FVG) 의 역전이다. 전략의 원칙은 다음과 같은 몇 가지 핵심 단계로 나눌 수 있다:
FVG 식별전략은 먼저 공정 가치 격차를 탐지합니다. 즉, K 선의 최저 가격이 이전 K 선의 최저 가격보다 높을 때 형성되는 가격 영역 (지향적 FVG) 또는 K 선의 최고 가격이 이전 K 선의 최저 가격보다 낮을 때 형성되는 가격 영역 (지향적 FVG). 이 영역은 시장이 빠르게 움직일 때 거래되지 않은 가격 수준을 나타냅니다.
IFVG 확정: 가격이 FVG 영역으로 돌아와 반향 신호가 나타나면 역행한 공정 가치 격차가 형성된다. 구체적으로, 가격이 비지니스 FVG의 고점보다 높고 닫기 가격은 개시 가격보다 높거나, 가격이 비지니스 FVG의 저점보다 낮고 닫기 가격은 개시 가격보다 낮을 때, IFVG가 확인된다.
트렌드 확인: 전략은 50주기 및 200주기 간단한 이동 평균 (SMA) 을 사용하여 시장의 추세를 확인한다. 단기 SMA (50주기) 가 장기 SMA (200주기) 보다 높을 때 상승 추세를 확인한다. 반대로 하향 추세를 확인한다.
입학 조건:
위험 관리:
다중 인증 메커니즘이 전략은 가격 구조 (IFVG), 트렌드 방향 (SMA) 및 동적 위험 관리 (ATR) 을 결합하여 여러 층의 필터링 시스템을 형성하여 가짜 신호를 현저하게 감소시킵니다.
시장 구조의 원동력: FVG와 IFVG를 식별함으로써, 전략은 시장의 미시 구조의 변화를 포착할 수 있습니다. 이러한 변화는 종종 단기 구매 및 판매 힘의 불균형과 가능한 방향성 기회를 나타냅니다.
동향 일관성: SMA 교차를 통해 전체적인 트렌드 방향을 확인하고, 전략은 트렌드 방향으로만 거래하며, 역전 거래의 높은 위험을 피한다.
동적 위험 관리이 전략은 고정된 중지 및 중지 수준을 설정하는 것뿐만 아니라 ATR 기반의 동적 추적 중지도 구현하고 시장의 변동성에 따라 보호 수준을 조정할 수 있습니다.
이윤 보호 장치: 거래가 예상 수익의 절반을 달성했을 때, 스톱 로즈는 자동으로 보증 위치 위에 이동하여 거래가 수익에서 손실로 변하지 않도록합니다.
시간 프레임의 유연성: 회전이 1분 주기로 이루어졌음에도 불구하고, 전략의 핵심 논리 (FVG, 트렌드 확인 및 동적 중단) 은 여러 시간 프레임에 적용됩니다.
FVG 신뢰성 문제: 높은 변동성 시장에서 FVG는 자주 나타날 수 있지만 거래 가치가 없을 수 있으며 과도한 거래로 이어질 수 있습니다. 해결책은 FVG가 최소 폭이 있거나 중요한 가격 수준 근처에서 형성되도록 요구하는 것과 같은 추가 필터링 조건을 추가하는 것입니다.
트렌드는 한계를 정의합니다.: 트렌드를 정의하기 위해 두 개의 SMA만 사용하는 것은 흔들리는 시장에서 잘못된 신호를 일으킬 수 있습니다. 해결책은 트렌드 강도를 측정하기 위해 ADX (평균 방향 지수) 와 같은 추가적인 트렌드 확인 지표를 추가하는 것입니다.
너무 좁은 위험: 0.5%의 고정 스톱은 일부 높은 변동 품종에서 너무 좁아 시장 소음으로 촉발 될 수 있습니다. 해결책은 스톱 설정을 ATR에 연결하여 다른 품종의 변동 특성에 맞게하는 것입니다.
탈퇴 관리 부족: 시장이 급격히 역전될 때, 추적 스톱 로즈는 신속하게 대응할 수 없으며, 이에 따라 회수 확대된다. 해결책은 최대 수용 가능한 회수 임계값을 설정하고, 한 번 넘으면 즉시 퇴출한다.
매개변수 민감도: 전략 성능은 SMA 주기, 손해 비율, ATR 곱 등과 같은 매개 변수에 매우 민감하다. 해결책은 재검토 최적화를 통해 안정적인 매개 변수 조합을 찾아 주기적으로 재평가하는 것이다.
다중 시간 프레임 분석 통합: 더 높은 시간 프레임의 FVG와 트렌드 정보를 의사 결정 과정에 포함시키는 것은 신호 품질을 향상시킬 수 있습니다. 예를 들어, 1 분 차트의 신호가 15 분 또는 1 시간 차트의 FVG와 트렌드 방향과 일치하도록 요구할 수 있습니다.
동적 차단 장치: 현재 전략은 고정 비율을 사용 하 여 ATR 기반의 동적 중지 또는 시장의 변동성에 결합 된 자동 조정 중지 목표를 개선 할 수 있습니다.
시장의 역전과 적응성: 시장 환경을 식별하는 논리를 추가하고, 명확한 트렌드 기간 동안 현재 전략을 사용하며, 회수 기간 동안 다른 입출국 기준을 사용합니다.
거래량 확인: 거래량 분석을 통합하여 FVG와 IFVG의 유효성을 검증한다. 진정한 의미의 가격 격차는 종종 거래량 변화와 함께 발생합니다.
기계 학습 최적화: 기계 학습 알고리즘을 사용하여 가장 예측 가능한 FVG 특징 조합을 식별합니다. 예를 들어, 틈의 크기, 형성 속도, 지원/저항과의 관계 등.
적응 변수 조정: 전략이 최근 시장의 성과에 따라 자동으로 매개 변수를 조정할 수 있는 메커니즘을 개발하는 것, 예를 들어 변동성이 증가할 때 스톱 레인지를 확장하는 것.
포지션 관리: 현재 전략은 고정 포지션을 사용한다 ((10 단위), 변동성과 위험 측정에 기반한 동적 포지션 관리 시스템으로 개선할 수 있다. 높은 확신도 신호에 포지션을 증가시키고, 불확실성이 높은 시장에 노출을 줄인다.
트렌드 확인형 반전 공정 가치 격차 전략과 동적 추적 중지 손실은 가격 구조 분석 (FVG 및 IFVG), 트렌드 확인 (SMA) 및 동적 위험 관리 (ATR 추적 중지 손실) 을 유기적으로 결합하는 다층 거래 시스템입니다. 이 전략의 주요 장점은 여러 확인 메커니즘과 자율적 인 위험 관리로, 낮은 품질의 신호를 효과적으로 필터링하고 달성 된 이익을 보호합니다.
그러나, 이 전략은 또한 FVG 신뢰성, 트렌드 정의 한계, 그리고 파라미터 감수성 등의 도전에 직면한다. 미래 최적화 방향은 다중 시간 프레임 분석을 통합, 동적 정지 메커니즘을 개발, 다양한 시장 환경에서 적응력을 향상시키고, 신호 품질과 파라미터 선택을 최적화하기 위해 기계 학습 기술을 도입하는 것을 포함한다.
이러한 개선을 통해 전략은 다양한 시장 조건에서 일관된 성능을 유지할 수 있는 보다 안정적이고 적응 가능한 거래 시스템으로 발전할 잠재력을 가지고 있다. 특히 시장 구조와 변동성에 대한 대응력을 강화함으로써 전략은 변화하는 시장 환경에 더 잘 적응할 수 있고 장기적인 수익성과 자본 성장의 안정성을 향상시킬 수 있다.
/*backtest
start: 2025-05-31 00:00:00
end: 2025-06-30 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
args: [["RunMode",1,358374]]
*/
//@version=6
strategy("Inverted FVG Strategy with Trend Check and Trailing Stops", default_qty_value = 10, overlay=true)
// Function to detect FVG
fvgDetected(src, high, low) =>
float prevHigh = na
float prevLow = na
float prevClose = na
float fvgHigh = na
float fvgLow = na
bool fvg = false
if (not na(src[3]))
prevHigh := high[3]
prevLow := low[3]
prevClose := src[3]
if (src[2] > prevClose and low[2] > prevHigh) or (src[2] < prevClose and high[2] < prevLow)
fvg := true
fvgHigh := low[2] > prevHigh ? high[2] : na
fvgLow := high[2] < prevLow ? low[2] : na
[fvg, fvgHigh, fvgLow]
// Detect FVG on the chart
[fvg, fvgHigh, fvgLow] = fvgDetected(close, high, low)
// Detect IFVG - Inversion of FVG
bool ifvg = false
float ifvgHigh = na
float ifvgLow = na
if (fvg)
if (high[1] > fvgHigh and close[1] > open[1]) or (high[1] < fvgLow and close[1] < open[1])
ifvg := true
ifvgHigh := close[1] > open[1] ? high[1] : na
ifvgLow := close[1] < open[1] ? low[1] : na
// Plot FVG and IFVG zones for visualization
plot(ifvgHigh, title="IFVG High", color=color.red, linewidth=2, style=plot.style_cross)
plot(ifvgLow, title="IFVG Low", color=color.red, linewidth=2, style=plot.style_cross)
// Trend Check using Simple Moving Averages
smaShort = ta.sma(close, 50) // Short term SMA
smaLong = ta.sma(close, 200) // Long term SMA
bool uptrend = false
bool downtrend = false
uptrend := smaShort > smaLong // Up trend if short SMA is above long SMA
downtrend := smaShort < smaLong // Down trend if short SMA is below long SMA
// Plot SMAs for visualization
plot(smaShort, title="SMA Short", color=color.blue, linewidth=1)
plot(smaLong, title="SMA Long", color=color.orange, linewidth=1)
// Trading logic with trend confirmation
longCondition = ifvg and close < ifvgLow and uptrend
shortCondition = ifvg and close > ifvgHigh and downtrend
// Risk Definition - 使用百分比
stopLoss = 0.005 // 0.5% 止损
takeProfit = 0.015 // 1.5% 止盈
if (longCondition and strategy.position_size == 0)
strategy.entry("Long", strategy.long)
stopPrice = close * (1 - stopLoss)
limitPrice = close * (1 + takeProfit)
strategy.exit("Initial Long Exit", "Long", stop=stopPrice, limit=limitPrice)
if (shortCondition and strategy.position_size == 0)
strategy.entry("Short", strategy.short)
stopPrice = close * (1 + stopLoss)
limitPrice = close * (1 - takeProfit)
strategy.exit("Initial Short Exit", "Short", stop=stopPrice, limit=limitPrice)
// ATR for dynamic trailing stop
atr = ta.atr(14)
// Trailing Stop for Long Position if the trade has moved > 0.5% (half of takeProfit)
if (strategy.position_size > 0)
profitThreshold = takeProfit * 0.5 // 1.5% profit threshold
if (close - strategy.position_avg_price >= strategy.position_avg_price * profitThreshold)
// 将止损移动到盈亏平衡点加上一点利润
trailingStopLong = math.max(strategy.position_avg_price * (1 + profitThreshold), close - (atr * 2))
strategy.exit("Trailing Stop Long", "Long", stop=trailingStopLong)
// Trailing Stop for Short Position if the trade has moved > 0.5% (half of takeProfit)
if (strategy.position_size < 0)
profitThreshold = takeProfit * 0.5 // 1.5% profit threshold
if (strategy.position_avg_price - close >= strategy.position_avg_price * profitThreshold)
// 将止损移动到盈亏平衡点加上一点利润
trailingStopShort = math.min(strategy.position_avg_price * (1 - profitThreshold), close + (atr * 2))
strategy.exit("Trailing Stop Short", "Short", stop=trailingStopShort)