Cette stratégie consiste à concevoir une stratégie de négociation à la baisse basée sur l'indicateur du canal de Keltner. Elle évalue le moment des renversements de prix potentiels en comparant le prix avec les rails supérieur et inférieur du canal de Keltner et prend des positions longues et courtes appropriées.
Cette stratégie utilise l'indicateur du canal de Keltner pour juger des tendances des prix. Le canal de Keltner se compose d'une moyenne mobile et d'une plage moyenne vraie (ATR). Le rail supérieur est égal à la moyenne mobile plus N fois ATR; le rail inférieur est égal à la moyenne mobile moins N fois ATR. Lorsque le prix traverse le rail inférieur du canal de bas en haut, on considère que la puissance haussière est améliorée et que des positions longues peuvent être prises; lorsque le prix traverse le rail supérieur de haut en bas, on considère que la puissance baissière est améliorée et que des positions courtes peuvent être prises.
En outre, la base de la stratégie pour juger des opportunités de repli est que le prix touche ou franchit à nouveau la limite du canal. Par exemple, après que le prix a augmenté pour franchir le rail inférieur, s'il tombe à nouveau pour toucher le rail inférieur sans toucher le rail supérieur, c'est une occasion de prendre un long repli. La stratégie ouvrira des positions longues à ce moment-là.
Il s'agit d'une stratégie de négociation qui utilise les caractéristiques de recul des prix.
Les principaux risques de cette stratégie sont les suivants:
Les contre-mesures:
La stratégie peut être optimisée dans les aspects suivants:
Cette stratégie intègre les méthodes de jugement des tendances et de trading de recul, et présente des avantages uniques pour capturer les tendances d'inversion.
/*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")