Berdasarkan strategi penjejakan arah aliran turun naik


Tarikh penciptaan: 2024-02-18 10:07:29 Akhirnya diubah suai: 2024-02-18 10:07:29
Salin: 0 Bilangan klik: 538
1
fokus pada
1617
Pengikut

Berdasarkan strategi penjejakan arah aliran turun naik

Gambaran keseluruhan

Strategi ini menggunakan indikator WaveTrend untuk menilai trend harga dan overbought oversold, digabungkan dengan RSI untuk memfilter isyarat, dan menggunakan trend tracking untuk melakukan operasi terbalik pada overbought oversold.

Prinsip Strategi

Strategi ini menggunakan indikator WaveTrend untuk menentukan arah trend harga. Indikator WaveTrend berdasarkan penambahbaikan pada indikator Rainbow, untuk menentukan arah trend harga dengan mengira perbezaan antara garis rata-rata Heikin-Ashi dan nilai mutlak harga.

Secara khusus, formula WaveTrend dalam strategi ini ialah:

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

Di antaranya, esa adalah purata Heikin-Ashi yang dikira, d adalah purata perbezaan antara purata Heikin-Ashi dan nilai mutlak harga.

RSI digunakan untuk menilai overbought dan oversold. RSI dikodkan dengan formula:

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 piawaiannya adalah 0-100; lebih tinggi daripada 70 adalah kawasan membeli-belah, dan lebih rendah daripada 30 adalah kawasan menjual-belah.

Gabungan kedua-dua penunjuk ini, apabila RSI lebih rendah daripada 25, WaveTrend lebih rendah daripada -60 adalah kawasan jual-beli, memberi isyarat lebih banyak; apabila RSI lebih tinggi daripada 75, WaveTrend lebih tinggi daripada 60 adalah kawasan membeli-belah, memberi isyarat kurang.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Menggunakan penunjuk WaveTrend untuk menentukan arah trend harga dengan tepat dan boleh dipercayai.
  2. Penapisan RSI dapat mengelakkan perdagangan yang tidak perlu dan meningkatkan kadar kemenangan.
  3. Menggunakan trend tracking, anda boleh memaksimumkan keuntungan daripada trend harga.
  4. Strategi yang jelas dan mudah difahami, parameter yang fleksibel, boleh disesuaikan dengan pelbagai jenis dan pasaran.
  5. Strategi yang mudah dilaksanakan, mudah untuk disahkan di lapangan, dan mudah untuk mengoptimumkan kerangka kerja.

Analisis risiko

Strategi ini mempunyai beberapa risiko:

  1. Indeks WaveTrend dan RSI berada di belakang dan mungkin terlepas titik perubahan harga.
  2. Walaupun terdapat syarat penapisan, ia masih boleh menyebabkan isyarat yang salah dalam keadaan gegaran.
  3. Strategi untuk mengesan dan menghentikan kerugian masih belum disempurnakan dan tidak dapat mengawal kerugian secara berkesan.
  4. Tetapan parameter yang sesuai dengan ciri-ciri varieti dan kekerapan transaksi sangat penting.

Kaedah pencegahan:

  1. Di samping itu, ia juga boleh digunakan untuk mengoptimumkan dan meningkatkan ketepatan isyarat.
  2. Bergabung dengan strategi Stop Loss untuk mengawal kerugian tunggal.
  3. Mencari kombinasi parameter yang optimum dan menyesuaikan strategi untuk varieti pasaran.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan cara berikut:

  1. Tukar atau menambah penunjuk penilaian untuk mengoptimumkan ketepatan isyarat. Sebagai contoh, tambah penunjuk penilaian seperti MACD, KD.

  2. Pengaturan parameter yang dioptimumkan untuk pelbagai jenis perdagangan. Sebagai contoh, menyesuaikan kitaran kelancaran untuk mencari kombinasi parameter terbaik.

  3. Menyertai strategi untuk mengesan dan mengawal kerugian tunggal secara berkesan.

  4. Pertimbangkan strategi penambahan saham yang berbeza. Sebagai contoh, penambahan saham Martingale digunakan sebagai pengganti jumlah tetap penambahan saham.

  5. Mengoptimumkan parameter julat kesesuaian, mencari parameter terbaik untuk meningkatkan ketepatan penghakiman

ringkaskan

Strategi ini mempunyai pemikiran keseluruhan yang jelas, menggunakan indikator kekuatan turun naik untuk menentukan trend harga, dan menapis isyarat perdagangan bising dengan berkesan. Terdapat ruang yang besar untuk pengoptimuman strategi, dan ia boleh diperbaiki dari pelbagai sudut, menjadikan strategi lebih stabil dan boleh dipercayai.

Kod 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()