Tendance à suivre une stratégie à long terme

Auteur:ChaoZhang est là., Date: 2023-10-17 15:55:41 Je suis désolé
Les étiquettes:

img

Résumé

La stratégie de suivi de tendance à long terme est une stratégie qui suit les tendances des prix en utilisant des moyennes mobiles dynamiques. Elle détermine la tendance actuelle en calculant les moyennes mobiles des prix les plus élevés et les plus bas sur une période et la combine avec l'ATR pour un stop loss dynamique et un profit.

La logique de la stratégie

La stratégie calcule d'abord les moyennes mobiles des prix les plus élevés et les plus bas sur une période (défaut 200 jours) et prend leur point médian comme la ligne de base. Puis elle mesure l'écart du prix par rapport à la ligne de base. Si le prix est supérieur à la ligne de base de 1 ATR (0,5 fois l'ATR de 10 jours par défaut), il est considéré comme une tendance haussière. Si le prix est inférieur à la ligne de base de 1 ATR, il est considéré comme une tendance baissière.

Lorsque le prix revient à la ligne de base, des signaux de sortie sont déclenchés.

Les avantages

  1. Les moyennes dynamiques permettent d'identifier efficacement l'orientation de la tendance à long terme
  2. Les arrêts basés sur ATR suivent la tendance principale en évitant dynamiquement une sensibilité excessive
  3. La prise en compte en temps opportun des changements de tendance réduit les gaspillages de capitaux prématurés
  4. Une logique simple, facile à mettre en œuvre.

Risques et atténuation

  1. Peut générer de faux signaux sur des marchés variés
  2. Un réglage incorrect des paramètres peut manquer les renversements de tendance
  3. Il convient de considérer la divergence entre les stocks du marché et les stocks individuels

Les risques peuvent être réduits en ajustant les paramètres de l'ATR, en ajoutant des filtres pour les configurations à forte probabilité et en évaluant les conditions du marché et l'appétit pour le risque.

Idées d'amélioration

  1. Ajouter une confirmation secondaire après les signaux d'entrée initiaux à l'aide d'indicateurs tels que KDJ
  2. Optimiser les paramètres basés sur la volatilité, les fondamentaux des stocks individuels
  3. Multiplicateur ATR de réglage fin basé sur des backtests pour équilibrer le facteur de profit et le taux de roulement
  4. Introduction d'un ajustement dynamique de la volatilité dans le système de stop loss et de prise de profit
  5. Utiliser des techniques d'apprentissage automatique pour l'optimisation automatisée des paramètres

Résumé

La stratégie de trading de tendance à long terme est un système de trading de tendance facile à utiliser. Il identifie la direction de la tendance en utilisant des moyennes dynamiques et définit des contrôles de risque avec des arrêts basés sur ATR. Il peut capturer efficacement les fluctuations rentables sur les marchés en tendance.


/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Trend Following Long Only Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

lookback_length = input(200, type=input.integer, minval=1, title="Lookback Length")
smoother_length = input(5, type=input.integer, minval=1, title="Smoother Length")
atr_length = input(10, type=input.integer, minval=1, title="ATR Length")
atr_multiplier = input(0.5, type=input.float, minval=0.5, title="ATR Multiplier")

vola = atr(atr_length) * atr_multiplier
price = sma(close, 3)

l = ema(lowest(low, lookback_length), smoother_length)
h = ema(highest(high, lookback_length), smoother_length)
center = (h + l) * 0.5
upper = center + vola
lower = center - vola
trend = ema(price > upper ? 1 : (price < lower ? -1 : 0), 3)
c = trend < 0 ? upper : lower

pcenter = plot(center, transp=100)
pclose = plot(close, transp=100)
pc = plot(c, transp=100)

buy_signal = crossover(trend, 0.0) 
sell_signal = crossunder(trend, 0.0)

strategy.entry("Buy", strategy.long, when=buy_signal)
strategy.close("Buy", when=sell_signal)

bgcolor(trend >= 0 ? color.green : color.red, transp=95)
fill(pc, pclose, color=trend >= 0 ? color.green : color.red)

Plus de