Stratégie de suivi de tendance croisée à double MA


Date de création: 2023-12-21 16:10:22 Dernière modification: 2023-12-21 16:10:22
Copier: 1 Nombre de clics: 611
1
Suivre
1623
Abonnés

Stratégie de suivi de tendance croisée à double MA

Aperçu

Cette stratégie utilise la méthode de suivi de tendance typique de la bi-homogénéité croisée, combinée à des mécanismes de gestion des risques tels que les arrêts de perte, les arrêts d’arrêt et les arrêts de suivi, afin de capturer les gains induits par les tendances.

Principe de stratégie

  1. Calculer la moyenne des EMA de n jours sur une période rapide, comme moyenne à court terme;
  2. Calculer la moyenne des EMA sur m jours pendant une période de ralentissement, comme moyenne à long terme;
  3. Lorsque la moyenne à court terme dépasse la moyenne à long terme de bas en haut, faites plus; lorsque la moyenne à long terme dépasse la moyenne à haut en bas, faites moins;
  4. Conditions de placement: rupture inverse (si vous faites plusieurs ruptures, la rupture inverse est la position de placement).
  5. Gérer les risques en utilisant des méthodes telles que l’arrêt des pertes, l’arrêt des pertes et le suivi des pertes.

Analyse des avantages

  1. L’utilisation d’une ligne moyenne à deux EMA permet de mieux discerner les points de basculement de la tendance des prix et de capturer les tendances.
  2. La combinaison de stop loss, de stop-loss et de stop-loss tracking permet de contrôler efficacement les pertes individuelles, de bloquer les bénéfices et de réduire les retraits.
  3. Les paramètres sont plus personnalisables et peuvent être adaptés et optimisés en fonction des variétés et des circonstances.
  4. La logique de la stratégie est simple et claire, facile à comprendre et à modifier.
  5. Il prend en charge plusieurs opérations de blanchiment et peut s’adapter à différents types de situations.

Analyse des risques

  1. Les stratégies de double ligne sont très sensibles aux fausses percées et sont faciles à piéger.
  2. Une mauvaise configuration des paramètres peut entraîner des transactions fréquentes, des coûts de transaction accrus et des pertes de points de glissement.
  3. Les stratégies ne peuvent pas déterminer le point de basculement de la tendance par elles-mêmes, mais elles doivent être combinées avec d’autres indicateurs pour être plus efficaces.
  4. Les signaux d’échange sont plus faciles à générer en cas de choc, mais la rentabilité réelle est moins bonne.
  5. Les paramètres doivent être optimisés pour s’adapter aux différentes variétés et aux différents environnements.

Le risque peut être réduit par:

  1. Le nombre de fausses percées a été filtré en combinaison avec d’autres indicateurs.
  2. Optimisation des paramètres et réduction de la fréquence des transactions.
  3. Il est important d’augmenter les indicateurs de tendance pour éviter les chocs.
  4. Adaptation de la gestion des positions pour réduire le risque monétaire.

Direction d’optimisation

Cette stratégie peut être optimisée dans les domaines suivants:

  1. Optimiser les paramètres de cycle de la moyenne rapide pour s’adapter aux différentes variétés et conditions de marché.
  2. Ajout d’autres indicateurs pour juger de la tendance et filtrer les faux signaux de rupture. Typiquement, MACD, KDJ, etc. peuvent être ajoutés.
  3. On peut envisager de changer l’EMA en SMA ou en moyenne mobile pondérée WMA.
  4. Adaptation dynamique de la distance d’arrêt basée sur l’ATR.
  5. Les positions individuelles peuvent être ajustées de manière flexible en fonction de la gestion de la position.
  6. Optimiser les paramètres en fonction d’une combinaison d’indicateurs de corrélation et de volatilité.

Résumer

Cette stratégie est globalement une stratégie de suivi de tendance typique de la tendance de la courbe de la courbe de l’EMA. Elle a l’avantage de capturer les tendances, mais elle est également associée à des mesures de gestion des risques telles que l’arrêt des pertes, l’arrêt et la poursuite des pertes.

Code source de la stratégie
/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

strategy(title = "Strategy Code Example", shorttitle = "Strategy Code Example", overlay = true)

// Revision:        1
// Author:          @JayRogers
//
// *** THIS IS JUST AN EXAMPLE OF STRATEGY RISK MANAGEMENT CODE IMPLEMENTATION ***

// === GENERAL INPUTS ===
// short ma
maFastSource   = input(defval = open, title = "Fast MA Source")
maFastLength   = input(defval = 14, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource   = input(defval = open, title = "Slow MA Source")
maSlowLength   = input(defval = 21, title = "Slow MA Period", minval = 1)

// === STRATEGY RELATED INPUTS ===
tradeInvert     = input(defval = false, title = "Invert Trade Direction?")
// the risk management inputs
inpTakeProfit   = input(defval = 1000, title = "Take Profit", minval = 0)
inpStopLoss     = input(defval = 200, title = "Stop Loss", minval = 0)
inpTrailStop    = input(defval = 200, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)

// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

// === SERIES SETUP ===
/// a couple of ma's..
maFast = ema(maFastSource, maFastLength)
maSlow = ema(maSlowSource, maSlowLength)

// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50)
slow = plot(maSlow, title = "Slow MA", color = red, linewidth = 2, style = line, transp = 50)

// === LOGIC ===
// is fast ma above slow ma?
aboveBelow = maFast >= maSlow ? true : false
// are we inverting our trade direction?
tradeDirection = tradeInvert ? aboveBelow ? false : true : aboveBelow ? true : false

// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() => not tradeDirection[1] and tradeDirection // functions can be used to wrap up and work out complex conditions
exitLong() => tradeDirection[1] and not tradeDirection
strategy.entry(id = "Long", long = true, when = enterLong()) // use function or simple condition to decide when to get in
strategy.close(id = "Long", when = exitLong()) // ...and when to get out
// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort() => tradeDirection[1] and not tradeDirection
exitShort() => not tradeDirection[1] and tradeDirection
strategy.entry(id = "Short", long = false, when = enterShort())
strategy.close(id = "Short", when = exitShort())

// === STRATEGY RISK MANAGEMENT EXECUTION ===
// finally, make use of all the earlier values we got prepped
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)