
This strategy is a comprehensive trading system that combines Fair Value Gap (FVG) detection, moving average trend determination, and dynamic resistance levels. The strategy identifies FVG formation across different timeframes, integrates moving average trend direction, and executes trades upon reversal signals. The system also includes dynamic stop-loss and profit targets based on historical highs.
The core logic includes the following key components: 1. FVG Detection: Identifies bullish and bearish fair value gaps within specified timeframes (default 1 hour) 2. Trend Determination: Uses 20-period moving average to assess market trend direction 3. Reversal Confirmation: Evaluates market reversal signals through candlestick patterns 4. Dynamic Resistance: Utilizes recent highs as resistance levels and profit targets 5. Risk Management: Implements percentage-based stop-loss protection
This is a comprehensive strategy that integrates multiple trading concepts, seeking high-probability trading opportunities through the combination of FVG, trends, and price patterns. The strategy’s strengths lie in its systematic approach and risk control, but attention must be paid to parameter optimization and market environment adaptability. Through the suggested optimization directions, there is room for further strategy improvement.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SMC FVG Entry Strategy with Retest", overlay=true)
// Parametreler
stopLossPercent = input(2, title="Stop Loss (%)") / 100
lookbackPeriod = input(50, title="Güçlü Direnç İçin Geriye Dönük Süre")
fvgLength = input.timeframe("60", title="FVG Zaman Dilimi") // 1 saatlik zaman dilimi
maPeriod = input(20, title="MA Dönemi") // Trend yönü için MA dönemi
// FVG'leri Hesapla
var float fvgLow = na
var float fvgHigh = na
var bool fvgFilled = false
// Seçilen zaman diliminde FVG'leri kontrol et
if (ta.change(time(fvgLength)))
bull_fvg = low > high[2] and close[1] > high[2]
bear_fvg = high < low[2] and close[1] < low[2]
if (bull_fvg)
fvgLow := low[2]
fvgHigh := high
fvgFilled := true
else if (bear_fvg)
fvgLow := low
fvgHigh := high[2]
fvgFilled := true
// Trend Yönü Kontrolü (MA kullanarak)
ma = ta.sma(close, maPeriod)
trendUp = close > ma
trendDown = close < ma
// Dönüş Mumu Kontrolü
bullishReversal = close > open and close[1] < open[1] and fvgFilled and close > fvgHigh
bearishReversal = close < open and close[1] > open[1] and fvgFilled and close < fvgLow
// İlk güçlü direnç noktası
resistanceLevel = ta.highest(high, lookbackPeriod)
// Giriş Koşulları
if (bullishReversal and trendUp)
entryPrice = close
stopLoss = entryPrice * (1 - stopLossPercent)
takeProfit = resistanceLevel
strategy.entry("Long", strategy.long)
strategy.exit("TP", "Long", limit=takeProfit, stop=stopLoss)
if (bearishReversal and trendDown)
entryPrice = close
stopLoss = entryPrice * (1 + stopLossPercent)
takeProfit = resistanceLevel
strategy.entry("Short", strategy.short)
strategy.exit("TP", "Short", limit=takeProfit, stop=stopLoss)
// FVG'leri Grafik Üzerinde Göster
// if (fvgFilled)
// var box fvgBox = na
// if (na(fvgBox))
// fvgBox := box.new(left=bar_index[1], top=fvgHigh, bottom=fvgLow, right=bar_index, bgcolor=color.new(color.green, 90), border_color=color.green)
// else
// box.set_top(fvgBox, fvgHigh)
// box.set_bottom(fvgBox, fvgLow)
// box.set_left(fvgBox, bar_index[1])
// box.set_right(fvgBox, bar_index)
// Direnç Noktasını Göster
plot(resistanceLevel, color=color.blue, title="Direnç Noktası", linewidth=2)
plot(ma, color=color.red, title="Hareketli Ortalama", linewidth=2)