Cette stratégie est un système intelligent de suivi des tendances basé sur des moyennes mobiles doubles, qui identifie les tendances du marché en calculant les moyennes mobiles des hauts et des bas ainsi que des indicateurs de pente, combinés à des mécanismes dynamiques de prise de profit et de stop-loss pour la gestion des risques.
La stratégie utilise un système de moyenne mobile double comme logique de négociation de base, calculant des moyennes mobiles sur les séries de prix élevées et basses. Les signaux longs sont générés lorsque le prix dépasse la moyenne supérieure avec une pente significativement positive, tandis que les signaux courts se produisent lorsque le prix dépasse la moyenne inférieure avec une pente significativement négative.
Il s'agit d'une stratégie de trading quantitative qui combine de manière organique le suivi de tendance avec la gestion des risques. Grâce à la coopération d'un double système de moyenne mobile et de seuils de pente, la stratégie peut capturer avec précision les tendances du marché, tandis que les mécanismes dynamiques de prise de profit et de stop-loss fournissent un contrôle complet des risques. Bien qu'il y ait place à l'amélioration de la sélection des paramètres et de l'adaptabilité du marché, son cadre logique clair et son système de paramètres flexible fournissent une bonne base pour l'optimisation ultérieure. Il est recommandé aux traders de tester et d'optimiser en profondeur divers paramètres en fonction des caractéristiques spécifiques du marché et de leurs propres préférences de risque lors de l'application de la stratégie dans le trading en direct.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-27 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("SMA Buy/Sell Strategy with Significant Slope", overlay=true) // Parametri configurabili smaPeriod = input.int(20, title="SMA Period", minval=1) initialTPPercent = input.float(5.0, title="Initial Take Profit (%)", minval=0.1) // Take Profit iniziale (ambizioso) trailingSLPercent = input.float(1.0, title="Trailing Stop Loss (%)", minval=0.1) // Percentuale di trailing SL slopeThreshold = input.float(0.05, title="Slope Threshold (%)", minval=0.01) // Soglia minima di pendenza significativa // SMA calcolate su HIGH e LOW smaHigh = ta.sma(high, smaPeriod) smaLow = ta.sma(low, smaPeriod) // Funzioni per pendenza significativa isSignificantSlope(sma, threshold) => math.abs(sma - sma[5]) / sma[5] > threshold / 100 slopePositive(sma) => sma > sma[1] and isSignificantSlope(sma, slopeThreshold) slopeNegative(sma) => sma < sma[1] and isSignificantSlope(sma, slopeThreshold) // Condizioni di BUY e SELL buyCondition = close > smaHigh and low < smaHigh and close[1] < smaHigh and slopePositive(smaHigh) sellCondition = close < smaLow and high > smaLow and close[1] > smaLow and slopeNegative(smaLow) // Plot delle SMA plot(smaHigh, color=color.green, linewidth=2, title="SMA 20 High") plot(smaLow, color=color.red, linewidth=2, title="SMA 20 Low") // Gestione TP/SL dinamici longInitialTP = strategy.position_avg_price * (1 + initialTPPercent / 100) shortInitialTP = strategy.position_avg_price * (1 - initialTPPercent / 100) // Trailing SL dinamico longTrailingSL = close * (1 - trailingSLPercent / 100) shortTrailingSL = close * (1 + trailingSLPercent / 100) // Chiusura di posizioni attive su segnali opposti if strategy.position_size > 0 and sellCondition strategy.close("Buy", comment="Close Long on Sell Signal") if strategy.position_size < 0 and buyCondition strategy.close("Sell", comment="Close Short on Buy Signal") // Apertura di nuove posizioni con TP iniziale e Trailing SL if buyCondition strategy.entry("Buy", strategy.long, comment="Open Long") strategy.exit("Long TP/Trailing SL", from_entry="Buy", limit=longInitialTP, stop=longTrailingSL) if sellCondition strategy.entry("Sell", strategy.short, comment="Open Short") strategy.exit("Short TP/Trailing SL", from_entry="Sell", limit=shortInitialTP, stop=shortTrailingSL)