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

Tendencia de criptomonedas siguiendo una estrategia basada en Heiken Ashi

El autor:¿ Qué pasa?, Fecha: 2024-01-19 17:40:52
Las etiquetas:

img

Resumen general

Esta estrategia es una estrategia de tendencia de criptomonedas basada en el indicador Heiken Ashi. Utiliza dos promedios móviles exponenciales (EMA) con diferentes períodos combinados con Heiken Ashi y varias condiciones para generar señales comerciales.

Estrategia lógica

La estrategia emplea EMA de 50 y 100 períodos. Mientras tanto, calcula velas Heiken Ashi, que es un candelabro especial que puede filtrar el ruido del mercado. La estrategia utiliza los precios de apertura, cierre, alto y bajo de las velas Heiken Ashi y los aplica a la EMA de 100 períodos para generar señales comerciales más precisas.

Específicamente, cuando el precio de apertura del Heiken Ashi de 100 períodos está por encima del precio de cierre, y el precio de apertura de la vela anterior está por debajo del precio de cierre, es una señal larga.

La estrategia combina el sistema EMA dual y el indicador Heiken Ashi, con el objetivo de capturar oportunidades a tiempo cuando se forman tendencias a medio y largo plazo.

Ventajas

  • El uso de Heiken Ashi puede filtrar eficazmente el ruido y hacer que las señales comerciales más claras
  • El doble EMA combinado con Heiken Ashi puede identificar tendencias relativamente fuertes a medio y largo plazo
  • Los juicios de múltiples condiciones ayudan a evitar perder buenas oportunidades
  • La estrategia es especialmente adecuada para el mercado de criptomonedas altamente volátil
  • Se puede configurar como una estrategia de largo plazo para reducir los riesgos comerciales.

Los riesgos

  • Puede haber grandes pérdidas debido a que el stop loss es demasiado flojo
  • La estrategia puede generar operaciones más ineficaces en los mercados de rango
  • Todavía hay un cierto grado de retraso en Heiken Ashi, incapaz de evitar completamente los riesgos
  • No puede determinar los puntos de reversión de tendencia, frente a riesgos de pérdidas en expansión

Para mitigar los riesgos, podemos reducir adecuadamente el rango de stop loss, o considerar la combinación de otros indicadores para determinar la inversión de tendencia.

Direcciones de optimización

La estrategia también puede optimizarse en los siguientes aspectos:

  • Optimizar los parámetros de EMA para encontrar la mejor combinación de parámetros
  • Pruebe otros indicadores para reemplazar a Heiken Ashi, como KDJ, MACD, etc.
  • Añadir el desglose de precios como confirmación de entrada
  • Incorporar indicadores de volatilidad para determinar la reversión de tendencia
  • Utilice métodos de aprendizaje automático para optimizar dinámicamente los parámetros

Conclusión

La estrategia de seguimiento de tendencias de criptomonedas basada en Heiken Ashi ha considerado ampliamente aspectos como el juicio de tendencias, el tiempo de entrada, el control de pérdidas de parada, etc., lo que la hace muy adaptable a activos altamente volátiles como las criptomonedas. Al usar Heiken Ashi para filtrar el ruido y adoptar métodos robustos de control de riesgos, la estrategia puede aprovechar eficazmente las oportunidades comerciales que traen las tendencias de precios a medio y largo plazo. Todavía hay mucho espacio para mejorar el rendimiento de la estrategia si podemos optimizar aún más los parámetros, las selecciones de indicadores y los métodos de control de riesgos.


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

//@version=4
//@SoftKill21
strategy(title="CRYPTO HA Strategy", shorttitle="CRYPTO HA Strategy", overlay=true , default_qty_type =strategy.percent_of_equity, default_qty_value =100, commission_type= strategy.commission.percent,commission_value =0.1 )


ma1_len = input(50)
ma2_len = input(100)

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 = 2020, 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 = 2020, title = "To Year", minval = 1970)

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


//First Moving Average data
o = ema(open, ma1_len)
c = ema(close, ma1_len)
h = ema(high, ma1_len)
l = ema(low, ma1_len)

// === HA calculator ===
ha_t = heikinashi(syminfo.tickerid)
ha_o = security(ha_t, timeframe.period, o)
ha_c = security(ha_t, timeframe.period, c)
ha_h = security(ha_t, timeframe.period, h)
ha_l = security(ha_t, timeframe.period, l)

//Second Moving Average data

o2 = ema(ha_o, ma2_len)
c2 = ema(ha_c, ma2_len)
h2 = ema(ha_h, ma2_len)
l2 = ema(ha_l, ma2_len)

// === Color def ===
ha_col = o2 > c2 ? color.white : color.lime

sell = o2 > c2 and o2[1] < c2[1] and time_cond
buy = o2 < c2 and o2[1] > c2[1] and time_cond
plotshape(buy, color=color.green, text= "Buy", location= location.belowbar,style= shape.labelup, textcolor=color.white, size = size.tiny, title="Buy Alert",editable=false, transp=60)
plotshape(sell, color=color.red, text= "Sell", location= location.abovebar,style= shape.labeldown, textcolor=color.white, size = size.tiny, title="Sell Alert", editable=false, transp=60)

trendColor = buy ? color.red : sell ? color.green : na
plot( buy ? close: sell  ? close : na , color=trendColor, style=plot.style_line, linewidth=4, editable=false)



onlylong=input(true)
original=input(false)

if(onlylong)
    strategy.entry("long",1,when=buy)
    strategy.close("long",when=sell)
if(original)
    strategy.entry("long",1,when=buy)
    strategy.entry("short",0,when=sell)

sl = input(0.075)
strategy.exit("closelong", "long" , loss = close * sl / syminfo.mintick, alert_message = "sl point")
strategy.exit("closeshort", "short" , loss = close * sl / syminfo.mintick, alert_message = "sl point")




Más.