
A estratégia é um sistema de negociação quantitativa que combina uma média móvel exponencial dupla (MME) e um oscilador estocástico. Use EMAs de 20 e 50 períodos para determinar tendências de mercado e use o oscilador estocástico para encontrar oportunidades de negociação em áreas de sobrecompra e sobrevenda, alcançando uma combinação perfeita de tendência e momentum. A estratégia emprega medidas rigorosas de gerenciamento de risco, incluindo configurações fixas de stop loss e metas de lucro.
A lógica central da estratégia é dividida em três partes: julgamento de tendências, momento de entrada e controle de risco. O julgamento de tendência depende principalmente da posição relativa da EMA rápida (20 períodos) e da EMA lenta (50 períodos). Quando a linha rápida está acima da linha lenta, é considerada uma tendência ascendente, caso contrário, é uma tendência descendente . O sinal de entrada é confirmado pelo cruzamento do oscilador estocástico, buscando oportunidades de negociação de alta probabilidade nas áreas de sobrecompra e sobrevenda. O controle de risco usa um stop loss percentual fixo e uma configuração de taxa de lucro de 2x para garantir que cada transação tenha uma relação risco-retorno clara.
Esta estratégia combina indicadores de tendência e momentum para criar um sistema de negociação completo. A principal vantagem da estratégia está em sua estrutura lógica clara e no rigoroso controle de risco, mas na aplicação real, a otimização de parâmetros ainda é necessária com base em condições específicas de mercado. Por meio de melhoria e otimização contínuas, espera-se que a estratégia mantenha um desempenho estável em vários ambientes 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")