Stratégie de rupture des canaux de moyenne mobile

Auteur:ChaoZhang est là., Date: 2024-01-29 10:26:25 Le projet de loi est en cours d'adoption.
Les étiquettes:

img

Résumé

Cette stratégie calcule les rails intermédiaires, supérieurs et inférieurs du canal de Keltner. Elle remplit la couleur SOUS les rails intermédiaires et inférieurs. Après avoir déterminé la direction du canal, elle traverse et achète et vend. C'est une sorte de stratégie de suivi des tendances.

Principe de stratégie

L'indicateur de base est le canal de Keltner. Le rail du milieu du canal est la moyenne mobile pondérée sur N jours du prix typique (prix le plus élevé + prix le plus bas + prix de clôture) /3. Les lignes supérieures et inférieures du canal sont respectivement une moyenne mobile pondérée sur N jours distante de la ligne du milieu du canal.

Plus précisément, la stratégie juge principalement si le prix traverse le rail supérieur ou le rail inférieur, et prend des décisions longues ou courtes avec le rail du milieu comme limite.

Analyse des avantages

  1. En utilisant l'indicateur du canal de Keltner, il a un bon jugement sur la fourchette de fluctuation des prix, évitant de fausses percées.
  2. L'utilisation de la moyenne mobile moyenne comme support peut réduire les pertes.
  3. Le passage à travers le rail supérieur pour long et le rail inférieur pour court appartient à la stratégie de suivi de tendance, qui est conforme à la loi de variation des prix de la plupart des actions.

Analyse des risques

  1. Les stratégies de canal de rupture sont très sensibles aux paramètres et nécessitent des tests répétés pour trouver la meilleure combinaison de paramètres.
  2. Lorsque les cours des actions fluctuent fortement à court terme, les risques commerciaux augmentent.
  3. L'effet a une forte corrélation avec les paramètres et les variétés, et des ajustements sont nécessaires pour s'adapter aux différentes variétés.

Directions d'optimisation

  1. Combinez d'autres indicateurs pour filtrer les signaux et éviter les transactions erronées, comme l'indicateur de dynamique, l'indicateur de volatilité, etc.
  2. Optimiser les paramètres pour trouver la meilleure combinaison de paramètres.
  3. Il y aura des différences considérables dans les paramètres réglés pour les différentes variétés, qui devront être optimisées séparément.

Résumé

En général, cette stratégie est relativement simple et directe, et c'est une stratégie de percée de prix commune. L'avantage est que l'idée est claire et facile à comprendre et à mettre en œuvre, ce qui convient aux débutants à apprendre. Mais il y a aussi certaines limitations. Elle est sensible aux paramètres, les résultats sont inégaux et nécessitent des tests et une optimisation répétés. Si elle peut être combinée avec des indicateurs de jugement plus complexes, elle peut former une stratégie de trading plus puissante.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © WMX_Q_System_Trading
//@version=3

strategy(title = "WMX Keltner Channels strategy", shorttitle = "WMX Keltner Channels strategy", overlay = true)

useTrueRange = input(true)
length = input(20, minval=5)
mult = input(2.618, minval=0.1)
mah =ema(ema( ema(high, length),length),length)
mal =ema(ema( ema(low, length),length),length)
range = useTrueRange ? tr : high - low
rangema =ema(ema( ema(range, length),length),length)
upper = mah + rangema * mult
lower = mal - rangema * mult
ma=(upper+lower)/2
uc = red
lc=green
u = plot(upper, color=uc, title="Upper")
basis=plot(ma, color=yellow, title="Basis")
l = plot(lower, color=lc, title="Lower")
fill(u, basis, color=uc, transp=95)
fill(l, basis, color=lc, transp=95)


strategy.entry("Long", strategy.long,  stop = upper, when = strategy.position_size <= 0 and close >upper)
strategy.entry("Short", strategy.short,  stop = lower, when = strategy.position_size >= 0 and close<lower)
if strategy.position_size > 0 
    strategy.exit("Stop Long", "Long", stop = ma)

if strategy.position_size < 0 
    strategy.exit("Stop Short", "Short", stop = ma)





Plus de