
本策略基于智能资金概念(SMC)理论,通过划分均衡区(Equilibrium)、溢价区(Premium)和折价区(Discount)三个关键价格区域,结合50周期简单移动平均线(SMA)和订单块(Order Blocks)分析,构建了一个完整的趋势跟踪交易系统。策略通过识别市场结构中的关键支撑位和阻力位,在不同区域之间的价格波动中捕捉交易机会。
策略的核心逻辑包含以下几个关键要素: 1. 通过计算最近8根K线的波动高点和低点,确定市场的波动范围。 2. 以波动高低点的中间值作为均衡区,高于均衡区定义为溢价区,低于均衡区定义为折价区。 3. 使用50周期SMA判断整体趋势方向,价格在SMA之上视为多头趋势,反之为空头趋势。 4. 在折价区且价格站上SMA时产生买入信号,在溢价区且价格跌破SMA时产生卖出信号。 5. 通过分析20根K线内的最高价和最低价来识别订单块,用于确认交易信号。 6. 标记波动高低点作为流动性区域,预测可能的价格反转点。
该策略通过智能化的区域划分和多重信号确认机制,构建了一个稳健的趋势跟踪系统。策略的核心优势在于其清晰的市场结构分析方法和完善的风险管理体系。通过持续优化和改进,策略有望在不同市场环境下保持稳定的表现。建议交易者在实盘应用时,需要根据具体市场特征调整参数,并始终保持严格的风险控制。
/*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)