Stratégie de ligne longue à double EMA Golden Cross

Auteur:ChaoZhang est là., Date: 23 février 2024
Les étiquettes:

img

Résumé

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.

La logique de la stratégie

  1. Calculer l'EMA à court terme, l'EMA à moyen terme et l'EMA à long terme en utilisant trois périodes d'EMA configurables.

  2. Si le prix est supérieur à la moyenne moyenne moyenne à long terme, cela prouve qu'il est actuellement dans une tendance haussière.

  3. 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.

  4. Lorsque les deux conditions ci-dessus sont remplies en même temps, ouvrir long.

Analyse des avantages

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.

Analyse des risques

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.

Direction de l'optimisation

  1. Améliorer la gestion de la taille des positions pour réduire les positions lorsque les retraits atteignent un certain pourcentage.

  2. Augmentez les paramètres de stop loss lorsque vous franchissez de nouveaux sommets.

  3. Optimiser les paramètres de période des EMA pour réduire la fréquence des transactions.

Résumé

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)

Plus de