Tendencia del sistema SMA siguiendo la estrategia

El autor:¿ Qué pasa?, Fecha: 2024-02-23 12:29:51
Las etiquetas:

img

Resumen general

La estrategia se llama SMA System Trend Following Strategy. La idea principal es construir señales comerciales basadas en las líneas SMA con diferentes longitudes de parámetros y entrar en el mercado en el punto de ruptura, con un mecanismo de stop loss para controlar el riesgo.

Principio de la estrategia

La estrategia utiliza dos líneas SMA, SMA1 y SMA2. La longitud de SMA1 es 1 y la longitud de SMA2 es 3. Al calcular estas dos líneas SMA, cuando SMA1 cruza por encima de SMA2, se genera una señal de compra. Cuando SMA1 cruza por debajo de SMA2, se genera una señal de venta. Esto tiene como objetivo capturar la tendencia del precio.

Específicamente, la estrategia juzga la relación de cruce entre las líneas SMA a través de las funciones ta.crossover y ta.crossunder, generando las variables booleanas longCondition y shortCondition. Cuando longCondition es verdad, se genera una señal de compra. Cuando shortCondition es verdad, se genera una señal de venta. La estrategia entrará en el mercado en el punto de señal y actualizará las variables profitAccumulated y lastTradeProfit para rastrear las ganancias acumuladas.

Para el control de riesgos, la estrategia también establece un mecanismo de stop loss basado en puntos fijos.

Análisis de ventajas

La mayor ventaja de esta estrategia es que utiliza la capacidad de seguimiento de tendencias de las líneas SMA para capturar eficazmente los cambios en las tendencias de precios.

Análisis de riesgos

El principal riesgo de esta estrategia es que la estrategia de promedio móvil tiende a generar señales falsas. Cuando el precio oscila, la línea SMA puede cruzarse con frecuencia, lo que resulta en señales comerciales innecesarias. En este punto, pueden ocurrir grandes pérdidas sin un stop loss efectivo.

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Ajustar los parámetros SMA para encontrar la mejor combinación de longitudes de media móvil a través de backtesting.

  2. Aumentar las condiciones de filtrado y establecer condiciones de ruptura de precios cerca del punto de cruce de la media móvil para evitar señales falsas.

  3. Se pueden probar diferentes tipos de métodos de stop loss, como stop loss móvil, stop loss de orden pendiente, etc.

  4. Añadir el control de tamaño de posición para optimizar la eficiencia de utilización del capital.

Conclusión

En general, esta es una estrategia típica de seguimiento de tendencias. Utiliza la relación de avance entre las líneas SMA para determinar la dirección de la tendencia del precio y entrar en el punto de inflexión de la tendencia. Al mismo tiempo, la estrategia tiene una función de stop loss fija para controlar los riesgos. La estrategia es simple, fácil de entender, pero aún necesita pruebas y optimización en profundidad antes de obtener ganancias estables en el comercio real.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © cesarpieres72

//@version=5
strategy("Estrategia SMA y Ganancias Acumuladas con Stop Loss", shorttitle="SMA_Ganancias", overlay=true)

// Definir las variables de las medias móviles
sma1_length = input(1, title="SMA 1 Longitud")
sma2_length = input(3, title="SMA 2 Longitud")

// Calcular las medias móviles
sma1 = ta.sma(close, sma1_length)
sma2 = ta.sma(close, sma2_length)

// Condiciones para las señales de compra y venta
longCondition = ta.crossover(sma1, sma2)
shortCondition = ta.crossunder(sma1, sma2)

// Acumular las ganancias
var float profitAccumulated = 0.0
var float lastTradeProfit = na

if (longCondition)
    strategy.entry("Buy", strategy.long)
    lastTradeProfit := strategy.netprofit - (profitAccumulated + lastTradeProfit)
    profitAccumulated := strategy.netprofit

if (shortCondition)
    strategy.entry("Sell", strategy.short)
    lastTradeProfit := strategy.netprofit - (profitAccumulated + lastTradeProfit)
    profitAccumulated := strategy.netprofit

// Mostrar las señales en el gráfico
plot(sma1, color=color.blue, title="SMA 1")
plot(sma2, color=color.red, title="SMA 2")

// Añadir stop loss
stopLossPips = input(5000, title="Stop Loss (en pips)")
stopLossPrice = strategy.position_avg_price * (1 - stopLossPips * syminfo.mintick)
strategy.exit("SL", "Buy", stop=stopLossPrice)


Más.