
Cette stratégie est basée sur l’indicateur de la voie de Keltner pour concevoir une stratégie de retrait. Cette stratégie consiste à comparer la relation entre le prix et la trajectoire ascendante et descendante de la voie de Keltner, à déterminer le moment où le prix peut se retourner et à effectuer des opérations de plus ou moins appropriées.
Cette stratégie utilise l’indicateur de la voie de Keltner pour déterminer la tendance des prix. La voie de Keltner est composée de la ligne moyenne et de l’amplitude réelle moyenne (ATR). La voie supérieure est égale à N fois la ligne moyenne plus ATR; la voie inférieure est égale à N fois la ligne moyenne moins ATR.
De plus, la stratégie juge l’opportunité de reprise en fonction du fait que le prix a touché ou franchi la frontière du canal. Par exemple, une hausse de prix a franchi la voie descendante, puis une baisse a touché la voie descendante sans toucher la voie supérieure, ce qui est une opportunité de faire plusieurs reprise. La stratégie ouvrira ses positions à ce moment-là.
Il s’agit d’une stratégie de négociation qui utilise les caractéristiques de la rétrocession des prix.
Les principaux risques de cette stratégie sont les suivants:
La réponse:
Cette stratégie peut être optimisée dans les domaines suivants:
Cette stratégie, qui intègre des méthodes de jugement de tendance et de retrait de transactions, présente un avantage unique pour capturer les retournements. La stabilité et la rentabilité de la stratégie peuvent être encore améliorées par l’ajustement des paramètres et l’extension des fonctionnalités.
/*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")