La double EMA Golden Cross Long Line est une stratégie de suivi de tendance qui n'ouvre que des positions longues. La stratégie utilise trois moyennes mobiles, EMA à court terme, EMA à moyen terme et EMA à long terme. La règle d'entrée spécifique est: ouvrir long lorsque le prix est au-dessus de l'EMA à long terme et l'EMA à court terme traverse au-dessus de l'EMA à moyen terme pour former une croix dorée.
Calculer l'EMA à court terme, l'EMA à moyen terme et l'EMA à long terme en utilisant trois périodes d'EMA configurables.
Si le prix est supérieur à la moyenne moyenne moyenne à long terme, cela prouve qu'il est actuellement dans une tendance haussière.
Si l'EMA à court terme passe au-dessus de l'EMA à moyen terme par le bas pour former une croix dorée, cela prouve également que la tendance haussière se renforce.
Lorsque les deux conditions ci-dessus sont remplies en même temps, ouvrir long.
Le plus grand avantage de cette stratégie est qu'elle permet d'identifier efficacement les tendances en utilisant des EMA à plusieurs périodes pour éviter d'être induit en erreur par le bruit de marché à court terme.
Le principal risque de cette stratégie est la position longue. Lorsque le marché est inversé, il est incapable de fermer les positions à temps, ce qui entraîne le risque de pertes croissantes. En outre, un mauvais réglage de la période des EMA peut également entraîner des transactions fréquentes et augmenter les coûts de transaction.
Améliorer la gestion de la taille des positions pour réduire les positions lorsque les retraits atteignent un certain pourcentage.
Augmentez les paramètres de stop loss lorsque vous franchissez de nouveaux sommets.
Optimiser les paramètres de période des EMA pour réduire la fréquence des transactions.
Cette stratégie est globalement une stratégie de détention à long terme stable et de haute qualité. Elle a une forte capacité à identifier les tendances avec un contrôle approprié des risques. Avec une optimisation supplémentaire, elle devrait obtenir de meilleurs rendements stables.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Strategia EMA Long con Opzioni di Uscita Avanzate e Periodi EMA Personalizzabili", overlay=true) // Parametri di input generali useVolatilityFilter = input.bool(true, title="Usa Filtro di Volatilità") atrPeriods = input.int(14, title="Periodi ATR", minval=1) atrMultiplier = input.float(1.5, title="Moltiplicatore ATR", step=0.1) useTrailingStop = input.bool(true, title="Usa Trailing Stop") trailingStopPercent = input.float(15.0, title="Percentuale Trailing Stop", minval=0.1, step=0.1) / 100.0 useEMAExit = input.bool(true, title="Usa Uscita EMA Corta incrocia EMA Media al Ribasso") // Parametri di input per periodi EMA personalizzabili emaLongTermPeriod = input.int(200, title="Periodo EMA Lungo Termine", minval=1) emaShortTermPeriod = input.int(5, title="Periodo EMA Breve Termine", minval=1) emaMidTermPeriod = input.int(10, title="Periodo EMA Medio Termine", minval=1) // Calcolo delle EMA con periodi personalizzabili longTermEMA = ta.ema(close, emaLongTermPeriod) shortTermEMA = ta.ema(close, emaShortTermPeriod) midTermEMA = ta.ema(close, emaMidTermPeriod) // Calcolo ATR e soglia di volatilità atr = ta.atr(atrPeriods) atrThreshold = ta.sma(atr, atrPeriods) * atrMultiplier // Condizione di entrata enterLongCondition = close > longTermEMA and shortTermEMA > midTermEMA enterLong = useVolatilityFilter ? (enterLongCondition and atr > atrThreshold) : enterLongCondition if (enterLong) strategy.entry("Enter Long", strategy.long) // Tracking del prezzo di entrata e del massimo prezzo raggiunto per il trailing stop var float entryPrice = na var float maxPriceSinceEntry = na if (strategy.position_size > 0) maxPriceSinceEntry := math.max(na(maxPriceSinceEntry) ? high : maxPriceSinceEntry, high) entryPrice := na(entryPrice) ? strategy.position_avg_price : entryPrice else maxPriceSinceEntry := na entryPrice := na // Calcolo del valore del trailing stop trailStopPrice = maxPriceSinceEntry * (1 - trailingStopPercent) // Implementazione delle condizioni di uscita exitCrossUnder = close < longTermEMA emaCross = ta.crossunder(shortTermEMA, midTermEMA) if (useEMAExit and emaCross) strategy.close("Enter Long", comment="EMA Cross Exit") if (useTrailingStop) strategy.exit("Trailing Stop", from_entry="Enter Long", stop=trailStopPrice) // Visualizzazioni plot(longTermEMA, color=color.yellow, title="EMA Lungo Termine") plot(shortTermEMA, color=color.blue, title="EMA Breve Termine") plot(midTermEMA, color=color.green, title="EMA Medio Termine") plot(useVolatilityFilter ? atrThreshold : na, color=color.purple, title="ATR Threshold") plot(strategy.position_size > 0 ? trailStopPrice : na, color=color.orange, title="Trailing Stop Value", style=plot.style_linebr)