
Strategi ini adalah sistem perdagangan yang mengesan trend yang menggabungkan indikator SuperTrend dan indikator rawak (Stochastic Oscillator). Strategi ini mengenal pasti arah trend pasaran melalui indikator SuperTrend, sambil menggunakan isyarat overbuy dan oversell indikator rawak sebagai isyarat pengesahan perdagangan. Strategi ini menggunakan kaedah silang momentum untuk mencari masa masuk dan keluar yang terbaik dalam arah trend, mewujudkan gabungan yang sempurna dari pemantauan trend dan analisis dinamik.
Logik utama strategi ini adalah berdasarkan kepada gabungan dua indikator utama:
Peraturan transaksi adalah seperti berikut:
Strategi ini membina sistem perdagangan yang lebih lengkap dengan menggabungkan pengesanan trend dan analisis dinamik. Ia bukan sahaja menyediakan isyarat masuk dan keluar yang jelas, tetapi juga merangkumi kerangka untuk pengurusan risiko dan pengoptimuman parameter. Walaupun terdapat beberapa risiko yang wujud, tetapi dengan memberikan cadangan pengoptimuman, anda dapat meningkatkan lagi kestabilan dan kesesuaian strategi.
/*backtest
start: 2024-02-21 00:00:00
end: 2024-10-01 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SuperTrend + Stochastic Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// SuperTrend Settings
superTrendFactor = input.float(3.0, title="SuperTrend Factor", step=0.1)
superTrendATRLength = input.int(10, title="SuperTrend ATR Length")
// Calculate SuperTrend
[superTrend, direction] = ta.supertrend(superTrendFactor, superTrendATRLength)
// Plot SuperTrend
plot(superTrend, color=direction == 1 ? color.green : color.red, title="SuperTrend")
bgcolor(direction == 1 ? color.new(color.green, 90) : color.new(color.red, 90), transp=90)
// Stochastic Settings
stochKLength = input.int(14, title="Stochastic %K Length")
stochDLength = input.int(3, title="Stochastic %D Length")
stochSmoothK = input.int(3, title="Stochastic %K Smoothing")
stochOverbought = input.int(80, title="Stochastic Overbought Level")
stochOversold = input.int(20, title="Stochastic Oversold Level")
// Calculate Stochastic
k = ta.sma(ta.stoch(close, high, low, stochKLength), stochSmoothK)
d = ta.sma(k, stochDLength)
// Plot Stochastic in separate pane
hline(stochOverbought, "Overbought", color=color.red)
hline(stochOversold, "Oversold", color=color.green)
plot(k, color=color.blue, title="%K", linewidth=2)
plot(d, color=color.orange, title="%D", linewidth=2)
// Long Condition: SuperTrend is up and Stochastic %K crosses above oversold
longCondition = direction == 1 and ta.crossover(k, stochOversold)
if (longCondition)
strategy.entry("Long", strategy.long)
// Short Condition: SuperTrend is down and Stochastic %K crosses below overbought
shortCondition = direction == -1 and ta.crossunder(k, stochOverbought)
if (shortCondition)
strategy.entry("Short", strategy.short)
// Exit Long: SuperTrend turns down or Stochastic %K crosses below overbought
exitLong = direction == -1 or ta.crossunder(k, stochOverbought)
if (exitLong)
strategy.close("Long")
// Exit Short: SuperTrend turns up or Stochastic %K crosses above oversold
exitShort = direction == 1 or ta.crossover(k, stochOversold)
if (exitShort)
strategy.close("Short")