Ichimoku Yin Yang Candlestick Breakout Estrategia de las mujeres

El autor:¿ Qué pasa?, Fecha: 2023-12-21 10:44:37
Las etiquetas:

img

Resumen general

Esta estrategia se basa en un indicador muy famoso en el análisis técnico - el Ichimoku Kinko Hyo, utilizando las formas de las nubes y la relación entre el precio y la nube para determinar la dirección de la tendencia y descubrir oportunidades comerciales.

Principio de la estrategia

La estrategia utiliza varios componentes del indicador Ichimoku Kinko Hyo, incluyendo el Tenkan-Sen (línea de conversión), Kijun-Sen (línea base), Senkou Span A (línea de conversión), Senkou Span B (línea de conversión) y Chikou Span (línea de conversión).

Específicamente, la estrategia juzga si el precio atraviesa la capa de nube basándose principalmente en las líneas Senkou Span A y Senkou Span B. El área entre estas dos líneas constituye la capa de nube. Cuando el precio de cierre atraviesa el borde superior de la capa de nube, se genera una señal de compra; cuando el precio de cierre atraviesa el borde inferior de la capa de nube, se genera una señal de venta.

Además, la estrategia también establece los precios de stop loss y take profit. Utiliza la información de valor y posición de la estrategia para calcular los puntos de ganancia y pérdida, y luego los convierte en precios específicos.

Análisis de ventajas

La estrategia tiene las siguientes ventajas:

  1. El uso del indicador Ichimoku para determinar la dirección de la tendencia puede filtrar eficazmente el ruido del mercado e identificar tendencias a mediano y largo plazo
  2. La ruptura de la capa de nubes forma señales que pueden evitar las pérdidas causadas por las falsas rupturas
  3. Incorporar la configuración de stop loss y take profit puede limitar la pérdida única y bloquear las ganancias
  4. Los parámetros ajustables permiten probar el impacto de diferentes parámetros en el rendimiento de la estrategia
  5. La capa de nube visualizada y otros componentes de Ichimoku forman señales gráficas de comercio intuitivas

Análisis de riesgos

La estrategia también tiene algunos riesgos:

  1. Las posiciones a medio y largo plazo pueden dar lugar a mayores pérdidas flotantes
  2. Las señales de ruptura pueden retrasarse, perdiendo el mejor punto de entrada.
  3. Las fugas falsas pueden causar señales y pérdidas erróneas.
  4. Los períodos de retención excesivamente largos implican mayores gastos
  5. Los precios de stop loss y take profit establecidos pueden romperse

Contramedidas:

  1. Acortar adecuadamente el período de retención para reducir el riesgo de pérdida variable única
  2. Incorporar otros indicadores para determinar la eficacia de las señales de ruptura
  3. Mejorar la eficacia del stop loss y tomar ganancias para evitar quedar atrapados en posiciones equivocadas
  4. Optimizar el período de retención para reducir los gastos

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Prueba diferentes combinaciones de parámetros para encontrar los parámetros óptimos
  2. Incorporar otros indicadores para el filtrado de señales para evitar errores
  3. Dinámicamente ajustar los niveles de stop loss y tomar ganancias, las pistas de stop loss
  4. Personalizar los criterios de salida: capas de nubes de interrupción de señal inversa, disparadores de retroceso de precios
  5. Añadir mecanismos de gestión de posiciones

Conclusión

En general, la estrategia de ruptura de candeleros Ichimoku Yin Yang es una estrategia típica que utiliza el indicador Ichimoku Kinko Hyo para determinar la dirección de la tendencia a medio y largo plazo para las rupturas. Tiene ventajas como parámetros ajustables, formas intuitivas y señales visibles. También tiene algunos riesgos como rupturas falsas y riesgos de retención. Mediante la optimización de parámetros, el filtrado de señales, la configuración de stop loss / take profit, etc., los riesgos se pueden reducir y la estabilidad de la estrategia se mejora. La estrategia es adecuada para el comercio posicional a medio y largo plazo, especialmente para entrar eficientemente en la dirección de la tendencia cuando las señales se forman rompiendo capas de nubes. En general, esta es una estrategia con valor práctico cuantitativo.


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

//@version=5
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © moneyofthegame
// Basado en estrategias con el indicador ICHIMOKU KINKO HIYO
// El tiempo es oro colega :)

//@version=5
strategy('Ichimoku Cloud Estrategia Ruptura Nubes SWING TRADER  (By Insert Cheese)', shorttitle='Ichimoku Cloud Estrategia Ruptura Nubes SWING TRADER  (By Insert Cheese)',

         overlay=true,
         initial_capital=500,
         process_orders_on_close=true,
         default_qty_type=strategy.percent_of_equity,
         default_qty_value=100,
         commission_type=strategy.commission.percent,
         commission_value=0.05,
         currency=currency.NONE)
         




// Inputs: Ichimoku parametros
ts_bars =   input.int(9,  minval=1, title='Tenkan-Sen ',          group='Parámetros Ichimoku')
ks_bars =   input.int(26, minval=1, title='Kijun-Sen ',           group='Parámetros Ichimoku')
ssb_bars =  input.int(52, minval=1, title='Senkou-Span B ',       group='Parámetros Ichimoku')
cs_offset = input.int(26, minval=1, title='Chikou-Span',          group='Parámetros Ichimoku')
ss_offset = input.int(26, minval=1, title='Senkou-Span A',        group='Parámetros Ichimoku')

