Strategi ini berdasarkan strategi WaveTrend asal dari LazyBear, dengan ciri tambahan seperti stop loss sekunder, pelbagai tahap mengambil keuntungan dan penapis EMA jangka masa tinggi.
Penunjuk teras strategi ini adalah WaveTrend, yang terdiri daripada tiga komponen:
AP: Harga purata = (Paling Tinggi + Terendah + Tutup) / 3
ESA: EMA tempoh n1 AP
CI: (AP - ESA) / (0.015 * N1-period EMA nilai mutlak (AP - ESA))
TCI: EMA n2-periode CI, juga dipanggil WaveTrend Line 1 (WT1)
WT2: SMA 4 tempoh WT1
Posisi panjang dibuka apabila WT1 melintasi di atas WT2 (salib emas), dan ditutup apabila WT1 melintasi di bawah WT2 (salib kematian).
Di samping itu, penapis EMA jangka masa tinggi dilaksanakan untuk mengelakkan isyarat palsu, supaya perdagangan panjang hanya diambil apabila harga di atas EMA dan perdagangan pendek di bawah EMA.
Mengikuti trend secara automatik menggunakan WaveTrend tanpa pertimbangan manual
Stop loss sekunder berkesan mengehadkan kerugian perdagangan tunggal
Pelbagai tahap mengambil keuntungan memaksimumkan penahanan keuntungan
Penapis EMA meningkatkan kadar kemenangan dengan mengelakkan isyarat palsu
Kegagalan untuk mengesan pembalikan trend, boleh menyebabkan kerugian
Penyesuaian parameter yang buruk membawa kepada perdagangan berlebihan
Set parameter yang berbeza boleh diuji untuk pengoptimuman
Pertimbangkan penunjuk tambahan untuk pengesanan pembalikan
Strategi ini merangkumi trend berikut, kawalan risiko dan pemaksiman keuntungan melalui pengesanan trend automatik WaveTrend, penapis EMA untuk meningkatkan kecekapan dan pengurusan stop loss / mengambil keuntungan untuk mengimbangi perdagangan trend dan kawalan 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)