Cette stratégie est basée sur la sélection par l'utilisateur d'une EMA et d'un canal en pourcentage défini. Elle va long lorsque le prix est en dessous de la bande supérieure et court lorsque le prix est au-dessus de la bande inférieure. Si le prix commence à évoluer et se déplace en dehors du canal, toutes les positions sont fermées pour éviter les pertes.
Pour les marchés en tendance, il convient d'utiliser à la place la chaîne sœur
Le calcul de l'EMP à 200 périodes est effectué à titre d'EMP de référence.
Calculer les bandes supérieure et inférieure sur la base du pourcentage défini par l'utilisateur: La bande supérieure = EMA * (1 + pourcentage) La bande inférieure = EMA * (1 - Pourcentage)
Calculer les bandes de Bollinger à 20 périodes pour représenter la fourchette de canaux.
Passez long lorsque le prix de clôture dépasse la bande de Bollinger inférieure depuis le bas. Passez court lorsque le prix de clôture dépasse la bande de Bollinger supérieure depuis le haut.
Utilisez l'ATR pour calculer le stop loss afin d'éviter des pertes excessives.
Si le prix dépasse la fourchette de canaux en pourcentage définie, fermer toutes les positions pour éviter de nouvelles pertes.
La ligne de base de l'EMA permet de mieux saisir les points d'inversion de tendance.
Le canal en pourcentage fixe une fourchette de négociation raisonnable pour éviter les sur-trades.
Les bandes de Bollinger fournissent des niveaux de support et de résistance pour faciliter le timing de l'entrée.
L'arrêt de trail ATR définit dynamiquement le stop loss pour contrôler efficacement le risque par transaction.
Fermer toutes les positions lorsque le prix dépasse le canal permet de contrôler rapidement les pertes.
Les paramètres personnalisables sont flexibles pour différentes conditions du marché.
Une fourchette de canaux trop large peut manquer les tendances ou retarder l'arrêt des pertes.
Une fourchette de canaux trop étroite peut entraîner une survente et augmenter les coûts de transaction.
Un mauvais réglage des paramètres de Bollinger Bands peut entraîner des opportunités de trading manquées.
Un seuil de stop loss trop faible peut entraîner des pertes excessives par transaction.
Les paramètres doivent être optimisés pour trouver la fourchette de négociation optimale.
Testez différentes périodes EMA pour trouver la moyenne mobile la plus appropriée.
Optimiser les paramètres de pourcentage des canaux pour déterminer la plage optimale de canaux.
Ajuster la période des bandes de Bollinger pour mieux tenir compte de la volatilité.
La stratégie de stop-loss doit être ajustée selon les paramètres suivants:
Testez le long-only au-dessus de l'EMA ou le short-only en dessous des conditions de l'EMA et voyez si cela améliore le taux de victoire.
Incorporer des indicateurs de tendance pour déterminer si une sortie anticipée est nécessaire.
Cette stratégie combine les forces des moyennes mobiles, des canaux, de la volatilité et plus encore pour créer un système de trading de gamme relativement stable. La clé est de trouver les paramètres les plus appropriés pour chaque marché spécifique afin d'équilibrer le risque et la récompense.
/*backtest start: 2023-11-05 00:00:00 end: 2023-11-12 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="[mdeacey] EMA% Channel + BB Range Strategy", shorttitle="[mdeacey] EMA% Channel + BB Range Strategy", overlay=true) //EMA 200 len = input(title="EMA Length", type=input.integer, defval=200) srce = input(title="EMA Source", type=input.source, defval=close) ema1= ema(srce,len) percent = input(title="Channel Percentage (%)", type=input.float, defval= 1) valuee = (percent*ema1)/100 upperbande = ema1 + valuee lowerbande = ema1 - valuee plot(ema1, title='EMA200', color=color.gray, linewidth=1, style=plot.style_line ) plot(upperbande, title='EMA Upper Band', color=color.gray, linewidth=1, style=plot.style_line ) plot(lowerbande, title='EMA Lower Band', color=color.gray, linewidth=1, style=plot.style_line ) length = input(20, minval=2) src = input(close, title="Close price") mult = input(2.0, minval=0.001, maxval=50) MA2 = sma(src, length) dev = mult * stdev(src, length) upper = MA2 + dev lower = MA2 - dev signalColor = crossunder(close, upper) ? color.red : crossover(close, lower) ? color.green : color.white barcolor(color=signalColor) upperBand = plot(upper, color=color.gray, linewidth=1) lowerBand = plot(lower, color=color.gray, linewidth=1) fill(upperBand, lowerBand,color=color.gray) strategy.entry("Long",true,when = crossover(close,lower) and close <upperbande and close>lowerbande) strategy.close("Long",when = crossunder(close,lowerbande)) strategy.entry("Short",false,when = crossunder(close,upper) and close <upperbande and close>lowerbande) strategy.close("Short",when = crossover(close,upperbande)) //Inputs atrPeriod = input(defval=14, title="ATR Period",group='ATR Settings', type=input.integer) // Adjust this to change the ATR calculation length multiplierPeriod = input(defval=1.75, title="ATR Multiplier Period",group='ATR Settings', type=input.float)// Adjust this to change the distance between your candles and the line //ATR Calculation pine_rma(x, y) => alpha = y sum = 0.0 sum := (x + (alpha - 1) * nz(sum[1])) / alpha true_range() => max(high - low, max(abs(high - close[1]), abs(low - close[1]))) //Long SL plot(low - pine_rma(true_range() * multiplierPeriod, atrPeriod), "Long Stop", color=color.red, offset = 1) // Short SL plot(high +pine_rma(true_range() * multiplierPeriod, atrPeriod), "Short Stop", color=color.red, offset = 1) strategy.exit("Exit Long","Long",limit=upper ,stop = low - pine_rma(true_range() * multiplierPeriod, atrPeriod) ) strategy.exit("eExit Short","Short",limit=lower ,stop =high +pine_rma(true_range() * multiplierPeriod, atrPeriod) )