
La stratégie de combinaison d’optimisation de tendance dynamique est une stratégie de négociation quantitative de ligne moyenne et longue qui combine le facteur dynamique et le facteur de tendance pour générer des signaux d’achat et de vente via une combinaison d’indicateurs de moyenne mobile, moyenne mobile, volume de transaction et indice de décalage. La stratégie est optimisée pour les transactions T+1 et ne convient que pour les transactions en plusieurs directions.
La stratégie utilise une moyenne mobile simple de 6 jours et une moyenne mobile simple de 35 jours pour définir les deux moyennes mobiles. La ligne de signal d’achat est définie comme une moyenne mobile indicielle de 2 jours et la ligne de signal de vente est calculée en fonction de la courbe de la courbe de clôture des 8 derniers jours.
Lorsque le cours de clôture d’une action est supérieur à la moyenne mobile sur 35 jours et que le volume de transactions est supérieur à la moyenne des transactions sur 20 jours, et qu’il est examiné par semaine comme un marché à plusieurs têtes, un signal d’achat est déclenché par une croix d’or en bas; au contraire, un signal de vente est déclenché par une croix de mort en haut.
En termes de gestion des risques, la stratégie a introduit un mécanisme d’ajustement de position dynamique. Les positions réelles sont calculées en fonction des intérêts du compte, du ratio de position maximale, de l’ATR et du facteur de risque. Cela aide à contrôler le retrait maximal de la stratégie.
Cette stratégie, combinant un facteur de dynamique et un filtre de tendance, permet d’identifier efficacement l’orientation de la ligne médiane et longue. En outre, le filtrage du bruit est en place, ce qui permet d’éviter les faux signaux en cas de tremblement. De plus, l’introduction d’un mécanisme de gestion des risques permet également de contrôler le retrait maximal, ce qui garantit la solidité de la stratégie.
D’après les résultats du test, le rendement global de la stratégie est de 128,86%, avec un alpha très important. En même temps, le taux de victoire de la stratégie a atteint 60,66%, ce qui reflète la stabilité de l’effet de la stratégie.
Bien que la stratégie elle-même ait optimisé les mécanismes de gestion des risques, certains risques demeurent. Plus précisément, les principaux risques sont:
Le risque de retrait est plus élevé que la perte maximale de 222 021 46 $ pour une seule transaction, ce qui est lié à un mécanisme de gestion de position imparfait.
Risque de stabilité des signaux. Les signaux stratégiques peuvent être affectés par des facteurs spécifiques à chaque action, ce qui entraîne des fausses signaux. Cela peut avoir un impact sur les gains stratégiques.
Risque de changement de l’environnement du marché. Si l’environnement macro-marché change de manière significative, les paramètres de la stratégie peuvent nécessiter un ajustement pour rester en vigueur.
D’après l’analyse des risques ci-dessus, il y a une nécessité et une possibilité d’optimiser cette stratégie.
En fonction de la situation de la perte maximale, il est possible d’optimiser davantage le mécanisme de gestion des positions, en introduisant un module d’arrêt de perte pour contrôler l’ampleur de la perte individuelle.
On peut envisager d’ajouter plus de filtres pour identifier des phénomènes individuels particuliers afin de réduire la probabilité de faux signaux. Par exemple, l’introduction d’indicateurs de déviation des prix.
Les paramètres de la stratégie doivent être constamment testés et vérifiés, les paramètres doivent être ajustés en temps opportun en fonction de l’évolution de l’environnement du marché. Il faut également éviter les cas de sur-optimisation.
La stratégie de combinaison d’optimisation de tendance dynamique est une stratégie de négociation quantitative de ligne moyenne-longue, combinant un facteur de dynamique et un filtre de tendance, spécialement optimisée pour les transactions T+1. Du point de vue des indicateurs de rétroaction, l’effet global de la stratégie est significatif, avec un alpha très surprenant. Mais il convient également de prêter attention aux risques possibles et d’ajuster les paramètres en temps opportun en fonction de l’environnement du marché.
/*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)