En la carga de los recursos... Cargando...

La tendencia sigue la estrategia

El autor:¿ Qué pasa?, Fecha: 2023-11-06 10:34:19
Las etiquetas:

img

Resumen general

La estrategia de seguimiento de tendencias es una estrategia de trading de tendencias basada en el cruce de medias móviles. Utiliza el cruce de una media móvil exponencial (EMA) y una media móvil de Hull (HMA) para determinar la dirección de la tendencia y generar señales comerciales en consecuencia.

Estrategia lógica

La estrategia emplea dos promedios móviles con parámetros diferentes: una EMA más rápida y una HMA más lenta.

Cuando la EMA más rápida cruza por encima de la HMA más lenta, se considera el comienzo de una tendencia al alza, y la estrategia colocará una orden larga al precio de mercado en la siguiente barra abierta.

Para optimizar el tiempo de entrada, la estrategia incorpora una opción Heikin-Ashi. Cuando se activa, las señales de compra y venta se basarán en barras Heikin-Ashi en lugar de velas normales.

La estrategia también emplea una configuración de stop loss. Cuando la pérdida de posición alcanza el porcentaje de stop loss preestablecido, la posición se cerrará al precio de mercado, limitando la pérdida máxima por operación.

Análisis de ventajas

Las ventajas de esta estrategia incluyen:

  1. El uso del cruce de EMA y HMA para determinar las tendencias puede aprovechar las diferentes medias móviles de período y mejorar la precisión.

  2. El comercio basado en las tendencias evita agitarse en oscilaciones menores y reduce las operaciones innecesarias.

  3. La opción Heikin-Ashi optimiza el tiempo de entrada filtrando las señales falsas.

  4. El stop loss móvil limita efectivamente la pérdida máxima por operación.

  5. Los parámetros personalizables permiten la optimización para diferentes productos y plazos.

Análisis de riesgos

Los riesgos de esta estrategia incluyen:

  1. Como sistema de seguimiento de tendencias, su rendimiento es inferior durante los mercados de rango.

  2. Puede incurrir en grandes pérdidas cuando se produce una inversión de tendencia.

  3. Los ajustes incorrectos de la parada de pérdidas pueden causar paradas innecesarias o aumentar las pérdidas.

  4. El mal ajuste de los parámetros puede llevar a un exceso de comercio o a la inacción.

  5. Los períodos de EMA y HMA requieren optimización para diferentes productos y plazos.

  6. Heikin-Ashi no puede evitar completamente el riesgo de fuga falsa.

Direcciones de optimización

La estrategia puede mejorarse en los siguientes aspectos:

  1. Utilice más indicadores como MACD, KDJ para mejorar la precisión de la tendencia.

  2. Añadir más filtros tales como el volumen, ATR para reducir las fallas.

  3. Optimizar los parámetros de las medias móviles en función de los productos y los plazos.

  4. Ajuste el porcentaje de stop loss para un mejor comportamiento de stop loss.

  5. Considere las características de toma de ganancias como el movimiento de la parada de ganancias y la toma parcial de ganancias.

  6. Prueba de formas alternativas para calcular la base de costos de posición para la optimización.

Resumen de las actividades

La estrategia de seguimiento de tendencias identifica tendencias utilizando cruces de promedios móviles y optimiza el rendimiento a través de Heikin-Ashi y stop loss móviles. Es adecuado para el comercio de tendencias a medio y largo plazo, y puede mejorarse aún más a través de la puesta a punto de parámetros y la expansión de características. Pero los usuarios deben ser conscientes de los riesgos de reversiones y stop loss inadecuados. En general, proporciona un marco universal y personalizable para el comercio de tendencias que funciona en diferentes productos y marcos de tiempo. Se necesita una prueba de parámetros adecuada al aplicarlo.


/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("𝐉𝐔𝐈𝐂𝐘 𝐓𝐑𝐄𝐍𝐃", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=15)

//Heikin Ashi Option
ha = input(true, title = "Heikin Ashi Source")
src = ha ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, barmerge.gaps_off, barmerge.lookahead_off) : close
usestoploss = input(true, title="Stop Loss")

//EMA
len1 = input.int(9, minval=1, title="EMA Length")
ema = ta.ema(src, len1)
emaline = plot(ema, title="EMA", color=color.blue, linewidth=2)

//HMA
len2 = input.int(69, minval=1, title="HMA Length")
hma = ta.wma(2*ta.wma(src, len2/2)-ta.wma(src, len2), math.floor(math.sqrt(len2)))
hmaline = plot(hma, title="HMA", color=color.purple, linewidth=2)
fillcolor = hma < ema ? color.blue : color.purple
fill(emaline, hmaline, title="EMA Fill", color=color.new(fillcolor, 80), editable=true)

//Stop Loss Conditions
stoplosspercent = input.float(title="Stop Loss (%)", defval=-6.5, minval=-50, maxval=0, step=.1) / 100
stoploss = strategy.position_avg_price * (1 + stoplosspercent)
stop = stoploss > close and stoploss[1] < close[1] and strategy.position_size > 0 and usestoploss

//Buy Sell Conditions
buy = hma < ema
sell = hma > ema

//Trades and Alerts
if buy
	strategy.entry("Long Position", strategy.long, comment="BUY")
//	alert("{\n\"message_type\": \"bot\",\n\"bot_id\": 6477543,\n\"email_token\": \"9b842a1b-9cb4-48ac-9ed4-524c98557e5f\",\n\"delay_seconds\": 0\n}", alert.freq_once_per_bar)
if sell and strategy.openprofit > 0
	strategy.close("Long Position", comment="SELL")
//	alert("{\n\"action\": \"close_at_market_price\",\n\"message_type\": \"bot\",\n\"bot_id\": 6477543,\n\"email_token\": \"9b842a1b-9cb4-48ac-9ed4-524c98557e5f\",\n\"delay_seconds\": 0\n}", alert.freq_once_per_bar)
if stop
    strategy.close("Long Position", comment="STOP")
//    alert("{\n\"action\": \"close_at_market_price\",\n\"message_type\": \"bot\",\n\"bot_id\": 6477543,\n\"email_token\": \"9b842a1b-9cb4-48ac-9ed4-524c98557e5f\",\n\"delay_seconds\": 0\n}", alert.freq_once_per_bar)

//Alternate Labels
var pos = 0
if buy and pos <= 0
    pos := 1
if sell and pos >= 0
    pos := -1
buylabel  = pos ==  1 and (pos !=  1)[1]
selllabel = pos == -1 and (pos != -1)[1]

//Plot Labels
plotshape(buylabel,  style=shape.labelup,   location=location.belowbar, color=color.blue,   text="BUY",  textcolor=color.white, size=size.tiny)
plotshape(selllabel, style=shape.labeldown, location=location.abovebar, color=color.purple, text="SELL", textcolor=color.white, size=size.tiny)
plotshape(stop,      style=shape.labeldown, location=location.abovebar, color=color.yellow, text="STOP", textcolor=color.white, size=size.tiny)


Más.