
Strategi ini adalah sistem perdagangan pengesahan bertingkat yang menggabungkan persilangan rata-rata, RSI, dan ATR. Strategi ini menggunakan purata bergerak indeks 9 dan 21 kitaran sebagai asas penghakiman trend utama, sambil melakukan pengesahan dinamik dalam kombinasi dengan RSI, dan menggunakan ATR untuk menyesuaikan saiz kedudukan dan kedudukan stop loss secara dinamik. Strategi ini menyaring isyarat palsu dengan berkesan dan meningkatkan kebolehpercayaan perdagangan melalui kombinasi pelbagai petunjuk teknikal.
Logik utama strategi ini adalah berasaskan beberapa aspek:
Strategi ini membina sistem perdagangan yang mantap dengan menggabungkan tiga dimensi persilangan rata-rata, momentum RSI dan kadar turun naik ATR. Keunggulan strategi ini adalah mekanisme pengesahan bertingkat dan sistem pengurusan risiko yang dinamik, tetapi risiko yang lebih tinggi mungkin dihadapi dalam pasaran yang bergolak. Dengan penambahan penapis persekitaran pasaran dan pengoptimuman parameter penyesuaian diri, prestasi strategi ini juga meningkatkan keseluruhan ruang.
/*backtest
start: 2025-02-13 00:00:00
end: 2025-02-20 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("BTC Scalping Strategy", overlay=true, margin_long=100, margin_short=100, pyramiding=1)
// Inputs
emaFastLength = input.int(9, "Fast EMA Length")
emaSlowLength = input.int(21, "Slow EMA Length")
rsiLength = input.int(14, "RSI Length")
rsiOverbought = input.int(70, "RSI Overbought")
rsiOversold = input.int(30, "RSI Oversold")
atrLength = input.int(14, "ATR Length")
riskPercent = input.float(1, "Risk Percentage", step=0.5)
// Calculate Indicators
emaFast = ta.ema(close, emaFastLength)
emaSlow = ta.ema(close, emaSlowLength)
rsi = ta.rsi(close, rsiLength)
atr = ta.atr(atrLength)
// Entry Conditions
longCondition = ta.crossover(emaFast, emaSlow) and rsi < rsiOverbought
shortCondition = ta.crossunder(emaFast, emaSlow) and rsi > rsiOversold
// Exit Conditions
takeProfitLevelLong = close + (atr * 3)
stopLossLevelLong = close - (atr * 1.5)
takeProfitLevelShort = close - (atr * 3)
stopLossLevelShort = close + (atr * 1.5)
// Position Sizing
equity = strategy.equity
riskAmount = equity * (riskPercent / 100)
positionSizeLong = riskAmount / (close - stopLossLevelLong)
positionSizeShort = riskAmount / (stopLossLevelShort - close)
// Strategy Execution
if (longCondition)
strategy.entry("Long", strategy.long, qty=positionSizeLong)
strategy.exit("Exit Long", "Long", limit=takeProfitLevelLong, stop=stopLossLevelLong)
if (shortCondition)
strategy.entry("Short", strategy.short, qty=positionSizeShort)
strategy.exit("Exit Short", "Short", limit=takeProfitLevelShort, stop=stopLossLevelShort)
// Plotting
plot(emaFast, color=color.new(color.blue, 0), linewidth=2)
plot(emaSlow, color=color.new(color.red, 0), linewidth=2)
hline(rsiOverbought, "RSI OB", color=color.new(color.red, 50))
hline(rsiOversold, "RSI OS", color=color.new(color.green, 50))
// Alerts
alertcondition(longCondition, "Long Signal", "Potential Long Entry")
alertcondition(shortCondition, "Short Signal", "Potential Short Entry")