
La estrategia es una estrategia de comercio cuantitativa basada en el principio de doble equilátero cruzado. La estrategia produce una señal de compra cuando se atraviesa un SMA largo por encima de un SMA corto y una señal de venta cuando se atraviesa un SMA largo por debajo de un SMA corto. El código de la estrategia también introduce la configuración de un rango de fechas y marcos de tiempo, lo que permite la retroalimentación y optimización de la estrategia de manera flexible.
El principio central de esta estrategia es el uso de la relación cruzada entre los promedios móviles de diferentes períodos para capturar los cambios en la tendencia de los precios. Los promedios móviles son un indicador técnico de uso común que, al hacer un promedio de los precios durante un período de tiempo anterior, puede eliminar las fluctuaciones a corto plazo y reflejar la tendencia general de los precios.
La estrategia de cruce de doble equilátero SMA es una estrategia de comercio cuantitativa simple, fácil de entender y adaptable. Utilizando la relación de cruce de diferentes promedios móviles periódicos, la estrategia puede capturar de manera efectiva los cambios en la tendencia de los precios y proporcionar señales de compra y venta a los comerciantes. Sin embargo, el rendimiento de la estrategia puede ser más sensible a la selección de parámetros y puede generar un efecto de negociación frecuente y de retraso cuando la fluctuación del mercado es mayor. Para optimizar aún más la estrategia, se puede considerar la introducción de otros indicadores técnicos, la selección de parámetros optimizados, el aumento de las condiciones de filtrado, el ajuste dinámico de los parámetros y la adición de medidas de gestión del riesgo.
/*backtest
start: 2023-06-01 00:00:00
end: 2024-06-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SMA Crossover Strategy with Date Range and Timeframe", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1, initial_capital=1000, currency=currency.USD, pyramiding=0, commission_type=strategy.commission.percent, commission_value=0)
// Define the lengths for the short and long SMAs
shortSMA_length = input.int(50, title="Short SMA Length", minval=1)
longSMA_length = input.int(200, title="Long SMA Length", minval=1)
// Define the start and end dates for the backtest
startDate = input(timestamp("2024-06-01 00:00"), title="Start Date")
endDate = input(timestamp("2024-06-05 00:00"), title="End Date")
// Define the timeframe for the SMAs
smaTimeframe = input.timeframe("D", title="SMA Timeframe")
// Request the short and long SMAs from the selected timeframe
dailyShortSMA = request.security(syminfo.tickerid, smaTimeframe, ta.sma(close, shortSMA_length))
dailyLongSMA = request.security(syminfo.tickerid, smaTimeframe, ta.sma(close, longSMA_length))
// Plot the SMAs on the chart
plot(dailyShortSMA, color=color.blue, title="Short SMA")
plot(dailyLongSMA, color=color.red, title="Long SMA")
// Define the crossover conditions based on the selected timeframe SMAs
buyCondition = ta.crossover(dailyShortSMA, dailyLongSMA)
sellCondition = ta.crossunder(dailyShortSMA, dailyLongSMA)
// Generate buy and sell signals only if the current time is within the date range
if (buyCondition)
strategy.entry("Buy", strategy.long)
if (sellCondition)
strategy.close("Buy")
// Optional: Add visual buy/sell markers on the chart
plotshape(series=buyCondition and (time >= startDate and time <= endDate), title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sellCondition and (time >= startDate and time <= endDate), title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")