Cette stratégie combine RSI, MACD, Bollinger Bands et limiter les facteurs de hausse/baisse pour mettre en œuvre le trading de rotation de l'élan multi-facteur. La stratégie juge d'abord si plusieurs indicateurs techniques donnent des signaux d'achat ou de vente simultanément. Si oui, les opérations d'achat ou de vente correspondantes seront exécutées. Pendant ce temps, la stratégie adopte un stop profit et un stop loss mobiles pour verrouiller les profits et contrôler les risques.
Les principales composantes de cette stratégie sont les suivantes:
Juge des facteurs
Entrée et sortie
Optimisation de la stratégie
Plusieurs facteurs améliorent la précision de la saisie
La stratégie prend en compte plusieurs facteurs tels que le RSI et le MACD plutôt qu'un seul indicateur.
La caractéristique de l'élan capte les tendances
Les indicateurs tels que le RSI et le MACD ont une caractéristique de dynamique évidente, qui capture les changements de tendance des prix.
Le mécanisme d'arrêt des pertes/profits contrôle les risques
Le déménagement d'un stop profit peut bloquer les bénéfices en suivant dynamiquement le marché.
Une logique simple et claire
La stratégie combine des indicateurs techniques communs et présente une certaine universalité.
Faible performance du marché haussier
La stratégie se concentre sur le trading à inversion moyenne, ce qui peut déclencher des arrêts de perte fréquents sur un marché haussier.
Fréquence de négociation potentiellement trop élevée
Si les paramètres sont fixés de manière trop sensible, la fréquence des transactions peut être trop élevée, ce qui augmente les coûts et les dérapages.
Risque de divergence entre les indicateurs
La stratégie repose sur des signaux cohérents entre les indicateurs, mais des divergences peuvent parfois survenir, ce qui entraîne des signaux erronés.
Perte de freinage à pénétrer
Des points de stop-loss fixes peuvent être pénétrés, un stop-loss dynamique ou un changement de stock peuvent aider à éviter ce risque.
Optimiser les paramètres pour réduire la fréquence des transactions
Test des paramètres RSI et des périodes MA pour trouver des combinaisons avec une fréquence de négociation inférieure.
Ajouter des facteurs statistiques pour améliorer l'efficacité
Incorporer des statistiques spécifiques aux actions comme la volatilité et la liquidité pour définir des paramètres et améliorer l'efficacité.
Combiner des indicateurs au niveau du marché tels que le VIX
Ajustez les paramètres de stratégie basés sur des indicateurs de panique du marché comme le VIX pour réduire la fréquence des transactions pendant les crashs du marché.
Testez différentes périodes de détention
Testez la détention à long terme par rapport à la rotation à court terme pour voir leur impact sur la performance de la stratégie.
Optimiser et tester le stop profit/perte
Recherchez des techniques de stop profit/perte dynamiques plus avancées et testez-les.
Cette stratégie combine plusieurs indicateurs techniques et adopte un stop profit/perte mobile pour verrouiller les profits et contrôler les risques tout en assurant une haute précision d'entrée. La logique est simple et claire. Les performances peuvent être améliorées grâce à l'optimisation des paramètres et à la sélection des indicateurs. Mais la stratégie est plus adaptée aux marchés à inversion moyenne et à plage. Elle peut sous-performer dans les tendances haussières persistantes. En résumé, il s'agit d'une stratégie de dynamique de conversion moyenne multi-facteurs typique qui fournit des idées et une référence pour le trading de rotation d'actions.
/*backtest start: 2023-09-24 00:00:00 end: 2023-10-24 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("RSI, TD Seq, MACD, BB Strategy - Calculation Trailing Profit",overlay=true) RSIDifference = input(-7, minval=-50, maxval=50, title="RSI Difference") TD = close > close[4] ?nz(TD[1])+1:0 TS = close < close[4] ?nz(TS[1])+1:0 TDUp = TD - valuewhen(TD < TD[1], TD , 1 ) TDDn = TS - valuewhen(TS < TS[1], TS , 1 ) TDcheckUP = iff(TD == 2, true, false) TDCheckDOWN = iff(TS == 2, true, false) [_, _, histLine] = macd(close, 12, 26, 9) MACDCheckDown = iff(histLine > 0 and histLine[1] > 0 and histLine[2] > 0 and histLine[3] > 0 and histLine[4] > 0, true, false) MACDCheckUp = iff(histLine < 0 and histLine[1] < 0 and histLine[2] < 0 and histLine[3] < 0 and histLine[4] < 0, true, false) RSICal = rsi(close, 14) RSICalNewUp = 50 + RSIDifference RSICalNewDown = 50 - RSIDifference RSICheckUp = iff(RSICal <= RSICalNewUp, true, false) RSICheckDown = iff(RSICal >= RSICalNewDown, true, false) basis = sma(close, 20) dev = 2 * stdev(close, 20) upperBB = basis + dev lowerBB = basis - dev BBCheckUp = iff(close > upperBB, true, false) BBCheckDown = iff(close < lowerBB, true, false) //BBCheckUp = false //BBCheckDown = false BuyCheck = iff(TDcheckUP == true and MACDCheckUp == true and RSICheckUp == true and BBCheckUp == false, true, false) SellCheck = iff(TDCheckDOWN == true and MACDCheckDown == true and RSICheckDown == true and BBCheckDown == false, true, false) ProfitStratA = input(50, minval=0, maxval=10000, title="Profit", step=0.5) ProfitTrailingA = input(10, minval=0, maxval=10000, title="Profit", step=0.5) useStopLoss = input(false, title="Use Stop Loss?") LossstratA = input(145, minval=0, maxval=10000, title="Stop Loss", step=0.5) colB = input(100, minval=0, maxval=100, title="0-show / 100-hide Strategy", step=100) ProfitStrat = ProfitStratA * 10 ProfitTrailing = ProfitTrailingA * 10 Lossstrat = useStopLoss ? LossstratA * 10 : 1000000 if (strategy.position_size > 0) strategy.exit("BuyClose", "Buy", trail_points=ProfitStrat, trail_offset=ProfitTrailing, loss=Lossstrat) if (strategy.position_size < 0) strategy.exit("SellClose", "Sell", trail_points=ProfitStrat, trail_offset=ProfitTrailing, loss=Lossstrat) if (BuyCheck == true and strategy.position_size == 0) strategy.entry("Buy", strategy.long, comment="Long Entry") if (SellCheck == true and strategy.position_size == 0) strategy.entry("Sell", strategy.short, comment="Short Entry") plotshape(BuyCheck, color=blue, transp=colB, style=shape.arrowup, text="Buy\n", location=location.belowbar) plotshape(SellCheck, color=orange, transp=colB, style=shape.arrowdown, text="Sell\n", location=location.abovebar)