Ichimoku Kinko Hyo basado en la estrategia de comercio de BTC

El autor:¿ Qué pasa?, Fecha: 2023-12-20 13:34:08
Las etiquetas:

img

Resumen general

Esta estrategia se llama Ichimoku Kinko Hyo Strategy. Es una estrategia de negociación de BTC basada en el sistema Ichimoku Kinko Hyo combinado con otros indicadores técnicos.

Estrategia lógica

La estrategia se basa principalmente en el sistema Ichimoku Kinko Hyo, que incorpora múltiples indicadores técnicos para el comercio de tendencias.

Kijun Sen: Representa la dirección de tendencia del mercado. Es el punto medio del precio más alto y más bajo en los últimos 26 días, actúa como líneas de soporte y resistencia.

Tenkan Sen: Representa el impulso del precio. Es el punto medio del precio más alto y más bajo en los últimos 9 días, ayuda a determinar los mejores puntos de entrada y salida.

Senkou Span A: representa la línea de medio plazo de Ichimoku. Es el promedio de Kijun Sen y Tenkan Sen, actúa como la línea de advertencia de Ichimoku.

Senkou Span B: Representa la línea de tendencia a largo plazo. Es el punto medio de los últimos 52 días. Forma la nube Ichimoku para determinar las tendencias a largo y corto plazo.

Además, la estrategia también incorpora el indicador RSI para generar señales comerciales en zonas de sobrecompra y sobreventa.

Las señales de compra se generan cuando el precio de cierre se rompe por encima de Kijun Sen y se localiza por encima de la nube.

Ventajas

  1. El sistema Ichimoku determina con precisión las tendencias con una tasa de ganancia relativamente alta.

  2. La incorporación de múltiples indicadores evita la pérdida de oportunidades.

  3. El RSI determina efectivamente los puntos de inversión.

  4. La nube intuitivamente presenta tendencias a largo y corto plazo.

Análisis de riesgos

  1. El sistema Ichimoku tiene cierto retraso, necesita la incorporación de otros indicadores.

  2. Funciona muy bien en los mercados de tendencia pero modestamente en los mercados variados.

  3. Los parámetros del RSI necesitan ajustes basados en los mercados.

  4. La construcción de nubes es compleja y requiere una manipulación experta.

Los parámetros de Ichimoku se pueden optimizar o se pueden agregar más indicadores.

Direcciones de optimización

  1. Optimice los parámetros de Ichimoku para determinar tendencias más rápido.

  2. Añadir más indicadores como promedios móviles para mejorar la precisión de la señal.

  3. Ajustar el parámetro RSI basado en diferentes mercados.

  4. Considere la posibilidad de añadir mecanismos de stop loss para controlar los riesgos.

Conclusión

Ichimoku combinado con indicadores como el RSI tiene una alta precisión en la captura de tendencias alcistas.


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

//@version=3
strategy("My Ichimoku Strat v2", overlay=true,default_qty_type=strategy.fixed, default_qty_value=1, initial_capital=1000, currency=currency.EUR,commission_type=strategy.commission.percent,commission_value=0.05)
// === BACKTEST RANGE ===
FromMonth = input(defval = 3, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2018, title = "From Year", minval = 2014)
ToMonth   = input(defval = 1, title = "To Month", minval = 1)
ToDay     = input(defval = 1, title = "To Day", minval = 1)
ToYear    = input(defval = 9999, title = "To Year", minval = 2014)

// === SERIES SETUP ===



//**** Inputs *******
KijunSenLag = input(6,title="KijunSen Lag",minval=1)

//Kijun-sen
//Support resistance line, buy signal when price crosses it
KijunSen = sma((high+low)/2,26)
buy2 = crossover(close,KijunSen) and (rising(KijunSen,KijunSenLag) or falling(KijunSen,KijunSenLag))
sell2= crossunder(close,KijunSen) and (rising(KijunSen,KijunSenLag) or falling(KijunSen,KijunSenLag))


//Tenkan-Sen
TenkanSen = sma((high+low)/2,9)

//Senkou Span A 
SenkouSpanA = (KijunSen + TenkanSen)/2

//Senkou Span B 
SenkouSpanB = sma((high+low)/2,52)

//Cloud conditions : ignore buy if price is under the cloud
// Huge cloud means safe support and resistance. Little cloud means danger.
buy3 = close > SenkouSpanA and close > SenkouSpanB
sell3 = close < SenkouSpanA and close < SenkouSpanB


//Chikou Span
//Buy signal : crossover(ChikouSpan,close)
//Sell Signal : crossunder(ChikouSpan,close)
ChikouSpan = close
buy1=crossover(ChikouSpan,close[26])
sell1=crossunder(ChikouSpan,close[26])

plotshape(buy1,style=shape.diamond,color=lime,size=size.small)
plotshape(sell1,style=shape.diamond,color=orange,size=size.small)

//Alerts

buyCompteur = -1
buyCompteur := nz(buyCompteur[1],-1)
buyCompteur := buy2 or buy3 ? 1 : buyCompteur
buyCompteur := buyCompteur > 0 ? buyCompteur + 1 : buyCompteur
buyCompteur := sell2 or sell3 ? -1 : buyCompteur

sellCompteur = -1
sellCompteur := nz(sellCompteur[1],-1)
sellCompteur := sell2 or sell3 ? 1 : sellCompteur
sellCompteur := sellCompteur > 0 ? sellCompteur + 1 : sellCompteur
sellCompteur := buy2 or buy3 ? -1 : sellCompteur



//RSI
src = close, len = input(14, minval=1, title="RSI Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
buyRSI = crossover(rsi,40) and close > TenkanSen and rsi[5]<30 and (rsi-rsi[1])>5
sellRSI = crossunder(rsi,60) and close < TenkanSen and rsi[5]>70 and (rsi[1]-rsi)>5
plotshape(buyRSI,style=shape.triangleup,color=lime,transp=0,location=location.belowbar,size=size.small)

sell= sell2 and sell3 or (sell1 and buyCompteur <= 8) or sellRSI
buy=buy2 and buy3 or (buy1 and sellCompteur <=8) or buyRSI
plotchar(buy,char='B',size=size.small,color=lime) 
plotchar(sell,char='S',size=size.small,color=orange)


//plots
plot(KijunSen,title="Kijun-Sen",color=blue,linewidth=4)
plot(TenkanSen,title="Tenkan-Sen",color=red,linewidth=2)
cloudA = plot(SenkouSpanA,title="cloud A", color=lime,offset=26,linewidth=2)
cloudB = plot(SenkouSpanB,title="cloud B", color=orange,offset=26,linewidth=2)
plot(ChikouSpan,title="lag span",color=fuchsia, linewidth=2,offset=-26)
//plot()
fill(cloudA,cloudB,color=SenkouSpanA>SenkouSpanB?lime:orange)
//plot(close,color=silver,linewidth=4)

// === ALERTS ===
strategy.entry("L", strategy.long, when=(buy and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))
strategy.close("L", when=(sell and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))

Más.