Berdasarkan strategi pelacakan tren volatilitas


Tanggal Pembuatan: 2024-02-18 10:07:29 Akhirnya memodifikasi: 2024-02-18 10:07:29
menyalin: 0 Jumlah klik: 538
1
fokus pada
1617
Pengikut

Berdasarkan strategi pelacakan tren volatilitas

Ringkasan

Strategi ini menggunakan indikator WaveTrend untuk menilai tren harga dan overbought oversold, digabungkan dengan indikator RSI untuk memfilter sinyal, menggunakan metode pelacakan tren, dan melakukan operasi terbalik pada posisi overbought oversold.

Prinsip Strategi

Strategi ini menggunakan indikator WaveTrend untuk menentukan arah tren harga. Indikator WaveTrend didasarkan pada peningkatan indikator Rainbow untuk menentukan arah tren harga dengan menghitung perbedaan antara garis rata-rata Heikin-Ashi dan nilai mutlak harga.

Secara khusus, formula WaveTrend dalam strategi adalah:

esa = ema(hlc3, 10) 
d = ema(abs(hlc3 - esa), 10)
ci = (hlc3 - esa) / (0.015 * d)
wt = ema(ci, 21)

Di antaranya, esa adalah rata-rata Heikin-Ashi yang dihitung, d adalah rata-rata perbedaan antara rata-rata Heikin-Ashi dan nilai mutlak harga.

Indikator RSI digunakan untuk menilai overbought dan oversold. RSI dalam kode memiliki rumus:

rsiup = rma(max(change(close), 0), 14) 
rsidown = rma(-min(change(close), 0), 14) 
rsi = rsidown == 0 ? 100 : rsiup == 0 ? 0 : 100 - (100 / (1 + rsiup / rsidown))

Nilai standarnya adalah 0-100, di atas 70 adalah zona over-buy, di bawah 30 adalah zona over-sell.

Kombinasi kedua indikator ini, ketika RSI di bawah 25, WaveTrend di bawah -60 adalah zona oversold, sinyal plus; ketika RSI di atas 75, WaveTrend di atas 60 adalah zona oversold, sinyal short.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Menggunakan indikator WaveTrend untuk menentukan arah tren harga secara akurat dan dapat diandalkan.
  2. Filter indikator RSI dapat menghindari transaksi yang tidak perlu dan meningkatkan tingkat kemenangan.
  3. Menggunakan metode pelacakan tren, Anda dapat memaksimalkan keuntungan dari tren harga.
  4. Strategi yang jelas dan mudah dipahami, parameter yang fleksibel, dapat disesuaikan dengan varietas dan pasar yang berbeda.
  5. Strategi yang mudah diterapkan, mudah divalidasi di lapangan, dan mudah untuk mengoptimalkan kerangka kerja.

Analisis risiko

Strategi ini juga memiliki beberapa risiko:

  1. Indikator WaveTrend dan RSI memiliki keterlambatan tertentu, yang dapat melewatkan titik balik harga.
  2. Meskipun ada kondisi penyaringan, namun masih mungkin terjadi kesalahan sinyal pada saat terjadi gempa.
  3. Strategi untuk melacak dan menghentikan kerugian belum disempurnakan dan tidak dapat secara efektif mengendalikan kerugian tunggal.
  4. Pengaturan parameter yang wajar dengan karakteristik varietas dan frekuensi transaksi sangat penting.

Tanggapan:

  1. Optimalisasi, ditambah dengan indikator penilaian tambahan, untuk meningkatkan akurasi sinyal.
  2. Bergabunglah dengan strategi stop loss untuk mengendalikan kerugian tunggal.
  3. Mencari kombinasi parameter yang optimal dan menyesuaikan strategi untuk varietas pasar.

Arah optimasi

Strategi ini dapat dioptimalkan dari beberapa arah:

  1. Mengganti atau menambahkan indikator penilaian untuk mengoptimalkan akurasi sinyal. Misalnya, menambahkan indikator penilaian seperti MACD, KD.

  2. Pengaturan parameter yang dioptimalkan untuk varietas perdagangan yang berbeda. Misalnya, menyesuaikan siklus smoothing untuk menemukan kombinasi parameter yang optimal.

  3. Bergabunglah dengan strategi tracking stop loss untuk mengontrol kerugian tunggal secara efektif. Misalnya, stop loss persentase saldo, stop loss bergerak, dll.

  4. Pertimbangkan strategi penambahan lainnya. Misalnya, gunakan penambahan Martingale sebagai pengganti jumlah tetap yang telah ditetapkan.

  5. Mengoptimalkan parameter rentang adaptasi, mencari parameter optimal untuk meningkatkan akurasi penilaian.

Meringkaskan

Strategi ini memiliki pemikiran yang jelas, menggunakan indikator volatilitas untuk menilai tren harga, dan memfilter sinyal perdagangan noise secara efektif. Strategi memiliki ruang untuk dioptimalkan, dapat diperbaiki dari berbagai sudut, sehingga strategi lebih stabil dan dapat diandalkan. Optimalisasi dapat disesuaikan dengan berbagai jenis perdagangan melalui penyesuaian parameter, layak untuk diuji lebih lanjut untuk verifikasi di lapangan.

Kode Sumber Strategi
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's WaveTrender Strategy v1.0", shorttitle = "WaveTrender str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usemar = input(false, defval = false, title = "Use Martingale")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
showarr = input(true, defval = true, title = "Show Arrows")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//RSI
rsiup = rma(max(change(close), 0), 14)
rsidown = rma(-min(change(close), 0), 14)
rsi = rsidown == 0 ? 100 : rsiup == 0 ? 0 : 100 - (100 / (1 + rsiup / rsidown))

//WaveTrend
esa = ema(hlc3, 10)
d = ema(abs(hlc3 - esa), 10)
ci = (hlc3 - esa) / (0.015 * d)
wt = ema(ci, 21)

//Body
body = abs(close - open)
abody = sma(body, 10)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
overs = rsi < 25 and wt < -60
overb = rsi > 75 and wt > 60
up1 = (strategy.position_size == 0 or close < strategy.position_avg_price) and overs and bar == -1
dn1 = (strategy.position_size == 0 or close > strategy.position_avg_price) and overb and bar == 1
exit = (strategy.position_size > 0 and overs == false) or (strategy.position_size < 0 and overb == false)

//Arrows
col = exit ? black : up1 or dn1 ? blue : na
needup = up1
needdn = dn1
needexitup = exit and strategy.position_size < 0
needexitdn = exit and strategy.position_size > 0
plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0)
plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0)

//Trading
profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1]
mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1]

if up1
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if dn1
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
    
if exit
    strategy.close_all()