La stratégie de combinaison d'optimisation de la tendance de l'élan est une stratégie de trading quantitative à moyen et long terme qui combine les facteurs d'élan et de tendance. Elle génère des signaux d'achat et de vente en utilisant une combinaison de moyennes mobiles exponentielles, moyennes mobiles, indicateurs de volume et de pente.
La stratégie utilise une moyenne mobile simple de 6 jours et une moyenne mobile simple de 35 jours pour définir deux moyennes mobiles. La ligne de signal d'achat est définie comme une moyenne mobile exponentielle de 2 jours et la ligne de signal de vente est calculée en fonction de la pente sur les 8 derniers prix de clôture.
Lorsque le prix de clôture est supérieur à la moyenne mobile de 35 jours, le volume de négociation est supérieur au volume de négociation moyen de 20 jours, et le chèque hebdomadaire montre un marché haussier, une croix dorée du bas déclenche un signal d'achat.
Pour la gestion des risques, la stratégie introduit un mécanisme d'ajustement dynamique de la position. La position réelle est calculée sur la base du capital du compte, du ratio de position maximal, de l'ATR et du facteur de risque. Cela aide à contrôler le tirage maximal de la stratégie.
La stratégie combine des facteurs de dynamique et le filtrage des tendances, ce qui permet d'identifier efficacement les orientations à moyen et long terme. En même temps, le filtrage du bruit est également en place pour éviter de faux signaux dans les marchés volatils. En outre, l'introduction de mécanismes de gestion des risques permet également un contrôle approprié des retraits maximaux, assurant ainsi la robustesse de la stratégie.
D'après les résultats des backtests, le rendement global de la stratégie a atteint 128,86%, avec un alpha très significatif.
Bien que la stratégie elle-même ait été optimisée pour les mécanismes de gestion des risques, certains risques nécessitent encore une attention.
Le risque de retracement. D'après la plus grande perte unique de 222 021,46 yuans, on peut voir que l'amplitude de retracement de la stratégie est grande. Cela est lié au mécanisme de gestion de position imparfait.
Risque de stabilité du signal: le signal de stratégie peut être affecté par des facteurs particuliers de stocks individuels, ce qui entraîne des situations de faux signaux.
Si l'environnement du marché macroéconomique change de manière significative, il peut être nécessaire d'ajuster les paramètres de la stratégie afin de maintenir l'effet.
D'après l'analyse des risques ci-dessus, il est encore nécessaire et possible d'optimiser cette stratégie.
À en juger par la perte maximale, le mécanisme de gestion des positions peut être encore optimisé par l'introduction d'un module de stop loss pour contrôler l'ampleur des pertes uniques.
Il convient d'envisager d'ajouter davantage d'indicateurs de filtrage afin d'identifier certains phénomènes spéciaux des stocks et de réduire la probabilité de faux signaux.
Continuer les tests de retour et la vérification des paramètres de stratégie, et apporter des ajustements opportuns des paramètres en fonction des changements dans les conditions du marché.
La stratégie de combinaison d'optimisation de la tendance de l'élan est une stratégie de trading quantitative à moyen et long terme qui combine les facteurs d'élan et le filtrage de tendance et est spécialement optimisée pour le trading T+1. À en juger par les indicateurs de backtest, l'effet global de la stratégie est significatif, avec un alpha très étonnant. Mais les risques potentiels doivent également être pris en compte et les paramètres doivent être ajustés à temps en fonction des changements des conditions du marché. La stratégie peut apporter un alpha supplémentaire aux traders quantitatifs et mérite d'être étudiée et vérifiée.
/*backtest start: 2024-01-06 00:00:00 end: 2024-02-05 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © fzj20020403 ////@version=5 //@version=5 strategy("Optimized Zhaocaijinbao", overlay=true, margin_long=100, margin_short=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // Define two moving averages ma6 = ta.sma(close, 6) ma35 = ta.sma(close, 35) // Define buy and sell signal lines buyLine = ta.ema(close, 2) sellSlope = (close - close[8]) / 8 sellLine = sellSlope * 1 + ta.sma(close, 8) // Define volume indicator volumeEMA = ta.ema(volume, 20) // Define weekly slope factor weeklyMa = ta.sma(close, 50) weeklySlope = (weeklyMa - weeklyMa[4]) / 4 > 0 // Generate buy and sell signals buySignal = ta.crossover(buyLine, sellLine) and close > ma35 and volume > volumeEMA and weeklySlope sellSignal = ta.crossunder(sellLine, buyLine) // Define dynamic position sizing factor equity = strategy.equity maxPositionSize = equity * input.float(title='Max Position Size (%)', defval=0.01, minval=0.001, maxval=0.5, step=0.001) riskFactor = input.float(title='Risk Factor', defval=2.0, minval=0.1, maxval=10.0, step=0.1) atr = ta.atr(14) positionSize = maxPositionSize * riskFactor / atr // Define position status var inPosition = false // Define buy and sell conditions buyCondition = buySignal and not inPosition sellCondition = sellSignal and inPosition // Perform buy and sell operations if (buyCondition) strategy.entry("Long", strategy.long, qty=positionSize) inPosition := true if (sellCondition) strategy.close("Long") inPosition := false // Draw vertical line markers for buy and sell signals plotshape(buyCondition, style=shape.arrowdown, location=location.belowbar, color=color.green, size=size.small) plotshape(sellCondition, style=shape.arrowup, location=location.abovebar, color=color.red, size=size.small) // Draw two moving averages plot(ma6, color=color.blue) plot(ma35, color=color.orange) // Draw volume indicator line plot(volumeEMA, color=color.yellow) // Define stop loss and take profit stopLoss = strategy.position_avg_price * 0.5 takeProfit = strategy.position_avg_price * 1.25 if inPosition strategy.exit("Long Stop Loss", "Long", stop=stopLoss) strategy.exit("Long Take Profit", "Long", limit=takeProfit)