Strategi ini adalah sistem perdagangan terobosan trend berdasarkan pelbagai penapis penunjuk teknikal. Ia menggabungkan beberapa penunjuk teknikal termasuk Exponential Moving Average (EMA), Volume Weighted Average Price (VWAP), Relative Strength Index (RSI), Average Directional Index (ADX), dan lain-lain, untuk menapis pecah palsu melalui pelbagai pengesahan isyarat dan meningkatkan ketepatan perdagangan. Strategi ini juga menggabungkan penilaian trend jangka masa yang lebih tinggi dan menggunakan skim stop-loss dan mengambil keuntungan dinamik berasaskan ATR untuk kawalan risiko yang berkesan.
Logik teras strategi ini adalah berdasarkan unsur-unsur utama berikut:
Strategi ini membina sistem dagangan yang agak lengkap melalui sinergi pelbagai penunjuk teknikal. Kelebihannya utama terletak pada peningkatan ketepatan dagangan melalui pengesahan isyarat berbilang dimensi sambil menggunakan kaedah pengurusan risiko saintifik untuk melindungi keselamatan modal. Walaupun terdapat batasan tertentu, melalui pengoptimuman dan peningkatan berterusan, strategi ini mempunyai potensi untuk mencapai pulangan yang stabil dalam dagangan sebenar.
/*backtest start: 2024-11-19 00:00:00 end: 2024-12-18 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Trend-Filtered Scalping Strategy", overlay=true, shorttitle="TFSS") // Inputs emaShort = input.int(9, title="EMA Short", minval=1) emaLong = input.int(21, title="EMA Long", minval=1) rsiLength = input.int(14, title="RSI Length", minval=1) atrLength = input.int(14, title="ATR Length", minval=1) adxLength = input.int(20, title="ADX Length", minval=1) adxSmoothing = input.int(14, title="ADX Smoothing", minval=1) volMultiplier = input.float(1.5, title="Volume Spike Multiplier", minval=1.0) riskPercent = input.float(1, title="Risk % of Equity", minval=0.1, step=0.1) // Higher Time Frame for Trend Filter htfTimeframe = input.timeframe("15", title="Higher Time Frame") ema50HTF = request.security(syminfo.tickerid, htfTimeframe, ta.ema(close, 50)) // Indicators ema9 = ta.ema(close, emaShort) ema21 = ta.ema(close, emaLong) vwap = ta.vwap(close) rsi = ta.rsi(close, rsiLength) atr = ta.atr(atrLength) volAvg = ta.sma(volume, 10) // ADX Calculation with Smoothing [_, _, adx] = ta.dmi(adxLength, adxSmoothing) // Entry Conditions longCondition = (ta.crossover(ema9, ema21) and close > vwap and rsi > 55 and adx > 25 and close > ema50HTF and volume > volAvg * volMultiplier) shortCondition = (ta.crossunder(ema9, ema21) and close < vwap and rsi < 45 and adx > 25 and close < ema50HTF and volume > volAvg * volMultiplier) // Position Sizing Based on Risk % capitalPerTrade = (strategy.equity * (riskPercent / 100)) / atr longStop = close - 1.5 * atr longTarget = close + 3 * atr shortStop = close + 1.5 * atr shortTarget = close - 3 * atr // Entry Logic if longCondition and not strategy.opentrades strategy.entry("Long", strategy.long, qty=capitalPerTrade) strategy.exit("Exit Long", from_entry="Long", stop=longStop, limit=longTarget) if shortCondition and not strategy.opentrades strategy.entry("Short", strategy.short, qty=capitalPerTrade) strategy.exit("Exit Short", from_entry="Short", stop=shortStop, limit=shortTarget) // Alerts alertcondition(longCondition, title="Long Entry Alert", message="Long Condition Triggered!") alertcondition(shortCondition, title="Short Entry Alert", message="Short Condition Triggered!") // Plot Indicators plot(ema9, title="EMA 9", color=color.green) plot(ema21, title="EMA 21", color=color.red) plot(vwap, title="VWAP", color=color.blue) plot(ema50HTF, title="HTF EMA 50", color=color.purple) hline(55, "RSI Long Threshold", color=color.green) hline(45, "RSI Short Threshold", color=color.red)