Estrategia de la media móvil doble de la súper tendencia

El autor:¿ Qué pasa?, Fecha: 2024-01-16 15:19:09
Las etiquetas:

img

Resumen general

La Super Trend Dual Moving Average Strategy es una estrategia de trading cuantitativa basada en el indicador de Super Trend y la media móvil simple.

Estrategia lógica

La estrategia utiliza dos indicadores:

  1. Indicador de tendencia súper: Calcula los rieles superiores e inferiores basados en la verdadera volatilidad ATR y un multiplicador. Cuando el precio de cierre es superior al rieles superior, indica una visión alcista. Cuando es inferior al rieles inferior, indica una visión bajista.

  2. Promedio móvil simple de 200 días: toma el promedio aritmético de los precios de cierre en los últimos 200 días. Cuando el precio de cierre es superior a esta línea, representa una tendencia alcista importante. Cuando es inferior a esta línea, representa una tendencia bajista importante.

Estrategia lógica:

  1. Cuando el indicador de Super Tendencia dé una señal alcista (valor de Super Tendencia superior a 0) y el precio de cierre sea superior al MA de 200 días, vaya largo.

  2. Cuando el indicador de Super Tendencia dé una señal bajista (valor de Super Tendencia inferior a 0) y el precio de cierre sea inferior al MA de 200 días, vaya corto.

  3. Cierre la posición cuando el indicador Super Trend dé una señal inversa respecto a la anterior.

  4. El stop loss está establecido en 25%.

Análisis de ventajas

La estrategia combina el indicador Super Trend para determinar la tendencia a corto plazo y el MA de 200 días para determinar la tendencia a largo plazo, que puede filtrar eficazmente las falsas rupturas, reducir la frecuencia de negociación al tiempo que mejora la tasa de ganancia.

Análisis de riesgos

El principal riesgo de esta estrategia es que el rango de stop loss es relativamente grande. Puede aumentar el riesgo de liquidación forzada en situaciones de alto apalancamiento. Además, cuando el mercado está limitado al rango, el indicador Super Trend generará señales redundantes, aumentando así los costos de transacción y la frecuencia de negociación.

El riesgo puede reducirse ajustando adecuadamente el período de ATR, los parámetros del multiplicador y el intervalo de stop loss.

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Ajustar el período ATR y los parámetros del multiplicador para optimizar el indicador Super Trend.

  2. Pruebe otros indicadores de MA como EMA y VIDYA para su sustitución.

  3. Se añadirán otros indicadores auxiliares como el canal BOLL o el indicador KD para un mayor filtrado de la señal.

  4. Optimice la estrategia de stop loss, como moverla al punto de equilibrio o a la parada posterior junto con niveles de marco de tiempo más altos.

Resumen de las actividades

En general, esta estrategia es muy práctica. Considera tanto el juicio de tendencia a corto plazo como el juicio de tendencia a largo plazo con ajustes razonables de stop loss. Puede lograr mejores resultados a través del ajuste y optimización de parámetros, lo que vale la pena una verificación y aplicación de operaciones reales.


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

// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © wielkieef

//@version=5

strategy("Smart SuperTrend Strategy ", shorttitle="ST Strategy", overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=25, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.01)


// Parametry wskaźnika SuperTrend
atrLength = input(10, title="Lenght ATR")
factor = input(3.0, title="Mult.")

// Parametry dla SMA
lengthSMA = input(200, title="Lenght SMA")

// Parametry dla Stop Loss
sl = input.float(25.0, '% Stop Loss', step=0.1)

// Obliczanie ATR
atr = ta.atr(atrLength)

// Obliczanie podstawowej wartości SuperTrend
up = hl2 - (factor * atr)
dn = hl2 + (factor * atr)

// Obliczanie 200-SMA
sma200 = ta.sma(close, lengthSMA)

// Inicjalizacja zmiennych
var float upLevel = na
var float dnLevel = na
var int trend = na
var int trendWithFilter = na

// Logika SuperTrend
upLevel := close[1] > upLevel[1] ? math.max(up, upLevel[1]) : up
dnLevel := close[1] < dnLevel[1] ? math.min(dn, dnLevel[1]) : dn

trend := close > dnLevel[1] ? 1 : close < upLevel[1] ? -1 : nz(trend[1], 1)

// Filtr SMA i aktualizacja trendWithFilter
trendWithFilter := close > sma200 ? math.max(trend, 0) : math.min(trend, 0)

// Logika wejścia
longCondition = trend == 1  
shortCondition = trend == -1  

// Wejście w pozycje
if (longCondition) and  close > sma200
    strategy.entry("Long", strategy.long)
if (shortCondition) and close < sma200
    strategy.entry("Short", strategy.short)

// Warunki zamknięcia pozycji
Long_close = trend == -1 and close > sma200
Short_close = trend == 1  and close < sma200

// Zamknięcie pozycji
if (Long_close)
    strategy.close("Long")
if (Short_close)
    strategy.close("Short")

// Kolory superTrendu z filtrem sma200
trendColor = trendWithFilter == 1 ? color.green : trendWithFilter == -1 ? color.red : color.blue

//ploty
plot(trendWithFilter == 1 ? upLevel : trendWithFilter == -1 ? dnLevel : na, color=trendColor, title="SuperTrend")

// Stop Loss ( this code is from author RafaelZioni, modified by wielkieef )
per(procent) =>
    strategy.position_size != 0 ? math.round(procent / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
// --------------------------------------------------------------------------------------------------------------------

strategy.exit('SL',loss=per(sl))



//by wielkieef


Más.