
Ini adalah strategi perdagangan berdasarkan indikator trend gelombang LazyBear. Strategi ini menggunakan trend gelombang untuk mengira turun naik harga, menilai keadaan pasaran yang terlalu banyak dibeli dan dijual, dan melakukan longing dan shorting.
Strategi ini adalah berdasarkan kepada LazyBear’s Wave Trend Indicator. Pertama mengira harga untuk harga purata ((AP), kemudian mengira purata pergerakan indeks untuk AP ((ESA) dan purata pergerakan indeks untuk perubahan harga mutlak ((D)). Berdasarkan ini, mengira Indeks Wave ((CI), kemudian mengira purata pergerakan indeks untuk CI, yang menghasilkan garis trend gelombang ((WT)). WT kemudiannya menghasilkan WT1 dan WT2 melalui purata bergerak sederhana.
Ini adalah strategi yang sangat mudah tetapi sangat praktikal untuk mengesan trend.
Strategi ini mempunyai beberapa risiko:
Penyelesaian utama ialah:
Strategi ini masih boleh dioptimumkan lagi:
Strategi ini adalah strategi pengesanan trend gelombang yang sangat mudah dan praktikal. Ia mengeluarkan isyarat perdagangan dengan mengira trend turun naik harga, mengenal pasti keadaan overbought dan oversold di pasaran, menggunakan silang emas dan silang mati di saluran WT. Operasi strategi ini mudah dan mudah dilaksanakan. Tetapi sebagai strategi trend, ia memerlukan pengoptimuman lanjut terhadap sensitiviti dan kestabilan harga saham, dan perlu dikombinasikan dengan petunjuk dan logik lain untuk mengelakkan isyarat yang salah.
/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//
// @author LazyBear
//
// If you use this code in its original/modified form, do drop me a note.
//
//@version=4
// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12)
fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31)
fromYear = input(defval = 2021, title = "From Year", type = input.integer, minval = 1970)
thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12)
thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31)
thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970)
// === INPUT SHOW PLOT ===
showDate = input(defval = true, title = "Show Date Range", type = input.bool)
// === FUNCTION EXAMPLE ===
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"
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")
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)
plot(0, color=color.gray)
plot(obLevel1, color=color.red)
plot(osLevel1, color=color.green)
plot(obLevel2, color=color.red, style=3)
plot(osLevel2, color=color.green, style=3)
plot(wt1, color=color.white)
plot(wt2, color=color.fuchsia)
plot(wt1-wt2, color=color.new(color.blue, 80), style=plot.style_area)
//Strategy
strategy(title="T!M - Wave Trend Strategy", overlay = false, precision = 8, max_bars_back = 200, pyramiding = 0, initial_capital = 1000, currency = currency.NONE, default_qty_type = strategy.cash, default_qty_value = 1000, commission_type = "percent", commission_value = 0.1, calc_on_every_tick=false, process_orders_on_close=true)
longCondition = crossover(wt1, wt2)
shortCondition = crossunder(wt1, wt2)
strategy.entry(id="Long Entry", comment="buy", long=true, when=longCondition and window())
strategy.close("Long Entry", comment="sell", when=shortCondition and window())
//strategy.entry(id="Short Entry", long=false, when=shortCondition)