
Strategi ini adalah metode perdagangan kuantitatif inovatif yang berfokus pada menangkap sinyal perdagangan yang tepat dan manajemen risiko dengan menggabungkan supertrend, indeks moving average, EMA, dan indeks relatif kuat, RSI. Strategi ini bertujuan untuk memberikan pedagang mekanisme pelacakan tren pasar yang dinamis dan multidimensi yang dapat diterapkan secara fleksibel pada grafik 1 menit, 5 menit, dan 15 menit.
Prinsip-prinsip inti dari strategi ini didasarkan pada sinergi tiga indikator teknis utama:
Strategi ini menghasilkan sinyal perdagangan melalui analisis gabungan dari tiga indikator:
Ini adalah strategi perdagangan kuantitatif yang menggabungkan analisis teknis multi-dimensi, yang memberikan trader sebuah kerangka keputusan perdagangan yang dinamis dan fleksibel melalui sinergi supertrend, EMA dan RSI. Keunggulan inti dari strategi ini adalah verifikasi sinyal ganda dan mekanisme manajemen risiko yang adaptif, tetapi juga membutuhkan pengoptimalan dan penyesuaian yang berkelanjutan oleh pedagang.
/*backtest
start: 2025-03-24 00:00:00
end: 2025-03-27 00:00:00
period: 3m
basePeriod: 3m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("SOL Scalper - Supertrend + EMA + RSI (One Position at a Time)", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.075)
// Inputs
atrLength = input.int(7, title="ATR Length", minval=1)
atrMultiplier = input.float(0.8, title="ATR Multiplier", minval=0.1)
emaLength = input.int(9, title="EMA Length", minval=1)
rsiLength = input.int(14, title="RSI Length", minval=1)
slPercent = input.float(1, title="Stop Loss (%)", minval=0.1, step=0.1) / 100
tpMultiplier = input.float(3.0, title="Take Profit Multiplier", minval=1.0)
// Supertrend Calculation
atr = ta.atr(atrLength)
[supertrend, direction] = ta.supertrend(atrMultiplier, atrLength)
plot(supertrend, color=direction == 1 ? color.green : color.red, linewidth=2, title="Supertrend")
// EMA Calculation
ema = ta.ema(close, emaLength)
plot(ema, color=color.blue, title="EMA")
// RSI Calculation
rsi = ta.rsi(close, rsiLength)
rsiOverbought = 60 // Adjusted to allow more trades
rsiOversold = 40 // Adjusted to allow more trades
// Entry Conditions
longCondition = direction == 1 and close > ema and rsi > rsiOversold
shortCondition = direction == -1 and close < ema and rsi < rsiOverbought
// Risk Management
stopLoss = close * slPercent
takeProfit = atr * tpMultiplier
// Ensure Only One Position at a Time
var bool inPosition = false
// Execute Trades
if (not inPosition) // Only enter a new trade if no position is open
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", "Long", stop=close - stopLoss, limit=close + takeProfit)
inPosition := true // Set inPosition to true when a trade is opened
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", "Short", stop=close + stopLoss, limit=close - takeProfit)
inPosition := true // Set inPosition to true when a trade is opened
// Reset inPosition when the trade is closed
if (strategy.position_size == 0)
inPosition := false
// Visuals
plotshape(series=longCondition and not inPosition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition and not inPosition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Debugging
bgcolor(longCondition and not inPosition ? color.new(color.green, 90) : na, title="Long Condition")
bgcolor(shortCondition and not inPosition ? color.new(color.red, 90) : na, title="Short Condition")
// Key Metrics Table
var table keyMetrics = table.new(position.top_right, 2, 4, border_width=1)
if barstate.islast
table.cell(keyMetrics, 0, 0, "ATR", bgcolor=color.gray)
table.cell(keyMetrics, 1, 0, str.tostring(atr, "#.#####"), bgcolor=color.gray)
table.cell(keyMetrics, 0, 1, "RSI", bgcolor=color.gray)
table.cell(keyMetrics, 1, 1, str.tostring(rsi, "#.##"), bgcolor=color.gray)
table.cell(keyMetrics, 0, 2, "Trend", bgcolor=color.gray)
table.cell(keyMetrics, 1, 2, direction == 1 ? "Bullish" : "Bearish", bgcolor=color.gray)
table.cell(keyMetrics, 0, 3, "TP Distance", bgcolor=color.gray)
table.cell(keyMetrics, 1, 3, str.tostring(takeProfit, "#.#####"), bgcolor=color.gray)