Stratégie de reprise du canal Keltner

Auteur:ChaoZhang est là., Date: 2023-12-27 14:49:39
Les étiquettes:

img

Résumé

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.

Principe de stratégie

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à.

Analyse des avantages

Il s'agit d'une stratégie de négociation qui utilise les caractéristiques de recul des prix.

  1. L'utilisation du canal Keltner pour juger de la direction des tendances des prix peut filtrer efficacement le bruit.
  2. L'adoption d'une stratégie de retrait peut permettre d'entrer sur le marché avant les revers et de capturer des tendances plus importantes.

Analyse des risques

Les principaux risques de cette stratégie sont les suivants:

  1. Dans les marchés unidirectionnels à long terme, il peut y avoir moins d'opportunités de retrait, incapables de réaliser des bénéfices.
  2. Un jugement inexact des signaux de retrait peut entraîner des pertes.

Les contre-mesures:

  1. Optimiser les paramètres pour ajuster la largeur du canal afin de l'adapter aux conditions du marché.
  2. Améliorer la gestion des positions pour réduire les pertes uniques.

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Filtrage des percées basé sur le volume des transactions afin d'éviter les fausses percées.
  2. Ajuster la taille de la position en fonction de la volatilité.
  3. Mettez à jour les méthodes de stop loss avec des stops en mouvement pour obtenir plus de profits.

Résumé

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")

Plus de