This strategy, based on Smart Money Concepts (SMC) theory, constructs a comprehensive trend following trading system by dividing the market into three key price zones: Equilibrium, Premium, and Discount. It combines a 50-period Simple Moving Average (SMA) with Order Block analysis to identify trading opportunities through price movements between different zones.
The core logic includes several key elements:
This strategy builds a robust trend following system through intelligent zone division and multiple signal confirmation mechanisms. Its core strengths lie in clear market structure analysis and comprehensive risk management. Through continuous optimization and improvement, the strategy shows promise for stable performance across different market conditions. Traders are advised to adjust parameters based on specific market characteristics and maintain strict risk control when implementing the strategy in live trading.
/*backtest start: 2024-11-21 00:00:00 end: 2024-11-28 00:00:00 period: 5m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //@version=5 strategy("SMC Strategy with Premium, Equilibrium, and Discount Zones", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10) // === Instellingen voor Swing High en Swing Low === swingHighLength = input.int(8, title="Swing High Length") swingLowLength = input.int(8, title="Swing Low Length") // Vind de recente swing highs en lows var float swingHigh = na var float swingLow = na if (ta.highestbars(high, swingHighLength) == 0) swingHigh := high if (ta.lowestbars(low, swingLowLength) == 0) swingLow := low // Bereken Equilibrium, Premium en Discount Zones equilibrium = (swingHigh + swingLow) / 2 premiumZone = swingHigh discountZone = swingLow // Plot de zones op de grafiek plot(equilibrium, title="Equilibrium", color=color.blue, linewidth=2) plot(premiumZone, title="Premium Zone (Resistance)", color=color.red, linewidth=1) plot(discountZone, title="Discount Zone (Support)", color=color.green, linewidth=1) // === Simple Moving Average om trendrichting te bepalen === smaLength = input.int(50, title="SMA Length") sma = ta.sma(close, smaLength) plot(sma, title="SMA", color=color.orange) // === Entry- en Exitregels op basis van zones en trendrichting === // Koop- en verkoopsignalen buySignal = close < equilibrium and close > discountZone and close > sma // Prijs in discount zone en boven SMA sellSignal = close > equilibrium and close < premiumZone and close < sma // Prijs in premium zone en onder SMA // Order Blocks (Eenvoudig: hoogste en laagste kaars binnen de laatste 20 kaarsen) orderBlockLength = input.int(20, title="Order Block Length") orderBlockHigh = ta.highest(high, orderBlockLength) orderBlockLow = ta.lowest(low, orderBlockLength) // Koop- en verkoopsignalen met order block bevestiging buySignalOB = buySignal and close >= orderBlockLow // Koop in discount zone met ondersteuning van order block sellSignalOB = sellSignal and close <= orderBlockHigh // Verkoop in premium zone met weerstand van order block // === Uitvoeren van Trades === if (buySignalOB) strategy.entry("Buy", strategy.long) if (sellSignalOB) strategy.entry("Sell", strategy.short) // === Plots voor visuele feedback === plotshape(buySignalOB, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(sellSignalOB, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL") // === Liquiditeitsjachten aangeven === // Simpel: markeer recente swing highs en lows als liquiditeitszones liquidityZoneHigh = ta.valuewhen(high == swingHigh, high, 0) liquidityZoneLow = ta.valuewhen(low == swingLow, low, 0) // Markeer liquiditeitszones plot(liquidityZoneHigh, title="Liquidity Zone High", color=color.red, linewidth=1, style=plot.style_cross) plot(liquidityZoneLow, title="Liquidity Zone Low", color=color.green, linewidth=1, style=plot.style_cross)