Strategi Pullback Saluran Keltner

Penulis:ChaoZhang, Tarikh: 2023-12-27 14:49:39
Tag:

img

Ringkasan

Strategi ini merancang strategi perdagangan pulback berdasarkan penunjuk Saluran Keltner. Ia menilai masa pembalikan harga yang berpotensi dengan membandingkan harga dengan rel atas dan bawah Saluran Keltner, dan mengambil kedudukan panjang dan pendek yang sesuai.

Prinsip Strategi

Strategi ini menggunakan penunjuk Saluran Keltner untuk menilai trend harga. Saluran Keltner terdiri daripada purata bergerak dan julat sebenar purata (ATR). Rel atas sama dengan purata bergerak ditambah N kali ATR; rel bawah sama dengan purata bergerak tolak N kali ATR. Apabila harga memecahkan rel bawah saluran dari bawah ke atas, ia dianggap bahawa kuasa menaik dipertingkatkan dan kedudukan panjang boleh diambil; apabila harga memecahkan rel atas dari atas ke bawah, ia dianggap bahawa kuasa penurunan dipertingkatkan dan kedudukan pendek boleh diambil.

Selain itu, asas untuk strategi untuk menilai peluang menarik balik adalah bahawa harga menyentuh atau memecahkan sempadan saluran lagi. Sebagai contoh, selepas harga naik untuk memecahkan rel bawah, jika jatuh lagi untuk menyentuh rel bawah tanpa menyentuh rel atas, ia adalah peluang untuk mengambil tarik balik yang panjang. Strategi akan membuka kedudukan panjang pada masa ini.

Analisis Kelebihan

Ini adalah strategi dagangan yang menggunakan ciri-ciri pulback harga. Kelebihannya adalah:

  1. Menggunakan Saluran Keltner untuk menilai arah trend harga dapat menapis bunyi bising dengan berkesan.
  2. Mengambil strategi penarikan balik boleh memasuki pasaran sebelum pembalikan dan menangkap trend yang lebih besar.

Analisis Risiko

Risiko utama strategi ini ialah:

  1. Dalam pasaran satu hala jangka panjang, mungkin ada lebih sedikit peluang mundur, tidak dapat memperoleh keuntungan.
  2. Penghakiman yang tidak tepat terhadap isyarat menarik balik boleh menyebabkan kerugian.

Tindakan balas:

  1. Mengoptimumkan parameter untuk menyesuaikan lebar saluran untuk menyesuaikan diri dengan keadaan pasaran.
  2. Meningkatkan pengurusan kedudukan untuk mengurangkan kerugian tunggal.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Penapisan terobosan berdasarkan jumlah dagangan untuk mengelakkan terobosan palsu.
  2. Sesuaikan saiz kedudukan berdasarkan turun naik.
  3. Mengemas kini kaedah stop loss dengan berhenti bergerak untuk mengunci lebih banyak keuntungan.

Ringkasan

Strategi ini mengintegrasikan penilaian trend dan kaedah perdagangan pullback, dan mempunyai kelebihan unik dalam menangkap trend pembalikan. Dengan menyesuaikan parameter dan mengembangkan fungsi, kestabilan dan keuntungan strategi dapat ditingkatkan lagi.


/*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")

Lebih lanjut