Tendencia del canal de media móvil de varios períodos siguiendo la estrategia

El autor:¿ Qué pasa?, Fecha: 2024-02-20 13:45:42
Las etiquetas:

img

Resumen general

Esta es una estrategia de swing diseñada para mercados de tendencias como criptomonedas y acciones, utilizando grandes marcos de tiempo como 8 horas.

Ir largo cuando el cierre está por encima de la línea media aplicada a alto. Ir corto cuando el cierre está por debajo de la línea media aplicada a bajo.

Estrategia lógica

La estrategia utiliza 7 tipos diferentes de promedios móviles, incluidos SMA, EMA, VWMA, ALMA, SMMA, LSMA y VWMA. Estos MAs se aplican por separado a los precios más altos y más bajos de las velas para generar dos líneas promedio.

La línea media aplicada a los precios altos se llama avg_high. La aplicada a los precios bajos se llama avg_low. Estas dos líneas forman un canal.

Ir largo cuando el cierre está por encima de AVG_high. Ir corto cuando el cierre está por debajo de AVG_low.

El stop loss para el largo es avg_low. Tome ganancia es el precio de entrada *(1 + tp_long). En resumen, stop loss es avg_high, tomar ganancia es el precio de entrada *(1 - tp_short).

Análisis de ventajas

La mayor ventaja de esta estrategia es la utilización de múltiples promedios móviles para mejorar la rentabilidad.

Otra ventaja es el enfoque de canal, que limita el rango de stop loss y reduce el riesgo adecuado para el swing trading.

Análisis de riesgos

La estrategia tiene dos riesgos principales:

  1. La combinación de múltiples MAs hace que el ajuste de parámetros sea complejo y requiera muchas pruebas y optimización para encontrar el mejor.

  2. En los mercados laterales o sin tendencia, la estrategia tiende a generar pérdidas y pérdidas.

Para mitigar los riesgos, elija productos con tendencias claras y realice extensas pruebas de retroceso y optimización para encontrar parámetros adecuados para las condiciones actuales del mercado.

Direcciones de optimización

Áreas de mejora:

  1. Prueba más tipos de MAs para encontrar mejores combinaciones, como SMA, EMA, KAMA, TEMA, etc.

  2. Optimizar las longitudes de los MAs y el ancho del canal para determinar los parámetros óptimos.

  3. Prueba diferentes mecanismos de tomar ganancias y detener pérdidas como paradas de seguimiento o paradas dinámicas.

  4. Incorpore métricas de tendencia como ADX, ATR para evitar problemas durante los mercados agitados.

  5. Optimice las lógicas de entrada y salida con filtros adicionales para reducir las operaciones no válidas.

Resumen de las actividades

Esta estrategia de tendencia cambiante mejora la rentabilidad utilizando múltiples MAs y reduce el riesgo a través de canales. Funciona bien para productos de tendencia después de la optimización de parámetros. Pero puede sufrir grandes pérdidas en inversiones de tendencia. Se necesitan más optimizaciones para mitigar los riesgos a la baja.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=4

strategy(title="High/Low channel swing", shorttitle="Multi MA swing", overlay=true)


fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

//////
length_ma= input(defval=12, title="Length Moving averages", minval=1)

////////////////////////////////SETUP///////////////////////////////////////////

sma_high   = sma(high, length_ma)
ema_high   = ema(high, length_ma)
wma_high   = wma(high, length_ma)
alma_high  = alma(high,length_ma, 0.85, 6)
smma_high = rma(high,length_ma)
lsma_high = linreg(high, length_ma, 0)
vwma_high = vwma(high,length_ma)



avg_high = (sma_high+ema_high+wma_high+alma_high+smma_high+lsma_high+vwma_high)/7

///////////////////////////////////////////

sma_low   = sma(low, length_ma)
ema_low   = ema(low, length_ma)
wma_low   = wma(low, length_ma)
alma_low  = alma(low,length_ma, 0.85, 6)
smma_low = rma(low,length_ma)
lsma_low = linreg(low, length_ma, 0)
vwma_low = vwma(low,length_ma)



avg_low = (sma_low+ema_low+wma_low+alma_low+smma_low+lsma_low+vwma_low)/7

////////////////////////////PLOTTING////////////////////////////////////////////


plot(avg_high , title="avg", color=color.green, linewidth = 4)
plot(avg_low , title="avg", color=color.red, linewidth = 4)

long= close > avg_high
short = close < avg_low

tplong=input(0.06, title="TP Long", step=0.01)
sllong=input(0.05, title="SL Long", step=0.01)

tpshort=input(0.045, title="TP Short", step=0.01)
slshort=input(0.05, title="SL Short", step=0.01)

if(time_cond)
    strategy.entry("long",1,when=long)
    strategy.exit("closelong", "long" , profit = close * tplong / syminfo.mintick, loss = close * sllong / syminfo.mintick, alert_message = "closelong")
    strategy.close("long", when=crossunder(low,avg_low))
    
    
    strategy.entry("short",0,when=short)
    strategy.exit("closeshort", "short" , profit = close * tpshort / syminfo.mintick, loss = close * slshort / syminfo.mintick, alert_message = "closeshort")
    strategy.close("short",when=crossover(high,avg_high))



Más.