Stratégie de suivi de tendance croisée de moyenne mobile dynamique

SMA MA TP SL
Date de création: 2024-12-27 15:08:40 Dernière modification: 2024-12-27 15:08:40
Copier: 4 Nombre de clics: 398
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance croisée de moyenne mobile dynamique

Aperçu

La stratégie est un système de suivi des tendances basé sur des signaux de croisement de moyennes mobiles doubles, combinés à un mécanisme dynamique de stop-profit et de stop-loss. La stratégie utilise des moyennes mobiles simples (SMA) sur 5 et 12 périodes pour générer des signaux de trading et optimise le rapport risque-rendement en ajustant dynamiquement les niveaux de take-profit et de stop-loss. Le take-profit initial est fixé à 10 % et le stop-loss est fixé à 5 %. Lorsque le prix évolue dans une direction favorable, le niveau de take-profit est ajusté à 20 % et le stop-loss est resserré à 2,5 % pour protéger les profits.

Principe de stratégie

La logique de base de la stratégie repose sur la relation de croisement entre la moyenne mobile rapide (5 périodes) et la moyenne mobile lente (12 périodes). Lorsque la ligne rapide croise la ligne lente de bas en haut, le système génère un signal long et ouvre une position ; lorsque la ligne rapide croise la ligne lente de haut en bas, le système ferme la position. L’unicité de la stratégie réside dans son mécanisme de gestion dynamique des risques : une fois la position établie, le système surveillera les tendances des prix en temps réel et ajustera dynamiquement les niveaux de take-profit et de stop-loss en fonction des variations de prix pour maximiser les profits tout en contrôlant les risques .

Avantages stratégiques

  1. Le système adopte la stratégie classique de croisement à double moyenne mobile, avec des signaux clairs, faciles à comprendre et à exécuter.
  2. Le mécanisme dynamique de stop-profit et de stop-loss peut protéger efficacement les bénéfices réalisés et éviter les baisses
  3. Les paramètres de stratégie peuvent être ajustés de manière flexible en fonction des différentes caractéristiques du marché, avec une forte adaptabilité
  4. Le mécanisme de gestion des risques est parfait et peut contrôler efficacement le risque d’une seule transaction
  5. La structure du code est claire, facile à entretenir et à optimiser

Risque stratégique

  1. Un marché volatil peut générer de faux signaux, entraînant des transactions fréquentes
  2. Un retracement important peut se produire lors d’un retournement rapide
  3. Des paramètres incorrects peuvent affecter les performances de la stratégie
  4. Une liquidité insuffisante du marché peut affecter l’exécution du stop loss Les mesures suivantes sont recommandées pour gérer les risques :
  • Ajouter un filtre de tendance
  • Sélection des paramètres d’optimisation
  • Suivi en temps réel de la liquidité du marché
  • Mettre en place un système de gestion de fonds solide

Orientation de l’optimisation de la stratégie

  1. Introduire des indicateurs de force de tendance pour filtrer les signaux de choc du marché
  2. Envisagez d’ajouter des facteurs de volume pour améliorer la fiabilité du signal
  3. Optimiser les paramètres stop-profit et stop-loss pour améliorer le rapport risque-rendement
  4. Ajout d’un mécanisme adaptatif à la volatilité du marché
  5. Améliorer le système de gestion de l’entrepôt

Résumer

Cette stratégie permet une compréhension efficace des tendances et un contrôle dynamique des risques en combinant des signaux de croisement de moyennes mobiles classiques avec des mécanismes innovants de gestion dynamique des risques. Le concept de conception de la stratégie est clair, la méthode de mise en œuvre est concise et efficace, et elle présente une bonne praticité et une bonne évolutivité. Grâce à une optimisation et une amélioration continues, cette stratégie devrait permettre d’obtenir des performances bénéficiaires stables dans les transactions réelles.

Code source de la stratégie
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("My Moving Average Crossover Strategy with Take Profit and Stop Loss", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
//risk_free_rate = float(request.security("IRUS", "D", close)/request.security("IRUS", "D", close[1]) - 1  ))




// MA periods
fastLength = input.int(5, title="Fast MA Length")
slowLength = input.int(12, title="Slow MA Length")




// Take Profit and Stop Loss
takeProfitLevel = input(10, title="Take Profit (пункты)") // Take profit % from the last price
stopLossLevel = input(5, title="Stop Loss (пункты)") // Stop loss  % from the last price
takeProfitLevel_dyn = input(20, title="Dynamic Take Profit (пункты)") // Move TP if current_price higher buy_px
stopLossLevel_dyn =  input(2.5, title="Dynamic Stop Loss (пункты)") // S Move SL if current_price higher buy_px


// Вычисление скользящих средних
fastMA = ta.sma(close, fastLength)
slowMA= ta.sma(close, slowLength)


// Conditions for Sell and Buy
longCondition = ta.crossover (fastMA, slowMA) // покупаем, если короткая MA персекает длинную снизу-вверх
shortCondition = ta.crossunder(fastMA, slowMA) // продаем, если короткая MA персекает длинную сверху-вниз




// Buy position condition
if (longCondition)
    strategy.entry("Buy", strategy.long)






// Dynamic TP SL leveles
takeProfitPrice = strategy.position_avg_price * (1+ takeProfitLevel / 100)
stopLossPrice = strategy.position_avg_price * (1-stopLossLevel / 100)


entryPrice = strategy.position_avg_price




if (strategy.position_size > 0) // если есть открытая позиция




    // takeProfitPrice := entryPrice * (1+ takeProfitLevel / 100)
    // stopLossPrice := entryPrice * (1-stopLossLevel / 100)


    // // Перемещение Stop Loss и Take Profit
    if (close > entryPrice)
   
        takeProfitPrice := close * (1+ takeProfitLevel_dyn / 100)
        stopLossPrice := close * (1- stopLossLevel_dyn/ 100)






if (shortCondition)
    strategy.close("Buy")




strategy.exit("Take Profit/Stop loss", "Buy", limit=takeProfitPrice, stop=stopLossPrice)


// Drawing MA lines
plot(fastMA, color=color.blue, title="Fast Moving Average")
plot(slowMA, color=color.orange, title="Slow Moving Average")




// Визуализация
plot(longCondition ? na : takeProfitPrice, title="Take Profit Level", color=color.green, linewidth=1, style=plot.style_line)
plot(longCondition ? na: stopLossPrice, title="Stop Loss Level", color=color.red, linewidth=1, style=plot.style_line)