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.
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.
Ini adalah strategi perdagangan yang memanfaatkan karakteristik pullback harga.
Risiko utama dari strategi ini adalah:
Pengendalian:
Strategi dapat dioptimalkan dalam aspek berikut:
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")