Estrategia de negociación cuantitativa basada en el cruce de precios con SMA

El autor:¿ Qué pasa?, Fecha: 2024-02-22 17:34:09
Las etiquetas:

img

Resumen general

La estrategia se llama Quantitative Trading Strategy Based on Price Crossover with SMA. Generará principalmente señales comerciales calculando SMA de diferentes períodos y rastreando el cruce de precios con SMA. Cuando el precio rompe SMA hacia arriba, desencadena una señal de compra. Cuando el precio rompe SMA hacia abajo, desencadena una señal de venta.

Estrategia lógica

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.

Análisis de ventajas

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.

Riesgos y soluciones

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.

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Prueba y selecciona las combinaciones óptimas de parámetros SMA. Prueba de nuevo diferentes longitudes SMA para encontrar los mejores períodos.

  2. 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.

  3. Incorporar la lógica de stop loss. Establecer la pérdida máxima tolerable o el stop de trailing para controlar mejor los riesgos.

  4. Optimice el tiempo de entrada. Considere entrar alrededor de las principales rupturas en lugar de seguir estrictamente el cruce de SMA.

  5. Prueba estrategias compuestas y combina con otros tipos de estrategias como seguir tendencias.

Conclusión

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")


Más.