
La estrategia es un sistema de comercio de seguimiento de tendencias basado en múltiples medias móviles de índices (EMA) y amplitud de fluctuación real (ATR). La estrategia capta las tendencias del mercado mediante la combinación de tres EMA de 20 ciclos, 50 ciclos y 100 ciclos, y utiliza ATR para la gestión de riesgos y el establecimiento de objetivos de ganancias dinámicos. Este método garantiza tanto la sistematización de las operaciones como el control dinámico del riesgo.
La lógica central de la estrategia se basa en la interacción entre el precio y los múltiples EMA. En concreto:
La estrategia, mediante la combinación de un sistema de líneas medias múltiples y un control de viento dinámico ATR, construye un sistema de negociación con características de seguimiento de tendencias y operación de bandas de onda. La estrategia tiene la ventaja de ser sistemática y de ser controlada por el riesgo, pero en la aplicación real se necesita prestar atención a la adaptabilidad al entorno del mercado y optimizar de manera específica según las circunstancias reales.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("EMA Swing Strategy with ATR", overlay=true)
// Inputs
emaShort = input.int(20, "Short EMA")
emaMid = input.int(50, "Mid EMA")
emaLong = input.int(100, "Long EMA")
rrRatio = input.float(1.5, "Risk-Reward Ratio")
contracts = input.int(5, "Number of Contracts")
// Calculations
ema20 = ta.ema(close, emaShort)
ema50 = ta.ema(close, emaMid)
ema100 = ta.ema(close, emaLong)
atr = ta.atr(14)
// Conditions
longCondition = ta.crossover(close, ema20) and close > ema50
shortCondition = ta.crossunder(close, ema20) and close < ema50
// Variables for trades
var float entryPrice = na
var float stopLoss = na
var float takeProfit = na
// Long Trades
if (longCondition)
entryPrice := close
stopLoss := close - atr
takeProfit := close + atr * rrRatio
strategy.entry("Long", strategy.long, contracts)
strategy.exit("Exit Long", from_entry="Long", stop=stopLoss, limit=takeProfit)
// Short Trades
if (shortCondition)
entryPrice := close
stopLoss := close + atr
takeProfit := close - atr * rrRatio
strategy.entry("Short", strategy.short, contracts)
strategy.exit("Exit Short", from_entry="Short", stop=stopLoss, limit=takeProfit)
// Plot EMAs
plot(ema20, color=color.green, title="EMA 20")
plot(ema50, color=color.red, title="EMA 50")
plot(ema100, color=color.white, title="EMA 100")
// Visualization for Entries
plotshape(series=longCondition, style=shape.labelup, color=color.green, location=location.belowbar, title="Long Entry")
plotshape(series=shortCondition, style=shape.labeldown, color=color.red, location=location.abovebar, title="Short Entry")