
La estrategia es un sistema de negociación basado en el cruce de líneas de doble equinoccio, que se realiza mediante la supervisión de las situaciones de cruce de los promedios móviles del índice de 9 ciclos y 21 ciclos (EMA). La estrategia se ejecuta en un marco de tiempo de 10 minutos y utiliza un modelo de negociación de una sola vez, es decir, no se reabre la posición cuando se mantiene la posición. El sistema utiliza un capital inicial de 100.000, y cada operación se realiza con el 10% de los intereses de la cuenta.
El principio central de la estrategia es aprovechar las características de los EMA de corto plazo que son más sensibles a los cambios en los precios del mercado que los EMA de largo plazo. Cuando los EMA de corto plazo (ciclo 9) suben a través de los EMA de largo plazo (ciclo 21), lo que indica un aumento de la capacidad de fluctuación ascendente a corto plazo, el sistema emite varias señales.
Esta es una estrategia equilánea de cruce diseñada de manera racional y lógica. A través de la captura de tendencias de mercado en EMA cruzados, en combinación con el modelo de negociación de una sola vez y la gestión de la posición porcentual, se logra un equilibrio entre el riesgo y la ganancia. A pesar de algunas limitaciones inherentes, la estabilidad y la adaptabilidad de la estrategia se pueden mejorar aún más mediante la orientación de optimización de las recomendaciones.
/*backtest
start: 2024-02-25 00:00:00
end: 2025-02-22 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=6
strategy("EMA Crossover Labels (One Trade at a Time)", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// ==== User Inputs ====
// Set the testing timeframe (ensure the chart is on a 10-min timeframe)
testTimeFrame = input.timeframe("10", "Strategy Timeframe")
// EMA period inputs
emaPeriod9 = input.int(9, "EMA 9 Period", minval=1)
emaPeriod21 = input.int(21, "EMA 2q Period", minval=1)
// ==== Retrieve Price Data ====
// For simplicity, we use the chart's timeframe (should be 10-min)
price = close
// ==== Calculate EMAs ====
ema9 = ta.ema(price, emaPeriod9)
ema21 = ta.ema(price, emaPeriod21)
// ==== Define Crossover Conditions ====
// Buy signal: when EMA9 crosses above EMA21 AND no current position is open
buySignal = ta.crossover(ema9, ema21) and strategy.position_size == 0
// Sell signal: when EMA9 crosses below EMA21 AND a long position is active
sellSignal = ta.crossunder(ema9, ema21) and strategy.position_size > 0
// ==== Strategy Orders ====
// Enter a long position when a valid buy signal occurs
if buySignal
strategy.entry("Long", strategy.long)
alert("Long Signal: " + syminfo.tickerid + " - EMA9 crossed above EMA21", alert.freq_once_per_bar_close)
// Exit the long position when a valid sell signal occurs
if sellSignal
strategy.close("Long")
alert("Sell Long Signal: " + syminfo.tickerid + " - EMA9 crossed below EMA21", alert.freq_once_per_bar_close)
// ==== Plot Buy/Sell Labels ====
// Only plot a "Buy" label if there's no open position
plotshape(buySignal, title="Buy Label", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy", textcolor=color.white)
// Only plot a "Sell" label if a position is active
plotshape(sellSignal, title="Sell Label", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell", textcolor=color.white)
// ==== Plot EMAs for Visualization ====
plot(ema9, color=color.blue, title="EMA 21")
plot(ema21, color=color.orange, title="EMA 21")