Estrategia de trading de BTC basada en el sistema de media móvil Ichimoku


Fecha de creación: 2023-12-20 13:34:08 Última modificación: 2023-12-20 13:34:08
Copiar: 1 Número de Visitas: 666
1
Seguir
1621
Seguidores

Estrategia de trading de BTC basada en el sistema de media móvil Ichimoku

Descripción general

Esta estrategia se llama Ichimoku Kinko Hyo Strategy, es decir, la estrategia del sistema de línea media a simple vista. Es una estrategia de negociación de BTC basada en la línea media a simple vista, combinada con otros indicadores técnicos.

Principio de estrategia

La estrategia se basa principalmente en el sistema de líneas medias de un solo ojo, que es un sistema de estrategias de comercio de tendencias que integra varios indicadores técnicos.

Línea de referencia ((Kijun Sen): representa la dirección de la tendencia del mercado, es el punto medio de los máximos y mínimos de los últimos 26 días, puede servir como línea de soporte y resistencia. Cuando el precio de cierre rompe la línea de referencia, genera una señal de compra y venta.

La línea de conversión ((Tenkan Sen): representa el movimiento del precio de las acciones, es el punto medio de los máximos y mínimos de los últimos 9 días, y se puede usar para determinar el momento de comprar o vender.

SPAN FUTURO A: la línea intermedia de la línea promedio, es el promedio entre la línea de referencia y la línea de conversión, y sirve como línea de advertencia de la línea promedio.

SPAN B: representa la línea de tendencia a largo plazo, es el punto medio de los últimos 52 días, que puede constituir un gráfico de nubes para juzgar la tendencia a largo plazo.

Además, la estrategia se combina con el RSI para enviar señales de comercio en zonas de sobreventa y sobrecompra.

La señal de compra se produce cuando el precio de cierre supera la línea de referencia y se encuentra por encima de la nube; y la señal de venta se produce cuando el precio de cierre cae por debajo de la línea de referencia y se encuentra por debajo de la nube.

Ventajas estratégicas

  1. El sistema de línea media de un solo ojo determina la tendencia con precisión y tiene una mayor probabilidad de éxito

  2. Combinación de varios indicadores para evitar oportunidades perdidas

  3. El indicador RSI es un buen indicador para determinar el punto de inflexión.

  4. El gráfico de la nube muestra las tendencias a corto y largo plazo

Análisis de riesgos

  1. El sistema de línea media de un ojo está más atrasado y necesita ser evaluado con otros indicadores.

  2. Los mercados de tendencia están funcionando bien, pero los mercados de turbulencia suelen funcionar

  3. La configuración de los parámetros del RSI requiere ajustes en función del mercado

  4. La arquitectura de los mapas en la nube es más compleja y requiere habilidad en su uso.

Se puede ajustar el parámetro de la línea media a simple vista o combinar más indicadores técnicos para optimizar.

Dirección de optimización

  1. Optimización de los parámetros de la línea promedio visual para que sea más rápida para determinar tendencias

  2. Aumentar indicadores como las medias móviles para mejorar la precisión de la señal

  3. Configuración de los parámetros del RSI ajustados según los diferentes mercados

  4. Se puede considerar la inclusión de un mecanismo de suspensión de pérdidas para controlar el riesgo

Resumir

La estrategia utiliza una línea de medias generalizadas y varios indicadores de juicio de tendencias, como el RSI, con una mayor precisión en el juicio de tendencias al alza. Sin embargo, el sistema de líneas de medias generalizadas está más atrasado y no puede determinar la oscilación, que es el principal riesgo de la estrategia.

Código Fuente de la Estrategia
/*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))))