Strategi ini didasarkan pada strategi WaveTrend asli dari LazyBear, dengan fitur tambahan seperti stop loss sekunder, beberapa level take profit dan filter EMA jangka panjang yang tinggi.
Indikator inti dari strategi ini adalah WaveTrend, yang terdiri dari tiga komponen:
AP: Harga Rata-rata = (Paling Tinggi + Terendah + Tutup) / 3
ESA: EMA periode n dari AP
CI: (AP - ESA) / (0,015 * EMA periode n1 dari nilai absolut (AP - ESA))
TCI: EMA periode n2 dari CI, juga disebut WaveTrend Line 1 (WT1)
WT2: SMA 4 periode dari WT1
Posisi panjang dibuka ketika WT1 melintasi di atas WT2 (salib emas), dan ditutup ketika WT1 melintasi di bawah WT2 (salib kematian).
Selain itu, filter EMA jangka panjang tinggi diterapkan untuk menghindari sinyal palsu, sehingga perdagangan panjang hanya diambil ketika harga di atas EMA dan perdagangan pendek di bawah EMA.
Mengikuti tren secara otomatis menggunakan WaveTrend tanpa penilaian manual
Stop loss sekunder secara efektif membatasi kerugian perdagangan tunggal
Multiple mengambil tingkat keuntungan memaksimalkan profit capture
Filter EMA meningkatkan tingkat kemenangan dengan menghindari sinyal palsu
Gagal mendeteksi pembalikan tren, mungkin menyebabkan kerugian
Penyesuaian parameter yang buruk menyebabkan perdagangan berlebihan
Set parameter yang berbeda dapat diuji untuk optimasi
Pertimbangkan indikator tambahan untuk deteksi pembalikan
Strategi ini secara komprehensif menggabungkan mengikuti tren, pengendalian risiko dan maksimalisasi keuntungan melalui deteksi tren otomatis WaveTrend, filter EMA untuk meningkatkan efisiensi dan manajemen stop loss / take profit untuk menyeimbangkan perdagangan tren dan pengendalian risiko.
/*backtest start: 2023-10-31 00:00:00 end: 2023-11-30 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © undacovacobra //@version=4 strategy("WaveTrend Strategy [LazyBear] with Secondary Stop Loss", overlay=true) // Input parameters n1 = input(10, "Channel Length") n2 = input(21, "Average Length") obLevel1 = input(60, "Over Bought Level 1") obLevel2 = input(53, "Over Bought Level 2") osLevel1 = input(-60, "Over Sold Level 1") osLevel2 = input(-53, "Over Sold Level 2") useEmaFilter = input(false, "Use EMA Filter") emaLength = input(50, "EMA Length") emaTimeFrame = input("60", "EMA Time Frame") tradeMode = input("Both", "Trade Mode", options=["Long Only", "Short Only", "Both"]) useSecondarySL = input(false, "Use Secondary Stop Loss") slPercentage = input(5.0, "Stop Loss Percentage (%)") // WaveTrend Indicator Calculations ap = hlc3 esa = ema(ap, n1) d = ema(abs(ap - esa), n1) ci = (ap - esa) / (0.015 * d) tci = ema(ci, n2) wt1 = tci wt2 = sma(wt1, 4) // EMA Calculation with Selected Time Frame getEma(timeFrame) => security(syminfo.tickerid, timeFrame, ema(close, emaLength)) emaFilter = getEma(emaTimeFrame) // Secondary Stop Loss Calculation longStopPrice = strategy.position_avg_price * (1 - slPercentage / 100) shortStopPrice = strategy.position_avg_price * (1 + slPercentage / 100) // Long Entry and Exit Conditions with EMA Filter and Trade Mode longEntry = crossover(wt1, wt2) and wt2 < osLevel1 and (not useEmaFilter or close > emaFilter) and (tradeMode == "Long Only" or tradeMode == "Both") if (longEntry) strategy.entry("Long", strategy.long) longExit = crossunder(wt1, wt2) and wt2 > obLevel1 if (longExit) strategy.close("Long") if (useSecondarySL and strategy.position_size > 0 and low < longStopPrice) strategy.close("Long", comment="SL Hit") // Short Entry and Exit Conditions with EMA Filter and Trade Mode shortEntry = crossunder(wt1, wt2) and wt2 > obLevel1 and (not useEmaFilter or close < emaFilter) and (tradeMode == "Short Only" or tradeMode == "Both") if (shortEntry) strategy.entry("Short", strategy.short) shortExit = crossover(wt1, wt2) and wt2 < osLevel1 if (shortExit) strategy.close("Short") if (useSecondarySL and strategy.position_size < 0 and high > shortStopPrice) strategy.close("Short", comment="SL Hit") // Plotting plot(0, color=color.gray) plot(obLevel1, color=color.red) plot(osLevel1, color=color.green) plot(obLevel2, color=color.red, style=plot.style_cross) plot(osLevel2, color=color.green, style=plot.style_cross) plot(wt1, color=color.green) plot(wt2, color=color.red, style=plot.style_cross) plot(wt1-wt2, color=color.blue, style=plot.style_area, transp=80) plot(emaFilter, color=color.blue)