
Strategi ini adalah sistem perdagangan pintar berdasarkan trend dan perdagangan dinamik, yang dirancang terutamanya untuk garis pendek dan senario perdagangan cepat. Inti strategi menggunakan sistem penilaian gabungan indeks moving average (EMA), crossover, indikator relatif kuat (RSI) dan purata gelombang sebenar (ATR), dan dilengkapi dengan mekanisme berhenti pintar berdasarkan peratusan. Strategi ini sangat sesuai untuk perdagangan carta dengan tempoh yang lebih pendek seperti 1 minit dan 5 minit, menyesuaikan parameter secara dinamik untuk menyesuaikan diri dengan persekitaran pasaran yang berbeza.
Strategi ini menggunakan tiga petanda teknologi teras untuk membina sistem isyarat dagangan:
Logik perdagangan direka dengan jelas dan jelas: kemasukan multihead memerlukan garis cepat untuk melintasi garis perlahan, RSI di bawah 70 dan harga memecahkan pengganda ATR; kemasukan kosong memerlukan garis cepat untuk melintasi garis perlahan, RSI di atas 30 dan harga jatuh di bawah pengganda ATR. Sistem ini dilengkapi dengan kedudukan hentian dinamik 1%, mengawal risiko dengan berkesan.
Untuk mengurangkan risiko, disarankan:
Strategi ini membina satu sistem perdagangan yang lengkap melalui kerja sama pelbagai petunjuk teknikal. Sistem ini memastikan keselamatan perdagangan melalui kawalan risiko yang ketat sambil mengekalkan fleksibiliti. Walaupun terdapat beberapa batasan, strategi ini mempunyai nilai aplikasi yang baik dan potensi pembangunan melalui pengoptimuman dan penyempurnaan berterusan.
/*backtest
start: 2025-02-17 10:00:00
end: 2025-02-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © DBate
//@version=6
strategy("Enhanced Scalping Strategy with Stop Loss", overlay=true)
// Input parameters
fastMA_length = input.int(9, title="Fast MA Length", minval=1)
slowMA_length = input.int(21, title="Slow MA Length", minval=1)
RSI_length = input.int(14, title="RSI Length", minval=1)
RSI_overbought = input.int(70, title="RSI Overbought")
RSI_oversold = input.int(30, title="RSI Oversold")
ATR_multiplier = input.float(1.5, title="ATR Multiplier")
ATR_length = input.int(14, title="ATR Length", minval=1)
stopLossPercent = input.float(1.0, title="Stop Loss %", minval=0.1) / 100 // Convert percentage to decimal
// Timeframe-specific adjustments
is1m = timeframe.period == "1"
is5m = timeframe.period == "5"
// Adjust input parameters based on timeframe
fastMA_length := is1m ? 9 : is5m ? 12 : fastMA_length
slowMA_length := is1m ? 21 : is5m ? 26 : slowMA_length
RSI_length := is1m ? 14 : is5m ? 14 : RSI_length
// Moving Averages
fastMA = ta.ema(close, fastMA_length)
slowMA = ta.ema(close, slowMA_length)
// RSI Calculation
rsi = ta.rsi(close, RSI_length)
// ATR Calculation for volatility filter
atr = ta.atr(ATR_length)
// Trade state variables
var bool inLongTrade = false
var bool inShortTrade = false
var float entryPrice = na
var float stopLossLevel = na
// Long and Short Conditions with added filters
longCondition = ta.crossover(fastMA, slowMA) and rsi < RSI_overbought and close > fastMA + ATR_multiplier * atr
shortCondition = ta.crossunder(fastMA, slowMA) and rsi > RSI_oversold and close < fastMA - ATR_multiplier * atr
// Ensure previous trades are closed before entering new ones
if (longCondition)
strategy.close("Short")
strategy.entry("Long", strategy.long)
entryPrice := close
stopLossLevel := close * (1 - stopLossPercent) // 1% below entry for long trades
inLongTrade := true
inShortTrade := false
if (shortCondition)
strategy.close("Long")
strategy.entry("Short", strategy.short)
entryPrice := close
stopLossLevel := close * (1 + stopLossPercent) // 1% above entry for short trades
inShortTrade := true
inLongTrade := false
// Stop Loss Exits
stopLossLongCondition = inLongTrade and close <= stopLossLevel
stopLossShortCondition = inShortTrade and close >= stopLossLevel
// Exit Conditions (Moving Average crossover or Stop Loss)
exitLongCondition = inLongTrade and (ta.crossunder(fastMA, slowMA) or stopLossLongCondition)
exitShortCondition = inShortTrade and (ta.crossover(fastMA, slowMA) or stopLossShortCondition)
// Reset trade state on exit
if (exitLongCondition)
strategy.close("Long")
inLongTrade := false
inShortTrade := false
if (exitShortCondition)
strategy.close("Short")
inShortTrade := false
inLongTrade := false
// Plot buy and sell signals
plotshape(longCondition, title="Long Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="LONG")
plotshape(shortCondition, title="Short Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SHORT")
// Plot moving averages
plot(fastMA, title="Fast MA", color=color.blue, linewidth=2)
plot(slowMA, title="Slow MA", color=color.orange, linewidth=2)
// Background color for overbought/oversold RSI
bgcolor(rsi > RSI_overbought ? color.new(color.red, 90) : na, title="Overbought Background")
bgcolor(rsi < RSI_oversold ? color.new(color.green, 90) : na, title="Oversold Background")
// Alerts
alertcondition(longCondition, title="Long Alert", message="Buy Signal")
alertcondition(shortCondition, title="Short Alert", message="Sell Signal")
alertcondition(exitLongCondition, title="Exit Long Alert", message="Exit Long Signal")
alertcondition(exitShortCondition, title="Exit Short Alert", message="Exit Short Signal")