
Strategi ini adalah sistem perdagangan kuantitatif yang didasarkan pada indikator WaveTrend yang digabungkan dengan mekanisme manajemen risiko dinamis. Strategi ini memungkinkan manajemen perdagangan secara menyeluruh dengan menghitung kekuatan tren dari fluktuasi harga, memfilter sinyal di area overbought dan oversold, serta menerapkan kontrol risiko seperti stop loss, stop loss dan tracking stop loss.
Inti dari strategi ini adalah menghitung indikator WaveTrend melalui harga HLC3. Pertama, menghitung rata-rata bergerak indeks (EMA) untuk periode n1 sebagai garis dasar, kemudian menghitung deviasi harga dari garis dasar, dan menggunakan 0,015 sebagai koefisien untuk pengolahan konsolidasi. Hasilnya adalah dua garis gelombang wt1 dan wt2, yang mewakili garis cepat dan lambat, masing-masing.
Strategi ini, dengan menggabungkan indikator WaveTrend dan sistem manajemen risiko yang baik, memungkinkan strategi perdagangan kuantitatif yang lebih komprehensif. Keunggulan inti dari strategi ini adalah fleksibilitasnya yang kuat dan dapat dikontrol risikonya, tetapi masih memerlukan pengoptimalan parameter dan perbaikan strategi oleh pedagang sesuai dengan situasi pasar yang sebenarnya. Dengan terus-menerus mengoptimalkan dan menyempurnakan, strategi ini diharapkan untuk menghasilkan keuntungan yang stabil dalam perdagangan aktual.
/*backtest
start: 2024-11-12 00:00:00
end: 2024-12-11 08:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title="WaveTrend [LazyBear] with Risk Management", shorttitle="WT_LB_RM", overlay=true)
// Input Parameters
n1 = input.int(10, "Channel Length")
n2 = input.int(21, "Average Length")
obLevel1 = input.int(60, "Over Bought Level 1")
obLevel2 = input.int(53, "Over Bought Level 2")
osLevel1 = input.int(-60, "Over Sold Level 1")
osLevel2 = input.int(-53, "Over Sold Level 2")
// Risk Management Inputs
stopLossPercent = input.float(50.0, "Stop Loss (%)", minval=0.1, maxval=100)
takeProfitPercent = input.float(5.0, "Take Profit (%)", minval=0.1, maxval=100)
trailingStopPercent = input.float(3.0, "Trailing Stop (%)", minval=0.1, maxval=100)
trailingStepPercent = input.float(2.0, "Trailing Stop Step (%)", minval=0.1, maxval=100)
// WaveTrend Calculation
ap = hlc3
esa = ta.ema(ap, n1)
d = ta.ema(math.abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ta.ema(ci, n2)
wt1 = tci
wt2 = ta.sma(wt1, 4)
// Plotting Original Indicators
plot(0, color=color.gray)
plot(obLevel1, color=color.red)
plot(osLevel1, color=color.green)
plot(obLevel2, color=color.red, style=plot.style_line)
plot(osLevel2, color=color.green, style=plot.style_line)
plot(wt1, color=color.green)
plot(wt2, color=color.red, style=plot.style_line)
plot(wt1-wt2, color=color.blue, style=plot.style_area, transp=80)
// Buy and Sell Signals with Risk Management
longCondition = ta.crossover(wt1, osLevel1) or ta.crossover(wt1, osLevel2)
shortCondition = ta.crossunder(wt1, obLevel1) or ta.crossunder(wt1, obLevel2)
// Strategy Entry with Risk Management
if (longCondition)
entryPrice = close
stopLossPrice = entryPrice * (1 - stopLossPercent/100)
takeProfitPrice = entryPrice * (1 + takeProfitPercent/100)
strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", "Long",
stop=stopLossPrice,
limit=takeProfitPrice,
trail_price=close * (1 + trailingStopPercent/100),
trail_offset=close * (trailingStepPercent/100))
if (shortCondition)
entryPrice = close
stopLossPrice = entryPrice * (1 + stopLossPercent/100)
takeProfitPrice = entryPrice * (1 - takeProfitPercent/100)
strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", "Short",
stop=stopLossPrice,
limit=takeProfitPrice,
trail_price=close * (1 - trailingStopPercent/100),
trail_offset=close * (trailingStepPercent/100))