Strategi Trading Trend Wave Berdasarkan LazyBear

Penulis:ChaoZhang, Tanggal: 2023-12-19 12:07:14
Tag:

img

Gambaran umum

Ini adalah strategi perdagangan berdasarkan indikator Trend Wave LazyBear. Strategi ini mengidentifikasi sentimen pasar melalui perhitungan tren gelombang fluktuasi harga, dan membuat keputusan panjang dan pendek sesuai.

Logika Strategi

Inti dari strategi ini adalah indikator Trend Wave LazyBear. Ini pertama menghitung harga rata-rata (AP), kemudian rata-rata bergerak eksponensial AP (ESA) dan pergerakan harga absolut (D). Berdasarkan ESA dan D, strategi menghitung Indeks Volatilitas (CI), yang kemudian dimasukkan ke rata-rata bergerak eksponensial untuk menghasilkan garis Trend Wave (WT). WT selanjutnya diproses menjadi WT1 dan WT2 menggunakan rata-rata bergerak sederhana. Ketika WT1 melintasi WT2, itu memicu salib emas dan pergi panjang. Ketika WT1 melintasi di bawah WT2, itu memicu salib kematian dan pendek.

Analisis Keuntungan

Ini adalah tren yang sangat sederhana namun praktis mengikuti strategi.

  1. Ini mengidentifikasi tren harga dan sentimen pasar dengan jelas berdasarkan indikator Wave Trend
  2. Logika perdagangan sederhana untuk pergi panjang/pendek berdasarkan golden/death crosses dari garis WT
  3. Parameter yang dapat disesuaikan untuk menyesuaikan sensitivitas WT untuk siklus yang berbeda
  4. Fleksibilitas untuk menambahkan filter tambahan seperti jendela waktu perdagangan

Analisis Risiko

Ada beberapa risiko untuk strategi ini:

  1. Sebagai tren mengikuti strategi dapat menghasilkan banyak sinyal palsu selama pasar rentang terikat
  2. Sifat keterlambatan WT dapat menyebabkan terlewatkan belokan
  3. Parameter default mungkin tidak cocok untuk semua produk dan siklus
  4. Tidak ada mekanisme stop loss, periode penahan bisa sangat panjang

Solusi utama adalah:

  1. Mengoptimalkan parameter untuk menyesuaikan sensitivitas WT
  2. Tambahkan indikator lain untuk konfirmasi untuk menghindari sinyal palsu
  3. Menggunakan stop loss dan mengambil keuntungan
  4. Batas perdagangan atau posisi harian

Arahan Optimasi

Ada ruang untuk optimasi lebih lanjut:

  1. Mengoptimalkan parameter WT untuk sensitivitas atau stabilitas yang lebih baik
  2. Gunakan set parameter yang berbeda berdasarkan siklus
  3. Tambahkan indikator seperti volume, volatilitas untuk konfirmasi
  4. Tambahkan stop loss dan ambil keuntungan
  5. Memperkaya logika perdagangan seperti piramida, perdagangan grid
  6. Jelajahi fitur dan aturan yang lebih baik menggunakan pembelajaran mesin

Ringkasan

Singkatnya, ini adalah strategi wave following yang sangat sederhana dan praktis. Dengan memodelkan tren wave dari fluktuasi harga, ini mengidentifikasi kondisi pasar overbought dan oversold untuk menghasilkan sinyal perdagangan menggunakan WT golden crosses dan death crosses. Strategi ini mudah diterapkan tetapi mungkin memerlukan optimasi lebih lanjut untuk sensitivitas dan stabilitas. Sebagai strategi trend following, ini juga membutuhkan filter dan logika tambahan untuk menghindari sinyal palsu. Secara keseluruhan ini berfungsi sebagai template strategi yang berguna dengan banyak ruang untuk perbaikan.


/*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)

Lebih banyak