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.
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.
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.
La estrategia también puede optimizarse en los siguientes aspectos:
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")