Sumber daya yang dimuat... Pemuatan...

Strategi Pullback Saluran Keltner

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

img

Gambaran umum

Strategi ini merancang strategi perdagangan mundur berdasarkan indikator Saluran Keltner. Ini menilai waktu potensi pembalikan harga dengan membandingkan harga dengan rel atas dan bawah Saluran Keltner, dan mengambil posisi panjang dan pendek yang sesuai.

Prinsip Strategi

Strategi ini menggunakan indikator Saluran Keltner untuk menilai tren harga. Saluran Keltner terdiri dari rata-rata bergerak dan rentang rata-rata benar (ATR). rel atas sama dengan rata-rata bergerak ditambah N kali ATR; rel bawah sama dengan rata-rata bergerak dikurangi N kali ATR. Ketika harga menembus rel bawah saluran dari bawah ke atas, dianggap bahwa kekuatan bullish ditingkatkan dan posisi panjang dapat diambil; ketika harga menembus rel atas dari atas ke bawah, dianggap bahwa kekuatan bearish ditingkatkan dan posisi pendek dapat diambil.

Selain itu, dasar strategi untuk menilai peluang pullback adalah bahwa harga menyentuh atau menembus batas saluran lagi. misalnya, setelah harga naik untuk menembus rel bawah, jika jatuh lagi untuk menyentuh rel bawah tanpa menyentuh rel atas, itu adalah kesempatan untuk mengambil pullback panjang. strategi akan membuka posisi panjang pada saat ini.

Analisis Keuntungan

Ini adalah strategi perdagangan yang memanfaatkan karakteristik pullback harga.

  1. Menggunakan Saluran Keltner untuk menilai arah tren harga dapat secara efektif menyaring kebisingan.
  2. Mengadopsi strategi penarikan dapat memasuki pasar sebelum pembalikan dan menangkap tren yang lebih besar.

Analisis Risiko

Risiko utama dari strategi ini adalah:

  1. Di pasar satu arah jangka panjang, mungkin ada lebih sedikit peluang mundur, tidak dapat menghasilkan keuntungan.
  2. Penghakiman yang tidak akurat terhadap sinyal mundur dapat menyebabkan kerugian.

Pengendalian:

  1. Mengoptimalkan parameter untuk menyesuaikan lebar saluran untuk menyesuaikan dengan kondisi pasar.
  2. Meningkatkan manajemen posisi untuk mengurangi kerugian tunggal.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Penyaringan terobosan berdasarkan volume perdagangan untuk menghindari terobosan palsu.
  2. Sesuaikan ukuran posisi berdasarkan volatilitas.
  3. Perbarui metode stop loss dengan stop bergerak untuk mengunci lebih banyak keuntungan.

Ringkasan

Strategi ini mengintegrasikan penilaian tren dan metode perdagangan mundur, dan memiliki keuntungan unik dalam menangkap tren pembalikan. Dengan menyesuaikan parameter dan memperluas fungsi, stabilitas dan profitabilitas strategi dapat ditingkatkan lebih lanjut.


/*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 banyak