Strategi Retracement Breakout Saluran Keltner


Tanggal Pembuatan: 2023-12-27 14:49:39 Akhirnya memodifikasi: 2023-12-27 14:49:39
menyalin: 0 Jumlah klik: 761
1
fokus pada
1621
Pengikut

Strategi Retracement Breakout Saluran Keltner

Ringkasan

Strategi ini dirancang berdasarkan indikator Keltner Channel untuk strategi perdagangan tarik balik. Strategi ini dilakukan dengan membandingkan hubungan antara harga dan tren naik dan turun Keltner Channel, untuk menilai kapan harga mungkin berbalik, dan melakukan operasi shorting yang tepat.

Prinsip Strategi

Strategi ini menggunakan indikator Keltner Channel untuk menentukan tren harga. Saluran Keltner terdiri dari garis rata-rata dan rata-rata amplitudo aktual ((ATR)). Jalur atas saluran sama dengan N kali ATR ditambah garis rata-rata; Jalur bawah saluran sama dengan N kali ATR dikurangi garis rata-rata.

Selain itu, strategi ini menilai peluang untuk menarik kembali berdasarkan pada harga yang kembali menyentuh atau menembus batas saluran. Misalnya, setelah harga naik menembus rel bawah, tanpa menyentuh rel atas, turun lagi menyentuh rel bawah, ini adalah kesempatan untuk melakukan lebih banyak menarik kembali.

Analisis Keunggulan

Ini adalah strategi untuk melakukan perdagangan dengan menggunakan fitur tarik balik harga.

  1. Menggunakan saluran Keltner untuk menentukan arah tren harga, dapat secara efektif memfilter kebisingan.
  2. Mengadopsi strategi penarikan balik yang memungkinkan pemain untuk masuk ke dalam lapangan sebelum berbalik dan menangkap situasi yang lebih besar.

Analisis risiko

Risiko utama dari strategi ini adalah:

  1. Jika pasar bergerak sepihak dalam jangka panjang, kemungkinan besar tidak akan ada banyak kesempatan untuk menarik kembali, dan tidak ada keuntungan.
  2. Pengukuran sinyal yang tidak akurat dapat menyebabkan kerugian.

Tanggapan:

  1. Optimalisasi parameter, penyesuaian lebar saluran, adaptasi dengan lingkungan pasar.
  2. Meningkatkan manajemen posisi, mengurangi kerugian tunggal.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Filter penembusan berdasarkan volume transaksi untuk menghindari penembusan palsu.
  2. Ukuran posisi disesuaikan dengan fluktuasi.
  3. Update Stop Loss Mode, Move Stop Loss untuk mengunci lebih banyak keuntungan.

Meringkaskan

Strategi ini mengintegrasikan metode penilaian tren dan pengambilan kembali perdagangan, dan memiliki keuntungan unik dalam menangkap tren berbalik. Dengan penyesuaian parameter dan fungsionalitas yang diperluas, stabilitas dan profitabilitas strategi dapat ditingkatkan lebih lanjut.

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

//@version=2
strategy("Keltner bounce from border. No repaint. (by Zelibobla)", shorttitle="Keltner border bounce", overlay=true)

price = close

// build Keltner
keltnerLength = input(defval=200, minval=1, title="Keltner EMA Period Length")
keltnerATRLength = input(defval=200, minval=1, title="Keltner ATR Period Length (the same as EMA length in classic Keltner Channels)")
keltnerDeviation = input(defval=8, minval=1, maxval=15, title="Keltner band width (in ATRs)")
closeOnEMATouch = input(type=bool, defval=false, title="Close trade on EMA touch? (less drawdown, but less profit and higher commissions impact)")
enterOnBorderTouchFromInside = input(type=bool, defval=false, title="Enter on border touch from inside? (by default from outside, which is less risky but less profitable)")
SL = input(defval=50, minval=0, maxval=10000, title="Stop loss in ticks (leave zero to skip)")
EMA = sma(price, keltnerLength)
ATR = atr(keltnerATRLength)
top = EMA + ATR * keltnerDeviation
bottom = EMA - ATR * keltnerDeviation

buyEntry = crossover(price, bottom)
sellEntry = crossunder(price, top)
plot(EMA, color=aqua,title="EMA")
p1 = plot(top, color=silver,title="Keltner top")
p2 = plot(bottom, color=silver,title="Keltner bottom")
fill(p1, p2)

tradeSize = input(defval=1, minval=1, title="Trade size")

if ( enterOnBorderTouchFromInside and crossunder(price, bottom) )
    strategy.entry("BUY", strategy.long, qty=tradeSize, comment="BUY")
else
    if( crossover(price, bottom) )
        strategy.entry("BUY", strategy.long, qty=tradeSize, comment="BUY")

if( crossover(price,EMA) and closeOnEMATouch )
    strategy.close("BUY")

if( 0 != SL )
    strategy.exit("EXIT BUY", "BUY", qty=tradeSize, loss=SL)
    strategy.exit("EXIT SELL", "SELL", qty=tradeSize, loss=SL)
   
if( enterOnBorderTouchFromInside and crossover(price, bottom) )
    strategy.entry("SELL", strategy.long, qty=tradeSize, comment="SELL")
else
    if ( crossunder(price, top) )
        strategy.entry("SELL", strategy.short, qty=tradeSize, comment="SELL")
    
    
if( crossunder(price, EMA) and closeOnEMATouch )
    strategy.close("SELL")