
La estrategia es un sistema de seguimiento de tendencias basado en el cruce de dos líneas de equilibrio, que capta las tendencias del mercado a través de la cruz de las medias móviles a corto y largo plazo y gestiona el riesgo de negociación con una relación de riesgo-beneficio de 1: 3. La estrategia utiliza objetivos de pérdidas y ganancias fijos, mientras que combina un mecanismo de pérdidas móviles para proteger las ganancias.
La estrategia utiliza un promedio móvil corto de 74 períodos (SMA corto) y un promedio móvil largo de 70 períodos (SMA largo) como indicadores principales. Cuando el promedio corto cruza hacia arriba el promedio largo, el sistema genera una señal de más; cuando el promedio corto cruza hacia abajo el promedio largo, el sistema genera una señal de vacío. El tamaño de la posición por transacción se fija en 0.002 dólares, el stop loss se establece en 353 dólares y el objetivo de ganancia es 3 veces el stop loss (USD 1059).
Esta es una estrategia de seguimiento de tendencias estructurada y con claridad lógica. La estrategia de estabilidad y rentabilidad se espera que se mejore aún más a través de la introducción de la dirección de optimización recomendada, especialmente la introducción de ajustes de parámetros dinámicos y filtros de entorno de mercado.
/*backtest
start: 2024-02-18 00:00:00
end: 2025-02-17 00:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Bitcoin Strategy by Jag", overlay=true)
// Input Parameters
shortSMALength = input.int(74, title="Short SMA Length")
longSMALength = input.int(70, title="Long SMA Length")
trailStopOffset = input.float(353, title="Trailing Stop Offset (USD)") // Trailing Stop Loss Offset in USD
tradeSize = input.float(1, title="Trade Size")
// Automatically set Take Profit as 3 times Stop Loss
fixedTakeProfit = trailStopOffset * 3
// Backtesting Date Range
startDate = timestamp(2025, 02,13, 0, 0)
endDate = timestamp(2025, 03, 31, 23, 59)
withinDateRange = true
// Indicators
shortSMA = ta.sma(close, shortSMALength)
longSMA = ta.sma(close, longSMALength)
// Crossover Conditions
longCondition = withinDateRange and ta.crossover(shortSMA, longSMA)
shortCondition = withinDateRange and ta.crossunder(shortSMA, longSMA)
// Entry Logic
if (strategy.position_size == 0) // Only allow new trades if no position is open
if (longCondition)
strategy.entry("Long", strategy.long, tradeSize)
if (shortCondition)
strategy.entry("Short", strategy.short, tradeSize)
// Exit Logic for Long Position
if (strategy.position_size > 0)
strategy.exit("Long exit", "Long", stop=strategy.position_avg_price - trailStopOffset, limit=strategy.position_avg_price + fixedTakeProfit) // Using stop and limit
// Exit Logic for Short Position
if (strategy.position_size < 0)
strategy.exit("Short Exit", "Short", stop=strategy.position_avg_price + trailStopOffset, limit=strategy.position_avg_price - fixedTakeProfit) // Using stop and limit
// Plot Moving Averages
plot(shortSMA, color=color.blue, title="Short SMA")
plot(longSMA, color=color.black, title="Long SMA")
// Visual Signals
plotshape(series=longCondition and strategy.position_size == 0, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", size=size.small)
plotshape(series=shortCondition and strategy.position_size == 0, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", size=size.small)