
Ini adalah strategi berbilang arah berdasarkan EMA sokongan dan trend. Strategi ini mencari peluang masuk yang terbaik dengan mengenal pasti trend pasaran dan sokongan utama, digabungkan dengan ATR untuk menghentikan kerugian dinamik dan keuntungan berturut-turut untuk mencapai pengurusan risiko. Strategi ini memfokuskan pada pemulihan harga ke kedudukan sokongan dalam trend menaik, meningkatkan kadar kejayaan perdagangan dengan menetapkan nisbah pulangan risiko yang munasabah.
Strategi menggunakan 100 kitaran EMA sebagai penunjuk trend, mengukuhkan trend naik apabila harga berada di atas EMA. Di samping itu, mengira harga terendah 10 kitaran sebagai sokongan jangka pendek, apabila harga kembali ke sekitar sokongan ((support +0.5*ATR) mencari peluang masuk. Menggunakan kaedah keuntungan berpecah selepas masuk, 50% kedudukan ditutup dengan ATR 5 kali ganda, kedudukan yang tersisa ditutup sepenuhnya dengan ATR 10 kali ganda, sambil menetapkan ATR 1 kali ganda sebagai hentian dinamik. Risiko setiap perdagangan dikawal dalam 3% daripada jumlah akaun, untuk mencapai pengurusan risiko dengan mengira saiz kedudukan secara dinamik.
Strategi ini mewujudkan sistem perdagangan yang lengkap dengan menggabungkan trend mengikuti dan penyesuaian kedudukan sokongan, dan pengurusan risiko dengan keuntungan dan kerugian berhenti secara dinamik. Kelebihan utama strategi ini adalah mekanisme kawalan risiko yang baik dan logik perdagangan yang jelas, tetapi masih perlu terus mengoptimumkan parameter dan syarat masuk dalam amalan untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
/*backtest
start: 2024-02-22 00:00:00
end: 2024-05-30 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Ultra-Profitable SMC Long-Only Strategy", shorttitle="Ultra_Profit_SMC", overlay=true)
// User Inputs
emaTrendLength = input.int(100, title="Trend EMA Length") // Faster EMA to align with aggressive trends
supportLookback = input.int(10, title="Support Lookback Period") // Short-term support zones
atrLength = input.int(14, title="ATR Length")
atrMultiplierSL = input.float(1.0, title="ATR Multiplier for Stop-Loss")
atrMultiplierTP1 = input.float(5.0, title="ATR Multiplier for TP1")
atrMultiplierTP2 = input.float(10.0, title="ATR Multiplier for TP2")
riskPercent = input.float(3.0, title="Risk per Trade (%)", step=0.1)
// Calculate Indicators
emaTrend = ta.ema(close, emaTrendLength) // Trend EMA
supportLevel = ta.lowest(low, supportLookback) // Support Level
atr = ta.atr(atrLength) // ATR
// Entry Conditions
isTrendingUp = close > emaTrend // Price above Trend EMA
nearSupport = close <= supportLevel + (atr * 0.5) // Price near support zone
longCondition = isTrendingUp and nearSupport
// Dynamic Stop-Loss and Take-Profit Levels
longStopLoss = supportLevel - (atr * atrMultiplierSL)
takeProfit1 = close + (atr * atrMultiplierTP1) // Partial Take-Profit at 5x ATR
takeProfit2 = close + (atr * atrMultiplierTP2) // Full Take-Profit at 10x ATR
// Position Sizing
capital = strategy.equity
tradeRisk = riskPercent / 100 * capital
positionSize = tradeRisk / (close - longStopLoss)
// Execute Long Trades
if (longCondition)
strategy.entry("Ultra Long", strategy.long, qty=positionSize)
// Exit Conditions
strategy.exit("Partial Exit", from_entry="Ultra Long", limit=takeProfit1, qty_percent=50) // Exit 50% at TP1
strategy.exit("Full Exit", from_entry="Ultra Long", limit=takeProfit2, qty_percent=100, stop=longStopLoss) // Exit the rest at TP2
// Plot Indicators
plot(emaTrend, color=color.blue, title="Trend EMA")
plot(supportLevel, color=color.green, title="Support Level", linewidth=2)