middle(len) => // LONGITITUD Ichimoku (SenkouB)
    math.avg(ta.lowest(len), ta.highest(len))

// Ichimoku Componentes
tenkan = middle (ts_bars)
kijun   = middle (ks_bars)
senkouA = math.avg(tenkan, kijun)
senkouB = middle (ssb_bars)


// Plot Ichimoku Kinko Hyo
plot(tenkan,                                     color=color.rgb(171, 128, 0),                              title="Tenkan-Sen",    display = display.none)
plot(kijun,                                      color=color.rgb(39, 0, 112),                               title="Kijun-Sen",     display = display.none)
plot(close, offset=-cs_offset+1,                 color=color.rgb(224, 200, 251),                            title="Chikou-Span",   display = display.none)
sa=plot(senkouA, offset=ss_offset-1,             color=color.rgb(68, 128, 0),                               title="Senkou-Span A", display = display.none)
sb=plot(senkouB, offset=ss_offset-1,             color=color.rgb(131, 0, 120),                              title="Senkou-Span B", display = display.none)
fill(sa, sb, color = senkouA > senkouB ?         color.rgb(0, 211, 11, 82) : color.rgb(75, 0, 126, 82),   title="Cloud color")

// Calculating 
ss_high = math.max(senkouA[ss_offset - 1], senkouB[ss_offset - 1])  //parte alta de la nube
ss_low = math.min(senkouA[ss_offset - 1], senkouB[ss_offset - 1])   //parte baja de la nube
ss_medium = ss_low + (ss_high - ss_low) / 2                         //parte intermedia


// Input para seleccionar largos o cortos
long_entry_enable =  input.bool(true, title='Entradas Largo',   group='Backtest Operativa', inline='SP20')
short_entry_enable = input.bool(true, title='Entradas Corto',   group='Backtest Operativa', inline='SP20')

// Input backtest rango de fechas 
fromMonth =  input.int  (defval=1,     title='Desde Mes',  minval=1,     maxval=12,      group='Backtest rango de fechas')
fromYear  =  input.int  (defval=2000,  title='Desde Año',  minval=1970,                  group='Backtest rango de fechas')
fromDay   =  input.int  (defval=1,     title='Desde Día',  minval=1,     maxval=31,      group='Backtest rango de fechas')
thruDay   =  input.int  (defval=1,     title='Hasta Día',  minval=1,     maxval=31,      group='Backtest rango de fechas')
thruMonth =  input.int  (defval=1,     title='Hasta Mes',  minval=1,     maxval=12,      group='Backtest rango de fechas')
thruYear  =  input.int  (defval=2099,  title='Hasta Año',  minval=1970,                  group='Backtest rango de fechas')

inDataRange = time >= timestamp(syminfo.timezone, fromYear, fromMonth, fromDay, 0, 0) and time < timestamp(syminfo.timezone, thruYear, thruMonth, thruDay, 0, 0)


//Estrategia

// Señales de entrada y salida

price_above_kumo = close  > ss_high // precio cierra arriba de la nube
price_below_kumo = close  < ss_low // precio cierra abajo de la nube
price_cross_above_kumo = ta.crossover  (close  , ss_high )   //precio cruza la nube parte alta
price_cross_below_kumo = ta.crossunder (close  , ss_low )     // precio cruza la nube parte baja

bullish = (price_above_kumo and price_cross_above_kumo)
bearish = (price_below_kumo and price_cross_below_kumo)

comprado = strategy.position_size > 0
vendido = strategy.position_size  < 0

sl_long =  price_above_kumo
sl_short = price_below_kumo


if ( not comprado and bullish and inDataRange and long_entry_enable)
//realizar compra
    strategy.entry("Buy", strategy.long)

//realizar salida long
if (comprado and bearish and inDataRange and long_entry_enable)
    strategy.close ("Buy", comment = "cerrado")

if ( not vendido and bearish and inDataRange and short_entry_enable)
//realizar venta
    strategy.entry("Sell", strategy.short)
    
//realizar salida long
if (vendido  and bullish and inDataRange and short_entry_enable)
    strategy.close ("Buy", comment = "cerrado")

// Función Calcular TP y SL

// Inputs para SL y TP


tpenable = input.bool(true, title =  "SL y TP metodo")



moneyToSLPoints(money)  =>
    strategy.position_size !=0 and tpenable ?  (money / syminfo.pointvalue / math.abs (strategy.position_size)) / syminfo.mintick : na

p = moneyToSLPoints(input.float(  100.0, minval=0.1, step=10.0, title = "Take Profit $$"))
l = moneyToSLPoints(input.float(  100.0, minval=0.1, step=10.0, title = "Stop Loss $$"))
strategy.exit("Close", profit = p, loss = l)



// debug plots for visualize SL & TP levels
pointsToPrice(pp) =>
    na(pp) ? na : strategy.position_avg_price + pp * math.sign(strategy.position_size) * syminfo.mintick
    
pp = plot(pointsToPrice(p),color = color.rgb(76, 175, 79, 96), style = plot.style_linebr )
lp = plot(pointsToPrice(-l),color = color.rgb(76, 175, 79, 96), style = plot.style_linebr )
avg = plot( strategy.position_avg_price, color = color.rgb(76, 175, 79, 96), style = plot.style_linebr )
fill(pp, avg, color = color.rgb(76, 175, 79, 96))
fill(avg, lp, color = color.rgb(255, 82, 82, 97))

Más.