Strategi Pengesanan Semula Pemecahan Saluran Keltner


Tarikh penciptaan: 2023-12-27 14:49:39 Akhirnya diubah suai: 2023-12-27 14:49:39
Salin: 0 Bilangan klik: 761
1
fokus pada
1621
Pengikut

Strategi Pengesanan Semula Pemecahan Saluran Keltner

Gambaran keseluruhan

Strategi ini menggunakan indikator Keltner Channel untuk merancang strategi perdagangan tarik balik. Strategi ini membandingkan hubungan harga dengan tren naik dan turun Keltner Channel untuk menilai masa harga mungkin berbalik, dan mengambil tindakan tambahan yang sesuai.

Prinsip Strategi

Strategi ini menggunakan Keltner channel indicator untuk menentukan trend harga. Keltner channel terdiri daripada garis rata dan purata true amplitude ((ATR)). Jalur atas saluran sama dengan N kali ATR ditambah dengan garis rata; Jalur bawah saluran sama dengan N kali ATR dikurangkan dari garis rata.

Selain itu, strategi ini menilai peluang untuk menarik balik berdasarkan harga menyentuh semula atau memecahkan sempadan saluran. Sebagai contoh, harga naik menembusi rantaian bawah, dan jatuh lagi tanpa menyentuh rantaian atas. menyentuh rantaian bawah, ini adalah peluang untuk melakukan banyak menarik balik.

Analisis kelebihan

Ini adalah strategi untuk berdagang dengan menggunakan ciri-ciri pulangan balik harga.

  1. Menggunakan saluran Keltner untuk menentukan arah trend harga, anda boleh menyaring kebisingan dengan berkesan.
  2. Mengadopsi strategi menarik balik yang membolehkan pemain memasuki padang sebelum berbalik dan menangkap situasi yang lebih besar.

Analisis risiko

Risiko utama strategi ini ialah:

  1. Apabila pasaran bergerak secara sepihak dalam jangka masa yang panjang, peluang untuk menarik balik mungkin tidak banyak dan tidak dapat menghasilkan keuntungan.
  2. Pengiraan isyarat pengambilan yang tidak tepat boleh menyebabkan kerugian.

Kaedah pencegahan:

  1. Optimumkan parameter, sesuaikan lebar saluran, sesuaikan dengan keadaan pasaran.
  2. Meningkatkan pengurusan kedudukan dan mengurangkan kerugian tunggal.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Penapisan penembusan berdasarkan jumlah urus niaga untuk mengelakkan penembusan palsu.
  2. Ubah saiz kedudukan mengikut kadar turun naik.
  3. Mengemas kini cara menghentikan kerugian, bergerak berhenti untuk mengunci lebih banyak keuntungan.

ringkaskan

Strategi ini mengintegrasikan kaedah untuk menilai trend dan menarik balik perdagangan, mempunyai kelebihan unik dalam menangkap keadaan berbalik. Dengan penyesuaian parameter dan fungsi yang diperluaskan, anda dapat meningkatkan lagi kestabilan dan keuntungan strategi.

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