Стратегия двойной длинной линии Золотого креста (англ. Dual EMA Golden Cross Long Line) - это стратегия отслеживания тренда, которая открывает только длинные позиции. Стратегия использует три скользящих средних, краткосрочную EMA, среднесрочную EMA и долгосрочную EMA. Конкретным правилом входа является: открыть длинную, когда цена выше долгосрочной EMA, а краткосрочная EMA пересекает среднесрочную EMA, чтобы сформировать золотой крест.
Вычислить краткосрочную, среднесрочную и долгосрочную ЭМА с использованием трех конфигурируемых периодов.
Если цена выше долгосрочной средней средней средней стоимости, это доказывает, что она в настоящее время находится в восходящей тенденции.
Если краткосрочная EMA пересекает среднесрочную EMA снизу и образует золотой крест, это еще раз доказывает, что тенденция к росту укрепляется.
Когда оба условия выполнены одновременно, открыть длинный.
Самое большое преимущество этой стратегии заключается в том, что она может эффективно идентифицировать тенденции с использованием комбинированного суждения EMA с несколькими периодами, чтобы избежать введения в заблуждение краткосрочным рыночным шумом.
Основным риском этой стратегии является длинная позиция. Когда рынок меняется, он не может закрыть позиции вовремя, что приводит к риску увеличения потерь. Кроме того, неправильное установление периода EMA также может привести к частой торговле и увеличению затрат на транзакции.
Увеличить управление размером позиций, чтобы сократить позиции, когда вывод достигнет определенного процента.
Увеличьте настройки стоп-лосса при попытке преодоления новых максимумов.
Оптимизировать параметры периода EMA для снижения частоты торгов.
Эта стратегия является в целом стабильной высококачественной долгосрочной стратегией холдинга. Она обладает сильной способностью определять тенденции с надлежащим контролем рисков. При дальнейшей оптимизации ожидается получение более стабильной доходности.
/*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)