
Strategi ini ialah strategi perdagangan frekuensi tinggi berdasarkan jangka masa 15 minit. Strategi ini menggabungkan berbilang penunjuk teknikal, termasuk purata bergerak eksponen (EMA), indeks kekuatan relatif (RSI), indeks arah purata (ADX) dan julat sebenar purata (ATR), untuk mencapai isyarat dagangan melalui sinergi penunjuk ini dan pengurusan risiko yang dinamik. Strategi ini menggunakan reka bentuk visual yang jelas, yang memudahkan peniaga memantau keadaan pasaran dan isyarat dagangan dalam masa nyata.
Logik teras strategi adalah untuk menjana isyarat dagangan berdasarkan persilangan EMA pantas (9 tempoh) dan EMA perlahan (21 tempoh). RSI (tempoh 14) digunakan untuk menapis kawasan terlebih jual, ADX (tempoh 14) digunakan untuk mengesahkan kekuatan aliran, dan ATR (tempoh 14) digunakan untuk menetapkan sasaran henti rugi dan keuntungan secara dinamik. Gabungan pelbagai penunjuk teknikal memastikan kebolehpercayaan isyarat dagangan. Syarat kemasukan termasuk: panjang – EMA pantas melintasi di atas EMA perlahan dan RSI di bawah 70, dan ADX di atas 20 – EMA cepat melintasi di bawah EMA perlahan dan RSI di atas 30, dan ADX di atas; 20. Keluar menggunakan tetapan henti rugi dinamik dan sasaran keuntungan berdasarkan ATR.
Strategi ini mencapai keseimbangan antara penangkapan isyarat dan kawalan risiko dalam perdagangan frekuensi tinggi melalui sinergi pelbagai penunjuk teknikal. Reka bentuk visual yang jelas dan sokongan automasi yang lengkap menjadikannya lebih praktikal. Melalui pengoptimuman berterusan dan penambahbaikan pengurusan risiko, strategi ini dijangka dapat mengekalkan prestasi yang stabil dalam persekitaran pasaran yang berbeza. Walaupun terdapat risiko tertentu, risiko ini boleh dikawal melalui tetapan parameter yang munasabah dan langkah kawalan risiko. Kejayaan operasi strategi memerlukan pedagang untuk mempunyai pemahaman yang mendalam tentang pasaran dan mengekalkan fokus yang berterusan pada risiko.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Scalping BTC Ottimizzato - Grafica Chiara", shorttitle="Scalp BTC Opt", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === 📊 INPUTS ===
// 📈 Medie Mobili
emaFastLength = input.int(9, title="EMA Veloce", minval=1)
emaSlowLength = input.int(21, title="EMA Lenta", minval=1)
// 💡 RSI
rsiLength = input.int(14, title="RSI Length", minval=1)
rsiOverbought = input.int(70, title="RSI Overbought")
rsiOversold = input.int(30, title="RSI Oversold")
// 📊 ATR (Stop Loss e Take Profit)
atrLength = input.int(14, title="ATR Length", minval=1)
stopATR = input.float(1.5, title="Stop Loss (ATR Multiplo)", step=0.1)
takeProfitATR = input.float(2.0, title="Take Profit (ATR Multiplo)", step=0.1)
// 🔀 ADX
adxLength = input.int(14, title="ADX Length", minval=1)
adxSmoothing = input.int(14, title="ADX Smoothing", minval=1)
adxThreshold = input.int(20, title="Soglia ADX per Trend Forte", minval=1)
// === 📊 CALCOLI PRINCIPALI ===
// 📈 Medie Mobili
emaFast = ta.ema(close, emaFastLength)
emaSlow = ta.ema(close, emaSlowLength)
// 💡 RSI
rsi = ta.rsi(close, rsiLength)
// 📊 ATR
atr = ta.atr(atrLength)
// 🔀 ADX tramite DMI con Smoothing
[adx, diPlus, diMinus] = ta.dmi(adxLength, adxSmoothing)
// === 📊 CONDIZIONI LONG E SHORT ===
// ✅ Long: EMA Veloce incrocia EMA Lenta al rialzo, RSI sotto 70, ADX > 20
longCondition = (ta.crossover(emaFast, emaSlow)) and (rsi < rsiOverbought) and (adx > adxThreshold)
// 🔻 Short: EMA Veloce incrocia EMA Lenta al ribasso, RSI sopra 30, ADX > 20
shortCondition = (ta.crossunder(emaFast, emaSlow)) and (rsi > rsiOversold) and (adx > adxThreshold)
// 📉 Stop Loss e Take Profit Dinamici
longStop = strategy.position_avg_price - (atr * stopATR)
longTarget = strategy.position_avg_price + (atr * takeProfitATR)
shortStop = strategy.position_avg_price + (atr * stopATR)
shortTarget = strategy.position_avg_price - (atr * takeProfitATR)
// === 🚀 INGRESSO E USCITA ===
// 🚦 Ingresso LONG
if (longCondition and strategy.position_size == 0)
strategy.entry("Long", strategy.long)
strategy.exit("TakeProfit/StopLoss Long", stop=longStop, limit=longTarget)
// 🚦 Ingresso SHORT
if (shortCondition and strategy.position_size == 0)
strategy.entry("Short", strategy.short)
strategy.exit("TakeProfit/StopLoss Short", stop=shortStop, limit=shortTarget)
// 🛑 USCITA MANUALE BASATA SU RSI
if (rsi > rsiOverbought and strategy.position_size > 0)
strategy.close("Long", comment="RSI Overbought Exit")
if (rsi < rsiOversold and strategy.position_size < 0)
strategy.close("Short", comment="RSI Oversold Exit")
// === 📊 VISUALIZZAZIONE GRAFICA OTTIMIZZATA ===
// 📈 MEDIE MOBILI ANCORATE ALLE CANDELE
plot(emaFast, title="EMA Veloce", color=color.blue, linewidth=2)
plot(emaSlow, title="EMA Lenta", color=color.red, linewidth=2)
// 📊 SEGNALI VISIVI ANCORATI ALLE CANDELE
plotshape(longCondition, title="Segnale Long", style=shape.triangleup, location=location.belowbar, color=color.green, text="Long", size=size.small)
plotshape(shortCondition, title="Segnale Short", style=shape.triangledown, location=location.abovebar, color=color.red, text="Short", size=size.small)
// 📊 RSI (Pannello Separato)
var float rsiPanel = na
rsiPanel := rsi
plot(rsiPanel, title="RSI", color=color.orange, linewidth=2)
hline(rsiOverbought, "RSI Overbought", color=color.red, linestyle=hline.style_dotted)
hline(rsiOversold, "RSI Oversold", color=color.green, linestyle=hline.style_dotted)
// 📊 ADX (Pannello Separato)
var float adxPanel = na
adxPanel := adx
plot(adxPanel, title="ADX", color=color.blue, linewidth=2)
hline(adxThreshold, "ADX Soglia", color=color.gray, linestyle=hline.style_dotted)
// 📊 ATR (Pannello Separato)
var float atrPanel = na
atrPanel := atr
plot(atrPanel, title="ATR", color=color.purple, linewidth=2)
// 🔔 ALERT
alertcondition(longCondition, title="Segnale Long", message="Entra Long Manualmente!")
alertcondition(shortCondition, title="Segnale Short", message="Entra Short Manualmente!")