
Cette stratégie est basée sur la théorie des fonds intelligents (SMC) et construit un système de trading complet de suivi des tendances en divisant les trois zones de prix clés (zone d’équilibre, zone de prime et zone de remise), combinée à l’analyse des moyennes mobiles simples à 50 cycles (SMA) et des blocs d’ordre. La stratégie capture les opportunités de trading dans les fluctuations de prix entre les différentes zones en identifiant les points clés de soutien et de résistance dans la structure du marché.
La logique fondamentale de la stratégie comprend les éléments clés suivants :
La stratégie a construit un système robuste de suivi des tendances grâce à une répartition géographique intelligente et à un mécanisme de reconnaissance de signaux multiples. Les principaux avantages de la stratégie résident dans sa méthode d’analyse de la structure du marché claire et son système de gestion des risques parfait. Grâce à une optimisation et à une amélioration continues, la stratégie devrait maintenir une performance stable dans différents environnements de marché.
/*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)