Strategi perdagangan kuantitatif berdasarkan tren gelombang


Tanggal Pembuatan: 2023-11-28 16:17:31 Akhirnya memodifikasi: 2023-11-28 16:17:31
menyalin: 1 Jumlah klik: 715
1
fokus pada
1619
Pengikut

Strategi perdagangan kuantitatif berdasarkan tren gelombang

Ringkasan

Strategi ini dirancang berdasarkan indikator tren gelombang. Indikator tren gelombang menggabungkan saluran harga dan rata-rata, sehingga dapat secara efektif mengidentifikasi tren pasar, mengirim sinyal beli dan jual. Strategi ini melakukan pembelian atau penjualan dengan mengatur garis overbought dan oversold dari tren gelombang, ketika garis indikator menembus garis kunci.

Prinsip Strategi

  1. Perhitungan harga menggunakan triangle moving average ap, dan juga dengan indeks moving average esa.
  2. Perhitungan rata-rata bergerak indeks dari perbedaan mutlak ap dan esa d。
  3. Dapatkan indikator fluktuasi.
  4. Hitung rata-rata periode n2 dari ci, dan dapatkan indikator tren gelombang wt1 .
  5. Siapkan garis overbuy dan oversell.
  6. Ketika wT1 melewati garis jual beli, lakukan lebih banyak; ketika wT1 melewati garis beli beli, lakukan kosong.

Analisis Keunggulan

  1. Indikator tren gelombang menembus garis overbought dan oversold, yang dapat secara efektif menangkap titik-titik perubahan tren pasar, membuat keputusan pembelian dan penjualan yang tepat.
  2. Kombinasi dengan saluran harga dan teori garis rata, indikator tidak menghasilkan sinyal yang sering.
  3. Periode waktu yang dapat dipilih digunakan untuk berbagai jenis transaksi.
  4. Parameter indikator dapat disesuaikan, pengalaman pengguna yang baik.

Risiko dan Solusi

  1. Dalam pasar yang sangat bergolak, indikator dapat menghasilkan sinyal yang salah, risiko yang lebih besar. Periode memegang posisi dapat dipersingkat sesuai, atau digabungkan dengan indikator lain untuk memfilter sinyal.
  2. Tidak mempertimbangkan manajemen posisi dan mekanisme stop loss, ada risiko kerugian. Anda dapat mengatur ukuran posisi dan stop loss bergerak untuk mengendalikan risiko.

Arah optimasi

  1. Dapat dipertimbangkan untuk digunakan dengan portofolio indikator lain, seperti KDJ, MACD, dan lain-lain, untuk membentuk portofolio perdagangan dan meningkatkan stabilitas strategi.
  2. Anda dapat mendesain mekanisme stop loss otomatis, seperti stop loss tracking, stop loss transmisi, dan lain-lain, untuk mengendalikan kerugian tunggal.
  3. Dengan menggunakan algoritma pembelajaran mendalam, strategi dapat dioptimalkan secara otomatis melalui pelatihan feedback data, dan meningkatkan tingkat keberhasilan strategi.

Meringkaskan

Strategi ini didasarkan pada indikator tren gelombang, menilai overbought dan oversold situasi identifikasi tren, merupakan strategi pelacakan tren yang efektif. Dibandingkan dengan indikator jangka pendek, indikator tren gelombang dapat mengurangi sinyal salah, meningkatkan stabilitas.

Kode Sumber Strategi
/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-27 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@author SoftKill21
//@version=4

strategy(title="WaveTrend strat", shorttitle="WaveTrend strategy")
n1 = input(10, "Channel Length")
n2 = input(21, "Average Length")
Overbought = input(70, "Over Bought")
Oversold = input(-30, "Over Sold ")

// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2001, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
DST = 1 //day light saving for usa
//--- Europe
London = iff(DST==0,"0000-0900","0100-1000")
//--- America
NewYork = iff(DST==0,"0400-1500","0500-1600")
//--- Pacific
Sydney = iff(DST==0,"1300-2200","1400-2300")
//--- Asia
Tokyo = iff(DST==0,"1500-2400","1600-0100")

//-- Time In Range
timeinrange(res, sess) => time(res, sess) != 0

london = timeinrange(timeframe.period, London)
newyork = timeinrange(timeframe.period, NewYork)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true //and (london or newyork)

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(Overbought, color=color.red)
plot(Oversold, color=color.green)

plot(wt1, color=color.green)
longButton = input(title="Long", type=input.bool, defval=true)
shortButton = input(title="Short", type=input.bool, defval=true)

if(longButton==true)
    strategy.entry("long",1,when=crossover(wt1,Oversold) and time_cond)
    strategy.close("long",when=crossunder(wt1, Overbought))
    
if(shortButton==true)
    strategy.entry("short",0,when=crossunder(wt1, Overbought) and time_cond)
    strategy.close("short",when=crossover(wt1,Oversold))

//strategy.close_all(when= not (london or newyork),comment="time")
if(dayofweek == dayofweek.friday)
    strategy.close_all(when= timeinrange(timeframe.period, "1300-1400"), comment="friday")