
La estrategia es un sistema de trading cuantitativo que combina una media móvil exponencial doble (EMA) y un oscilador estocástico. Utilice las EMA de 20 y 50 períodos para determinar las tendencias del mercado y utilice el oscilador estocástico para encontrar oportunidades comerciales en áreas de sobrecompra y sobreventa, logrando una combinación perfecta de tendencia y impulso. La estrategia emplea estrictas medidas de gestión de riesgos, incluyendo la configuración de objetivos de ganancias y stop loss fijos.
La lógica central de la estrategia se divide en tres partes: juicio de tendencia, momento de entrada y control de riesgos. El juicio de tendencia se basa principalmente en la posición relativa de la EMA rápida (20 períodos) y la EMA lenta (50 períodos). Cuando la línea rápida está por encima de la línea lenta, se considera que hay una tendencia alcista; de lo contrario, es una tendencia bajista. . La señal de entrada se confirma mediante el cruce del oscilador estocástico, buscando oportunidades comerciales de alta probabilidad en las zonas de sobrecompra y sobreventa. El control de riesgos utiliza un stop loss de porcentaje fijo y una configuración de ratio de toma de beneficios de 2x para garantizar que cada transacción tenga una relación riesgo-retorno clara.
Esta estrategia combina indicadores de tendencia y impulso para crear un sistema de trading completo. La principal ventaja de la estrategia reside en su marco lógico claro y su estricto control de riesgos, pero en la aplicación real aún se requiere la optimización de parámetros en función de las condiciones específicas del mercado. Se espera que mediante la mejora y optimización continuas, la estrategia mantenga un desempeño estable en diversos entornos de mercado.
/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("EMA + Stochastic Strategy", overlay=true)
// Inputs for EMA
emaShortLength = input.int(20, title="Short EMA Length")
emaLongLength = input.int(50, title="Long EMA Length")
// Inputs for Stochastic
stochK = input.int(14, title="Stochastic %K Length")
stochD = input.int(3, title="Stochastic %D Smoothing")
stochOverbought = input.int(85, title="Stochastic Overbought Level")
stochOversold = input.int(15, title="Stochastic Oversold Level")
// Inputs for Risk Management
riskRewardRatio = input.float(2.0, title="Risk-Reward Ratio")
stopLossPercent = input.float(1.0, title="Stop Loss (%)")
// EMA Calculation
emaShort = ta.ema(close, emaShortLength)
emaLong = ta.ema(close, emaLongLength)
// Stochastic Calculation
k = ta.stoch(high, low, close, stochK)
d = ta.sma(k, stochD)
// Trend Condition
isUptrend = emaShort > emaLong
isDowntrend = emaShort < emaLong
// Stochastic Signals
stochBuyCrossover = ta.crossover(k, d)
stochBuySignal = k < stochOversold and stochBuyCrossover
stochSellCrossunder = ta.crossunder(k, d)
stochSellSignal = k > stochOverbought and stochSellCrossunder
// Entry Signals
buySignal = isUptrend and stochBuySignal
sellSignal = isDowntrend and stochSellSignal
// Strategy Execution
if buySignal
strategy.entry("Buy", strategy.long)
stopLoss = close * (1 - stopLossPercent / 100)
takeProfit = close * (1 + stopLossPercent * riskRewardRatio / 100)
strategy.exit("Take Profit/Stop Loss", from_entry="Buy", stop=stopLoss, limit=takeProfit)
if sellSignal
strategy.entry("Sell", strategy.short)
stopLoss = close * (1 + stopLossPercent / 100)
takeProfit = close * (1 - stopLossPercent * riskRewardRatio / 100)
strategy.exit("Take Profit/Stop Loss", from_entry="Sell", stop=stopLoss, limit=takeProfit)
// Plotting
plot(emaShort, color=color.blue, title="Short EMA")
plot(emaLong, color=color.red, title="Long EMA")