
Strategi ini adalah sistem perdagangan kuantitatif berdasarkan Gaussian Channel dan Stochastic RSI. Strategi ini digunakan untuk perdagangan ganda sahaja, tanpa operasi kosong. Strategi ini menggabungkan prinsip pulangan dan dinamika dalam analisis teknikal, untuk masuk ke dalam pasaran apabila harga menyentuh saluran bawah dan RSI rawak menunjukkan isyarat oversell, dan untuk keluar dari pasaran apabila harga menyentuh saluran atas atau RSI rawak menunjukkan isyarat oversell.
Logik utama strategi ini adalah berdasarkan beberapa pengiraan utama:
Strategi ini membina sistem perdagangan yang agak stabil dengan menggabungkan saluran Gaussian dan RSI acak. Kelebihan strategi adalah mekanisme pengesahan dua kali dan kawalan risiko yang baik, tetapi juga perlu memperhatikan masalah adaptasi terhadap keadaan pasaran yang berbeza. Dengan memperkenalkan arah pengoptimuman seperti parameter penyesuaian diri dan pengenalan keadaan pasaran, anda dapat meningkatkan lagi kestabilan dan keuntungan strategi.
/*backtest
start: 2024-02-18 00:00:00
end: 2025-01-30 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Gaussian Channel with Stochastic RSI", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=200, commission_type=strategy.commission.percent, commission_value=0.1, slippage=0)
// Gaussian Channel Parameters
gc_length = input.int(20, "Gaussian Channel Length", minval=1)
gc_mult = input.float(2.0, "Gaussian Channel Multiplier", minval=0.1)
middle = ta.ema(close, gc_length)
stdev = ta.stdev(close, gc_length)
upper = middle + gc_mult * stdev
lower = middle - gc_mult * stdev
// Plot Channels
plot(middle, "Middle Line", color=color.blue)
plot(upper, "Upper Channel", color=color.red)
plot(lower, "Lower Channel", color=color.green)
// Stochastic RSI Parameters
rsi_length = input.int(14, "RSI Length", minval=1)
stoch_length = input.int(14, "Stochastic Length", minval=1)
smooth_k = input.int(3, "Smooth %K", minval=1)
oversold = input.int(20, "Oversold Level", minval=0, maxval=100)
overbought = input.int(80, "Overbought Level", minval=0, maxval=100)
// Calculate Stochastic RSI
rsi = ta.rsi(close, rsi_length)
lowest_rsi = ta.lowest(rsi, stoch_length)
highest_rsi = ta.highest(rsi, stoch_length)
stoch_rsi = highest_rsi != lowest_rsi ? (rsi - lowest_rsi) / (highest_rsi - lowest_rsi) * 100 : 0
k = ta.sma(stoch_rsi, smooth_k)
// Entry/Exit Conditions
enterLong = ta.crossover(close, lower) and ta.crossover(k, oversold)
exitLong = ta.crossover(close, upper) or ta.crossunder(k, overbought)
// Strategy Execution
if (time >= timestamp(2018, 01, 01, 0, 0) and time < timestamp(2069, 01, 01, 0, 0))
if enterLong
strategy.entry("Long", strategy.long)
if exitLong
strategy.close("Long")