
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.
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.
Ini adalah strategi untuk berdagang dengan menggunakan ciri-ciri pulangan balik harga.
Risiko utama strategi ini ialah:
Kaedah pencegahan:
Strategi ini boleh dioptimumkan dalam beberapa aspek:
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.
/*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")