Strategi Pembalikan Harga yang Dipandu oleh Saluran Harga

Penulis:ChaoZhang, Tanggal: 2023-11-27 11:40:36
Tag:

img

Gambaran umum

Strategi pembalikan harga yang dipandu oleh saluran harga menghitung garis tengah saluran harga untuk menentukan arah tren fluktuasi harga. Ini menghasilkan sinyal panjang dan pendek ketika harga mendekati garis tengah saluran.

Logika Strategi

Indikator inti dari strategi ini adalah garis tengah saluran harga. Hal ini dihitung sebagai rata-rata harga tertinggi dan harga terendah dari 30 candlestick terbaru. Ketika rendah lebih tinggi dari garis tengah, itu dianggap sebagai uptrend. Ketika tinggi lebih rendah dari garis tengah, itu dianggap sebagai downtrend.

Strategi ini hanya menghasilkan sinyal perdagangan ketika latar belakang tren berubah. yaitu, dalam latar belakang tren naik, itu hanya akan pendek ketika lilin berubah menjadi merah. Dalam latar belakang tren turun, itu akan panjang hanya ketika lilin berubah menjadi hijau.

Selain itu, strategi ini juga menetapkan kondisi filter ganda: filter tubuh candlestick dan filter batang saluran harga. Sinyal hanya dipicu ketika volume tubuh candlestick lebih besar dari 20% dari nilai rata-rata, dan harus ada sinyal tren berturut-turut dalam siklus filter untuk membuka posisi.

Analisis Keuntungan

Strategi ini menggabungkan tren, area nilai dan pola candlestick, yang merupakan strategi perdagangan pembalikan yang efisien. Keuntungan utama adalah:

  1. Menggunakan saluran harga untuk menentukan tren utama dan menghindari tertipu oleh pasar yang terikat rentang.
  2. Memilih tingkat harga di dekat garis tengah saluran harga, yang merupakan daerah pembelian rendah-penjualan tinggi klasik.
  3. Body candlestick dan filter bar saluran meningkatkan kualitas sinyal dan mengurangi tingkat sinyal palsu.
  4. Buka posisi hanya pada titik pembalikan yang jelas untuk menghindari mengejar tinggi dan menjual rendah.

Risiko dan Solusi

Risiko utama dari strategi ini berasal dari titik pembalikan harga yang hilang dan menunggu sinyal yang tidak perlu.

  1. Mengatur ketatnya kondisi filter dan mengurangi standar penyaringan untuk mengurangi perdagangan yang hilang.
  2. Meningkatkan ukuran posisi pada tahap awal perubahan tren untuk menangkap keuntungan tren.
  3. Gabungkan indikator lain untuk menilai kekuatan sinyal dan campur tangan pada filter secara manual.

Arahan Optimasi

Strategi ini dapat dioptimalkan dalam aspek berikut:

  1. Mengoptimalkan parameter seperti periode saluran harga, jumlah bar saluran dll.
  2. Tambahkan strategi stop loss untuk menghentikan kerugian ketika kerugian mencapai persentase tertentu.
  3. Menggabungkan volume perdagangan untuk campur tangan dalam kekuatan filter.
  4. Tambahkan model pembelajaran mesin untuk menilai probabilitas pembalikan tren, mengganti filter sederhana.

Kesimpulan

Strategi pembalikan harga yang dipandu oleh saluran harga menentukan titik pembalikan melalui saluran harga, dan menetapkan kondisi filter ganda untuk menghasilkan sinyal berkualitas tinggi.


/*backtest
start: 2023-11-19 00:00:00
end: 2023-11-26 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's PriceChannel for D1 v1.0", shorttitle = "PriceChannel D1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0)

//Settings
needlong = input(true, "long")
needshort = input(true, "short")
slowlen = input(30, defval = 30, minval = 2, maxval = 200, title = "PriceChannel Period")
pcbars = input(1, defval = 1, minval = 1, maxval = 20, title = "PriceChannel Bars")
usecol = input(true, "Use color-filter")
usebod = input(true, "Use body-filter")
needbg = input(false, defval = false, title = "Need trend Background?")
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")

src = close

//PriceChannel
lasthigh = highest(src, slowlen)
lastlow = lowest(src, slowlen)
center = (lasthigh + lastlow) / 2

//Trend
ub = low > center ? 1 : 0
db = high < center ? 1 : 0
trend = sma(ub, pcbars) == 1 ? 1 : sma(db, pcbars) == 1 ? -1 : trend[1]

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

//Signals
up = trend == 1 and (close < open or usecol == false) and (body > abody / 5 or usebod == false)
dn = trend == -1 and (close > open or usecol == false) and (body > abody / 5 or usebod == false)

//Lines
plot(center, color = blue, linewidth = 3, transp = 0, title = "PriceChannel Center")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    

Lebih banyak