
Strategi ini adalah strategi tren gelombang asli LazyBear, dengan tambahan stop loss kedua, harga stop multiple, dan filter EMA jangka waktu tinggi. Ini menggunakan indikator tren gelombang untuk menghasilkan sinyal perdagangan, kemudian menggabungkan EMA filter dan manajemen stop loss untuk melakukan perdagangan pelacakan tren otomatis.
Indikator inti dari strategi ini adalah indikator WaveTrend, yang terdiri dari tiga bagian:
AP: Harga rata-rata = ((harga tertinggi + harga terendah + harga penutupan) / 3
ESA: EMA edisi n1 AP
CI: ((AP-ESA) / (0,015 × AP-ESA untuk n1 EMA) dari nilai mutlak n1 EMA
TCI: EMA periode n2 dari CI, yaitu garis tren gelombang 1 ((WT1))
WT2: SMA 4 siklus WT1
Ketika menembus WT1 menghasilkan garpu emas, lakukan lebih banyak; ketika menembus WT2 menghasilkan garpu mati, lakukan posisi kosong.
Selain itu, strategi ini juga memperkenalkan EMA dalam jangka waktu tinggi sebagai filter, yang hanya dapat dilakukan jika harga lebih tinggi dari EMA dan kosong jika harga lebih rendah dari EMA, sehingga memfilter beberapa sinyal palsu.
Strategi ini mempertimbangkan berbagai dimensi seperti pelacakan tren, pengendalian risiko, pemaksimalkan keuntungan, dan lain-lain. Strategi ini secara otomatis menangkap tren melalui indikator tren gelombang, bekerja sama dengan filter EMA untuk meningkatkan efisiensi perdagangan, dan mengendalikan risiko sambil menangkap tren. Strategi ini adalah strategi pelacakan tren yang stabil dan efisien.
/*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)