
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.
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.
Ini adalah strategi untuk melakukan perdagangan dengan menggunakan fitur tarik balik harga.
Risiko utama dari strategi ini adalah:
Tanggapan:
Strategi ini dapat dioptimalkan dalam beberapa hal:
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.
/*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")