Stratégie de suivi de tendance du canal à moyenne mobile double

SMA EMA RSI MACD
Date de création: 2024-09-26 16:28:19 Dernière modification: 2024-09-26 16:28:19
Copier: 2 Nombre de clics: 748
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance du canal à moyenne mobile double

Aperçu

Cette stratégie est un système de suivi de tendances basé sur les bi-médianes et les canaux. Elle utilise les signaux croisés des moyennes mobiles à court et à long terme, en combinaison avec les canaux formés par les moyennes mobiles indicielles ((EMA), pour capturer les tendances du marché et effectuer des transactions.

Principe de stratégie

La logique fondamentale de la stratégie comprend les éléments clés suivants :

  1. Les deux moyennes mobiles simples ((SMA) sont utilisées comme indicateurs de tendance principaux, à savoir les SMA de 55 et 300 cycles respectivement.
  2. Le canal de négociation est formé par l’utilisation de deux moyennes mobiles indicielles ((EMA) pour les EMA de 576 cycles et 676 cycles respectivement.
  3. Lorsque le SMA court porte le SMA ou l’EMA long, le signal de multiplication est déclenché; lorsque le SMA court porte le SMA ou l’EMA long, le signal de blanchiment est déclenché.
  4. La stratégie d’arrêt et d’arrêt est basée sur un nombre de points fixe, avec un arrêt sur 170 du prix d’entrée et un arrêt sur 1140 du prix d’entrée.
  5. Lorsque le profit atteint 300 points, le stop-loss mobile est activé pour protéger les profits déjà réalisés.
  6. La stratégie contient également des conditions de placement automatique, comme la fermeture automatique lorsque le prix atteint le point de rupture ou de rupture.

Avantages stratégiques

  1. La combinaison de plusieurs indicateurs: accroître la précision des jugements de tendance en combinant plusieurs moyennes mobiles et canaux EMA.
  2. Les stratégies permettent de réaliser des bénéfices sur les marchés à capitaux multiples et à capitaux vides, ce qui améliore l’efficacité de l’utilisation des fonds.
  3. Gestion des risques: utilisez des points fixes de stop-loss et de stop-loss pour contrôler efficacement le risque de chaque transaction.
  4. Protection des bénéfices: utilisation d’un stop loss mobile pour bloquer une partie des bénéfices pendant la tendance.
  5. Flexibilité: les paramètres de la stratégie peuvent être ajustés pour s’adapter aux différentes conditions du marché.

Risque stratégique

  1. Risque de marché oscillant: Dans les marchés oscillants horizontaux, il est possible de déclencher fréquemment de faux signaux, entraînant des pertes continues.
  2. Risque de glissement: dans les marchés très volatils, le prix réel peut être très éloigné du prix idéal.
  3. Trop de transactions: les signaux de transactions fréquents peuvent entraîner des coûts de transaction excessifs.
  4. Sensitivité des paramètres: la performance de la stratégie peut être très sensible aux paramètres de configuration, et des ajustements fréquents peuvent être nécessaires en fonction des conditions du marché.

Orientation de l’optimisation de la stratégie

  1. Introduction d’indicateurs de volatilité: envisagez d’ajouter l’ATR (la moyenne de la portée réelle) pour ajuster dynamiquement les points d’arrêt et d’arrêt pour s’adapter aux différentes conditions de volatilité du marché.
  2. Augmentation du filtrage de l’intensité de la tendance: l’ADX (indice de direction moyenne) peut être introduit pour filtrer les signaux de tendance faible et réduire les pertes causées par les fausses ruptures.
  3. Optimiser le timing de l’entrée: envisagez de combiner le RSI (indicateur de force relative) ou le MACD (indicateur de dispersion de convergence des moyennes mobiles) pour optimiser le timing de l’entrée et améliorer le taux de victoire.
  4. Optimisation de la gestion des fonds: gestion dynamique des positions, adaptation du pourcentage de fonds pour chaque transaction en fonction de la valeur nette du compte et des fluctuations du marché.
  5. Élargissement du cycle de rétroaction: la stratégie est retestée sur des périodes plus longues pour vérifier sa stabilité dans différents environnements de marché.

Résumer

Cette stratégie de suivi de tendance à double voie fournit un système de négociation complet en combinant plusieurs indicateurs techniques. Non seulement elle est capable de capturer les principales tendances, mais elle dispose également d’un mécanisme de gestion des risques et de protection des bénéfices. Bien que certains risques potentiels existent, la stratégie a le potentiel de bien fonctionner dans diverses conditions de marché grâce à une optimisation continue et à un ajustement des paramètres.

Code source de la stratégie
/*backtest
start: 2024-08-26 00:00:00
end: 2024-09-24 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RC BTC Vegas 5min free ", overlay=true )

// 定义输入参数
short_ma_length = input.int(55, title="Short MA Length")
long_ma_length = input.int(300, title="Long MA Length")

ema1_length = input.int(576, title="EMA 1 Length")
ema2_length = input.int(676, title="EMA 2 Length")
// 计算移动平均线 
short_ma = ta.sma(close, short_ma_length)
long_ma = ta.sma(close, long_ma_length)
ema1 = ta.ema(close, ema1_length)
ema2 = ta.ema(close, ema2_length)
// 确定买入和卖出信号 
enter_long = ta.crossover(short_ma +5 , ema1)
enter_long2 = ta.crossover(short_ma +5 , long_ma)
enter_long3 =ta.crossover(long_ma+5  , ema1)

exit_long = ta.crossunder(short_ma -5, ema1) 
exit_long2 = ta.crossunder(short_ma -5, long_ma) 
exit_long3 = ta.crossunder(long_ma-5 , ema1)

// 记录进场价格
var float long_stop_loss = na
var float long_take_profit = na

if (enter_long or exit_long  )
    long_stop_loss := close

if (enter_long or exit_long)
    long_take_profit := close

// 根据进场价格计算止损和止盈点数 
stop_loss_points = long_stop_loss /70
take_profit_points  = long_take_profit /140
// 设置固定点数的止损和止
Along_stop_loss = close - stop_loss_points
Along_take_profit = close + take_profit_points
short_stop_loss = close + stop_loss_points
short_take_profit = close - take_profit_points

// 检查持仓利润是否达到300点
long_profit_target_reached = (strategy.position_size > 0 and (close - strategy.position_avg_price) >= take_profit_points)
short_profit_target_reached = (strategy.position_size < 0 and (strategy.position_avg_price - close) >= take_profit_points)

// 即时止损和止盈检查
long_stop_loss_hit = (strategy.position_size > 0 and close <= strategy.position_avg_price - stop_loss_points)
long_take_profit_hit = (strategy.position_size > 0 and close >= strategy.position_avg_price + take_profit_points)
short_stop_loss_hit = (strategy.position_size < 0 and close >= strategy.position_avg_price + stop_loss_points)
short_take_profit_hit = (strategy.position_size < 0 and close <= strategy.position_avg_price - take_profit_points)
// 上一根K棒的止盈止损检查
long_stop_loss_hit_prev = (strategy.position_size > 0 and low[1] <= strategy.position_avg_price - stop_loss_points)
long_take_profit_hit_prev = (strategy.position_size > 0 and high[1]>= strategy.position_avg_price + take_profit_points)
short_stop_loss_hit_prev = (strategy.position_size < 0 and high[1] >= strategy.position_avg_price + stop_loss_points)
short_take_profit_hit_prev = (strategy.position_size < 0 and low[1] <= strategy.position_avg_price - take_profit_points)

// 创建警报条件
alertcondition(long_stop_loss_hit, title="Long Stop Loss Hit", message="Long position stop loss hit")
alertcondition(long_take_profit_hit, title="Long Take Profit Hit", message="Long position take profit hit")
alertcondition(short_stop_loss_hit, title="Short Stop Loss Hit", message="Short position stop loss hit")
alertcondition(short_take_profit_hit, title="Short Take Profit Hit", message="Short position take profit hit")
// 移动止损输入
initialProfitLevel = input.float(9, title="Initial Profit Level (points)")
trailingStopIncrement = input.float(3, title="Trailing Stop Increment (points)")
if (close - long_take_profit >= 150)
    strategy.exit("多單移平", from_entry="Buy", trail_price=close+5 , trail_offset=5  )
if (close - long_take_profit <= -150)
    strategy.exit("空單移平", from_entry="Sell", trail_price=close-5 , trail_offset=5)

// 执行多单交易
if (enter_long or enter_long2  )
    strategy.entry("Buy", strategy.long, qty=1 , comment = "做多")

if (long_stop_loss_hit or long_take_profit_hit  ) 
    strategy.close("Buy",comment = "多單平倉")
//死亡交叉才跟著做空就打開
if (exit_long  or exit_long2  )
    strategy.entry("Sell" ,strategy.short, qty=1 , comment = "做空")

// 执行空单交易
if ( short_take_profit_hit or short_stop_loss_hit ) 
    strategy.close("Sell",comment = "空單平倉")

// 绘制移动平均线
plot(short_ma, title="Short MA", color=color.blue)
plot(long_ma, title="Long MA", color=color.red)

// 绘制进场和出场点
plotshape(series=enter_long, location=location.belowbar, color=color.green, style=shape.labelup, text="做多")
plotshape(series=exit_long , location=location.abovebar, color=color.red, style=shape.labeldown, text="做空") 
plotshape(series=long_take_profit_hit , location=location.abovebar, color=color.yellow, style=shape.labeldown, text="多單止盈")  
plotshape(series=short_take_profit_hit , location=location.abovebar, color=color.yellow, style=shape.labeldown, text="空單止盈") 
plotshape(series=short_stop_loss_hit , location=location.abovebar, color=color.black, style=shape.labeldown, text="空單止損") 
plotshape(series=long_stop_loss_hit , location=location.abovebar, color=color.black, style=shape.labeldown, text="多單止損") 
 
// 绘制止盈和止损点
plot(series=enter_long ? Along_take_profit : na, title="Take Profit", color=color.green, linewidth=2, style=plot.style_linebr)
plot(series=enter_long ? Along_stop_loss : na, title="Stop Loss", color=color.red, linewidth=2, style=plot.style_linebr)