Estrategia de línea larga de doble EMA Golden Cross

El autor:¿ Qué pasa?, fecha: 2024-02-23 12:17:40
Las etiquetas:

img

Resumen general

La estrategia de línea larga de la doble EMA Golden Cross es una estrategia de seguimiento de tendencias que solo abre posiciones largas. La estrategia utiliza tres promedios móviles, EMA a corto plazo, EMA a mediano plazo y EMA a largo plazo. La regla específica de entrada es: abrir largo cuando el precio está por encima de la EMA a largo plazo y la EMA a corto plazo cruza por encima de la EMA a mediano plazo para formar una cruz de oro.

Estrategia lógica

  1. Calcular la EMA a corto plazo, la EMA a mediano plazo y la EMA a largo plazo utilizando tres períodos de EMA configurables.

  2. Si el precio está por encima de la EMA a largo plazo, demuestra que actualmente está en una tendencia alcista.

  3. Si la EMA a corto plazo se cruza por encima de la EMA a mediano plazo desde abajo para formar una cruz de oro, demuestra además que la tendencia alcista se está fortaleciendo.

  4. Cuando ambas condiciones anteriores se cumplan al mismo tiempo, abrir largo.

Análisis de ventajas

La mayor ventaja de esta estrategia es que puede identificar efectivamente las tendencias mediante el uso de EMAs de varios períodos de juicio combinado para evitar ser engañado por el ruido del mercado a corto plazo.

Análisis de riesgos

El principal riesgo de esta estrategia es la posición larga. Cuando el mercado se invierte, no puede cerrar posiciones a tiempo, lo que conduce al riesgo de pérdidas en expansión. Además, el establecimiento inadecuado del período de EMA también puede conducir a operaciones frecuentes y aumentar los costos de transacción.

Dirección de optimización

  1. Aumentar la gestión del tamaño de las posiciones para reducir las posiciones cuando las reducciones alcancen un cierto porcentaje.

  2. Aumentar los ajustes de stop loss al romper nuevos máximos.

  3. Optimizar los parámetros del período de las EMA para reducir la frecuencia de las operaciones.

Resumen de las actividades

Esta estrategia es en general una estrategia de tenencia a largo plazo estable y de alta calidad. Tiene una fuerte capacidad para identificar tendencias con un control adecuado del riesgo. Con una mayor optimización, se espera obtener mejores rendimientos estables.


/*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)

Más.