Strategi Pembalikan Mengikuti Tren


Tanggal Pembuatan: 2024-01-03 16:34:28 Akhirnya memodifikasi: 2024-01-03 16:34:28
menyalin: 0 Jumlah klik: 654
1
fokus pada
1621
Pengikut

Strategi Pembalikan Mengikuti Tren

Ringkasan

Strategi trend tracking reversal adalah strategi trading trend yang didasarkan pada moving average dan harga extreme. Strategi ini menggunakan dua moving average untuk melacak tren harga dan membuka posisi reversal ketika tren berbalik. Pada saat yang sama, strategi ini juga menghitung saluran harga berdasarkan harga tertinggi dan terendah dari beberapa garis K terbaru, dan mengatur stop loss ketika harga mendekati batas saluran, untuk mengendalikan risiko lebih lanjut.

Prinsip Strategi

Strategi ini menggunakan tinggi dan rendah 3 dari rata-rata bergerak HMA dan LMA untuk melacak tren harga. Interpret sebagai bullish ketika harga naik melalui HMA; Interpret sebagai bearish ketika harga turun melalui LMA.

Strategi ini juga akan menghitung uplevel dan dnlevel dari saluran harga berdasarkan harga tertinggi dan terendah di bar paling dekat di garis akar K. Uplevel akan menambahkan sebuah koefisien regresicorr berdasarkan harga tertinggi di garis akar K bar paling dekat; dnlevel akan mengurangi koefisien regresicorr berdasarkan harga terendah di garis akar K bar paling dekat.

Ketika membuka lebih banyak pesanan, harga stop loss adalah saluran atas; Ketika membuka pesanan kosong, harga stop loss adalah saluran bawah. Ini dapat secara efektif mengendalikan risiko kerugian yang ditimbulkan oleh pembalikan harga.

Ketika sinyal reversal muncul, strategi ini akan segera membuka posisi reversal dan mengikuti tren harga baru. Ini adalah prinsip reversal tracking.

Keunggulan Strategis

  • Strategi ini memanfaatkan keuntungan dari pergerakan rata-rata untuk melacak tren dan menangkap tren harga dengan cepat.
  • Menggunakan channel harga dan reverse positioning untuk mengendalikan risiko dan mengunci keuntungan secara efektif;
  • Logika strategi sederhana dan jelas, mudah dipahami dan diterapkan;
  • Parameter yang dapat disesuaikan, seperti panjang penilaian tren, koefisien regresi, dan lain-lain, sesuai dengan varietas yang berbeda;
  • Ini adalah salah satu cara yang paling efektif untuk mendapatkan keuntungan dari tren.

Risiko Strategis

  • Ini adalah salah satu faktor yang mempengaruhi harga.
  • Jika tidak, maka akan ada kerugian besar yang tidak bisa dikendalikan.
  • Pengaturan parameter yang tidak tepat dapat menyebabkan terlalu sensitif atau lambat;
  • Untuk mendapatkan hasil yang baik, pilihlah varietas yang tepat dan periode waktu yang tepat.

Metode optimasi:

  1. Menyaring sinyal tidak valid dalam kombinasi dengan indikator lain;
  2. Meningkatkan stop loss untuk mengunci keuntungan dan mengurangi penarikan maksimum.
  3. Pengujian dan optimalisasi parameter untuk varietas dan siklus yang berbeda.

Arah optimasi strategi

Strategi ini masih bisa dioptimalkan lebih jauh:

  1. Kombinasi indikator lain dapat diperkenalkan untuk menyaring beberapa sinyal yang tidak valid. Misalnya MACD, KD, dll.

  2. Adaptive Stop Loss Logic, seperti Moving Stop Loss, Balance Stop Loss, dan lain-lain dapat ditambahkan untuk mengendalikan risiko lebih lanjut.

  3. Anda dapat menguji efek dari parameter yang berbeda pada efek strategi, mengoptimalkan kombinasi parameter seperti panjang siklus MA, ukuran koefisien regresi, dan lain-lain.

  4. Strategi saat ini adalah perdagangan frekuensi, atau dapat disesuaikan untuk perdagangan sepanjang hari. Ini mungkin memerlukan aturan penyaringan lainnya.

Meringkaskan

Strategi ini secara keseluruhan adalah strategi perdagangan berbalik tren yang menggunakan saluran harga yang digabungkan dengan rata-rata bergerak. Dengan melacak tren dan membuka posisi berbalik pada waktu yang tepat, strategi ini dapat secara efektif melacak pergerakan harga.

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

//Noro
//2019

//@version=3
strategy(title = "Noro's 3Bars Strategy by Larry Williams", shorttitle = "3Bars", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
corr = input(0.0, title = "Correction, %")
bars = input(1, minval = 1)
revers = input(false, defval = false, title = "revers")
showll = input(true, defval = true, title = "Show Levels")
showos = input(true, defval = true, title = "Show Levels one side")
showcl = input(false, defval = false, title = "Show Levels continuous line")
showbg = input(false, defval = false, title = "Show Background")
showar = input(false, defval = false, title = "Show Arrows")
fromyear = input(1900, defval = 1900, 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")

len = input(3)

hma = sma(high, len)
lma = sma(low, len)
plot(hma)
plot(lma)

//Levels
hbar = 0
hbar := high > high[1] ? 1 : high < high[1] ? -1 : 0
lbar = 0
lbar := low > low[1] ? 1 : low < low[1] ? -1 : 0
uplevel = 0.0
dnlevel = 0.0
hh = highest(high, bars + 1)
ll = lowest(low, bars + 1)
uplevel := hbar == -1 and sma(hbar, bars)[1] == 1 ? hh + ((hh / 100) * corr) : uplevel[1]
dnlevel := lbar == 1 and sma(lbar, bars)[1] == -1 ? ll - ((ll / 100) * corr) : dnlevel[1]

//Background
size = strategy.position_size
trend = 0
trend := size > 0 ? 1 : size < 0 ? -1 : high >= uplevel ? 1 : low <= dnlevel ? -1 : trend[1]
col = showbg == false ? na : trend == 1 ? lime : trend == -1 ? red : na
bgcolor(col)

//Lines
upcol = na
upcol := showll == false ? na : uplevel != uplevel[1] and showcl == false ? na : showos and trend[1] == 1 ? na : lime
plot(uplevel, color = upcol, linewidth = 2)
dncol = na
dncol := showll == false ? na : dnlevel != dnlevel[1] and showcl == false ? na : showos and trend[1] == -1 ? na : red
plot(dnlevel, color = dncol, linewidth = 2)

//Arrows
longsignal = false
shortsignal = false
longsignal := size > size[1]
shortsignal := size < size[1]
plotarrow(longsignal and showar and needlong ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(shortsignal and showar and needshort ? -1 : na, colorup = blue, colordown = blue, transp = 0)

//Trading
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if uplevel > 0 and dnlevel > 0 and revers == false
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = uplevel)
    strategy.entry("Long stop", strategy.short, 0, stop = lma)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnlevel)
    strategy.entry("Short stop", strategy.long, 0, stop = hma)
    
// if time > timestamp(toyear, tomonth, today, 23, 59)
//     strategy.close_all()