La estrategia se llama
La lógica central de esta estrategia es realizar un seguimiento del cruce de precios con una media móvil simple (SMA) de 21 días. Mientras tanto, también calcula una SMA de 50 días y una SMA de 200 días para determinar la tendencia general.
Específicamente, la estrategia solicita el cierre del precio dentro de un rango de fechas dado y calcula diferentes SMAs basados en períodos de entrada. Si el precio rompe la SMA de 21 días hacia arriba, establece una señal de compra. Si el precio rompe la SMA de 21 días hacia abajo, establece una señal de venta.
Junto con el cálculo de SMA y la determinación de cruces, la estrategia también rastrea la posición actual.
La mayor ventaja de esta estrategia es que es simple y fácil de entender e implementar. SMA es un indicador técnico comúnmente utilizado y el cruce SMA es una de las señales comerciales más comunes. Este tipo de estrategias de cruce de indicadores se pueden aplicar fácilmente a diferentes acciones y rango de tiempo para el comercio automatizado.
Otra ventaja es que esta estrategia se puede optimizar ajustando los parámetros de SMA. Por ejemplo, podemos probar diferentes combinaciones de períodos de SMA para encontrar el óptimo para acciones específicas. Además, la estrategia se puede mejorar agregando otros indicadores para confirmación y optimización.
El mayor riesgo de esta estrategia es que las estrategias basadas en indicadores tienden a generar señales falsas excesivas.
Las soluciones comunes incluyen el establecimiento de stop loss, ajuste de parámetros o la adición de condiciones de filtro. Por ejemplo, podemos establecer la relación de pérdida máxima para limitar el riesgo, ajustar los períodos de SMA para encontrar parámetros más estables o usar otros indicadores para filtrar algunas señales comerciales.
La estrategia se puede optimizar en los siguientes aspectos:
Prueba y selecciona las combinaciones óptimas de parámetros SMA. Prueba de nuevo diferentes longitudes SMA para encontrar los mejores períodos.
Añadir otros indicadores para filtrar la confirmación de la señal, como RSI, MACD, etc. Esto ayuda a filtrar las señales falsas.
Incorporar la lógica de stop loss. Establecer la pérdida máxima tolerable o el stop de trailing para controlar mejor los riesgos.
Optimice el tiempo de entrada. Considere entrar alrededor de las principales rupturas en lugar de seguir estrictamente el cruce de SMA.
Prueba estrategias compuestas y combina con otros tipos de estrategias como seguir tendencias.
La estrategia realiza el comercio automatizado con señales de cruce SMA simples. Los pros son fáciles de entender e implementar. Los contras son señales excesivas y propensas a golpes. Podemos mejorarla ajustando parámetros, agregando filtros, stop loss, etc. La estrategia nos proporciona un marco básico. Podemos enriquecerla incorporando más componentes.
/*backtest start: 2023-02-15 00:00:00 end: 2024-02-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Price Cross Above/Below SMA Strategy", shorttitle="Tressy Strat", overlay=true) // Define start and end year inputs start_year = input.int(2022, title="Start Year") end_year = input.int(2022, title="End Year") // Define start and end month inputs start_month = input.int(1, title="Start Month", minval=1, maxval=12) end_month = input.int(12, title="End Month", minval=1, maxval=12) // Define SMA length inputs sma_length = input.int(21, title="SMA Length") sma_length_50 = input.int(50, title="50 SMA Length") sma_length_200 = input.int(200, title="200 SMA Length") // Filter data within the specified date range filter_condition = true filtered_close = request.security(syminfo.tickerid, "D", close[0], lookahead=barmerge.lookahead_on) // Define SMAs using the input lengths sma = ta.sma(filtered_close, sma_length) sma_50 = ta.sma(filtered_close, sma_length_50) sma_200 = ta.sma(filtered_close, sma_length_200) // Initialize position var bool in_position = false // Condition for a price cross above SMA within the date range cross_above = filter_condition and ta.crossover(filtered_close, sma) // Condition for a price cross below SMA within the date range cross_below = filter_condition and ta.crossunder(filtered_close, sma) // Buy condition if cross_above in_position := true // Sell condition if cross_below in_position := false // Strategy entry and exit if cross_above strategy.entry("Buy", strategy.long) if cross_below strategy.close("Buy") // Plot the SMAs on the chart plot(sma, color=color.blue, title="21 SMA") plot(sma_50, color=color.red, title="50 SMA") plot(sma_200, color=color.orange, title="200 SMA") // Plot the Buy and Sell signals with "tiny" size plotshape(cross_above, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.tiny, title="Buy Signal") plotshape(cross_below, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny, title="Sell Signal")