Strategi Dagangan Trend Gelombang Berdasarkan LazyBear

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

img

Ringkasan

Ini adalah strategi dagangan berdasarkan penunjuk Trend Gelombang LazyBear. Strategi ini mengenal pasti sentimen pasaran melalui pengiraan trend gelombang turun naik harga, dan membuat keputusan panjang dan pendek dengan sewajarnya.

Logika Strategi

Inti strategi ini adalah penunjuk Trend Gelombang LazyBear. Ia mula-mula mengira harga purata (AP), kemudian purata bergerak eksponensial AP (ESA) dan pergerakan harga mutlak (D). Berdasarkan ESA dan D, strategi mengira Indeks Volatiliti (CI), yang kemudiannya memberi makan kepada purata bergerak eksponensial untuk menghasilkan garis Trend Gelombang (WT). WT diproses ke dalam WT1 dan WT2 menggunakan purata bergerak mudah. Apabila WT1 melintasi WT2, ia mencetuskan salib emas dan pergi panjang. Apabila WT1 melintasi di bawah WT2, ia mencetuskan salib kematian dan pendek.

Analisis Kelebihan

Ini adalah trend yang sangat mudah tetapi praktikal mengikut strategi.

  1. Ia mengenal pasti trend harga dan sentimen pasaran dengan jelas berdasarkan penunjuk Trend Gelombang
  2. Logik perdagangan mudah untuk pergi panjang / pendek berdasarkan salib emas / kematian garis WT
  3. Parameter yang boleh disesuaikan untuk menyesuaikan kepekaan WT untuk kitaran yang berbeza
  4. Fleksibiliti untuk menambah penapis tambahan seperti tetingkap masa dagangan

Analisis Risiko

Terdapat beberapa risiko untuk strategi ini:

  1. Sebagai trend mengikuti strategi ia boleh menjana banyak isyarat palsu semasa pasaran julat terikat
  2. Sifat ketinggalan WT boleh menyebabkan belokan terlewat
  3. Parameter lalai mungkin tidak sesuai untuk semua produk dan kitaran
  4. Tiada mekanisme stop loss, tempoh tahan boleh menjadi sangat lama

Penyelesaian utama ialah:

  1. Mengoptimumkan parameter untuk menyesuaikan kepekaan WT
  2. Tambah penunjuk lain untuk pengesahan untuk mengelakkan isyarat palsu
  3. Menggunakan stop loss dan mengambil keuntungan
  4. Batasan dagangan atau kedudukan harian

Arahan pengoptimuman

Terdapat ruang untuk pengoptimuman lanjut:

  1. Mengoptimumkan parameter WT untuk kepekaan atau kestabilan yang lebih baik
  2. Gunakan set parameter yang berbeza berdasarkan kitaran
  3. Tambah penunjuk seperti jumlah, turun naik untuk pengesahan
  4. Tambah stop loss dan mengambil keuntungan
  5. Mempunyai logik perdagangan seperti piramid, perdagangan grid
  6. Meneroka ciri dan peraturan yang lebih baik menggunakan pembelajaran mesin

Ringkasan

Ringkasnya, ini adalah strategi trend trend yang sangat mudah dan praktikal. Dengan memodelkan trend gelombang turun naik harga, ia mengenal pasti keadaan pasaran yang terlalu banyak dibeli dan terlalu banyak dijual untuk menghasilkan isyarat perdagangan menggunakan salib emas dan salib kematian WT. Strategi ini mudah dilaksanakan tetapi mungkin memerlukan pengoptimuman lanjut untuk kepekaan dan kestabilan. Sebagai strategi trend berikut, ia juga memerlukan penapis dan logik tambahan untuk mengelakkan isyarat palsu. Secara keseluruhan ini berfungsi sebagai templat strategi yang berguna dengan banyak ruang untuk penambahbaikan.


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