La stratégie de suivi de la volatilité des moyennes mobiles doubles intègre les idées des stratégies de suivi de la volatilité des moyennes mobiles et des moyennes mobiles. En calculant le croisement des moyennes mobiles simples (SMA) avec différentes périodes, elle réalise la croix dorée et la croix morte pour juger des tendances.
Les indicateurs de base de cette stratégie comprennent la moyenne mobile simple (SMA), les bandes de Bollinger et la moyenne dynamique de l'indice variable (VIDYA). La stratégie établit une SMA rapide et une LMA lente avec des périodes différentes. La croix d'or des lignes rapides et lentes sert de signal long, tandis que la croix de la mort sert de signal de sortie. Pendant ce temps, elle surveille la rupture du prix au-dessus ou en dessous des bandes de Bollinger pendant une période de détention.
Plus précisément, la logique du signal long est déclenchée lorsque le SMA rapide traverse le LMA lent et que le prix est au-dessus de la courbe VIDYA, indiquant une tendance haussière et une expansion de la volatilité.
Le principal avantage de cette stratégie est la combinaison de deux indicateurs pour évaluer les conditions du marché, ce qui améliore la précision des décisions.
En résumé, cette stratégie intègre des informations issues des dimensions tendance, réversion et volatilité.
Bien que cette stratégie présente de nombreux avantages, il y a encore des risques à prendre en compte:
Pour atténuer les risques susmentionnés, l'optimisation des paramètres, les règles de priorité entre les signaux, le contrôle du glissement et les essais de robustesse dans différents environnements de marché sont recommandés.
Les principales dimensions d'optimisation sont le réglage des paramètres et le réglage des conditions du filtre:
La combinaison de l'optimisation des paramètres et du raffinement des règles pourrait encore améliorer la stabilité et la rentabilité.
La stratégie de suivi de la volatilité des moyennes mobiles doubles utilise de multiples indicateurs pour déterminer les conditions du marché, capturer les points tournants de la tendance tout en surveillant les situations de fluctuation des prix.
/*backtest start: 2024-01-29 00:00:00 end: 2024-02-28 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Combined Golden Cross and Progressive Trend Tracker", shorttitle="GCC-PTT", overlay=true) // Inputs fastMA_period = input(50, title="Fast MA Period") slowMA_period = input(200, title="Slow MA Period") src = input(close, title="Source") lengthBB = input(20, title="Bollinger Bands Length") mult = input(2.0, title="Bollinger Bands Multiplier") mavType = input.string(title="Moving Average Type", defval="VAR", options=['SMA', 'EMA', 'WMA', 'TMA', 'VAR', 'WWMA', 'ZLEMA', 'TSF']) // Calculate Moving Averages for Golden Cross fastMA = ta.sma(src, fastMA_period) slowMA = ta.sma(src, slowMA_period) bullish_cross = ta.crossover(fastMA, slowMA) bearish_cross = ta.crossunder(fastMA, slowMA) // Progressive Trend Tracker Components (Adjusted for NA assignment issue) Var_Func(src, length) => valpha = 2 / (length + 1) vud1 = src > src[1] ? src - src[1] : 0 vdd1 = src < src[1] ? src[1] - src : 0 vUD = math.sum(vud1, length) vDD = math.sum(vdd1, length) vCMO = (vUD - vDD) / (vUD + vDD) VAR = 0.0 // Adjusted here, assign an initial value VAR := ta.ema(src * math.abs(vCMO), length) VAR VAR = Var_Func(src, 14) // Example VAR calculation, adjust as needed // Bollinger Bands for dynamic support and resistance BBandTop = fastMA + mult * ta.stdev(src, lengthBB) BBandBot = fastMA - mult * ta.stdev(src, lengthBB) // Plotting plot(fastMA, color=color.blue, title="Fast MA") plot(slowMA, color=color.red, title="Slow MA") plot(BBandTop, color=color.green, title="Bollinger Band Top") plot(BBandBot, color=color.red, title="Bollinger Band Bottom") plot(VAR, color=color.purple, title="VAR", linewidth=2) // Strategy Logic (Adjusted for strategy use) // Long Entry when bullish cross and close above VAR // Exit when bearish cross or close below VAR if (bullish_cross and close > VAR) strategy.entry("CGC_PTT_Long", strategy.long) if (bearish_cross or close < VAR) strategy.close("CGC_PTT_Long")