Potencial de mercado Ichimoku Estrategia de la nube alcista

El autor:¿ Qué pasa?, Fecha: 2024-02-02 16:57:46
Las etiquetas:

img

Resumen general

Esta estrategia es una estrategia de negociación en la nube Ichimoku de solo largo. Se hace larga cuando la línea de conversión cruza por encima de la línea base, y cierra la posición cuando la línea base cruza por debajo de la línea de conversión. Además, al abrir o cerrar posiciones, también verifica el Lagging Span para ver si está por encima o por debajo de la nube.

Estrategia lógica

La estrategia utiliza varias líneas del indicador Ichimoku.

  1. Línea de conversión: el promedio de los máximos y mínimos de los últimos 9 días, que representa la conversión de tendencia a corto plazo.

  2. Línea de base: el promedio de los máximos y mínimos durante los últimos 26 días, que representa el movimiento medio de los precios durante ese período.

  3. El período de referencia A: el promedio de la conversión y de las líneas de base.

  4. Leading Span B: El promedio de los máximos y mínimos durante los últimos 52 días, un indicador principal de las tendencias a medio y largo plazo.

  5. Lagging Span: El precio de cierre retrasado 26 días atrás, que representa el impulso de la tendencia.

Para abrir una posición, la línea de conversión debe cruzar por encima de la línea base Y el Lagging Span debe estar por encima de la nube.

Para cerrar una posición, la línea base debe cruzar por debajo de la línea de conversión Y el Lagging Span debe estar por debajo de la nube.

Ventajas de la estrategia

  1. Utiliza la nube de Ichimoku para determinar la dirección de la tendencia con precisión.

  2. Combinar varias líneas evita señales falsas.

  3. Solo coincide con las tendencias alcistas a largo plazo de la mayoría de las criptomonedas.

  4. El estricto filtrado de condiciones da señales de alta calidad.

Riesgos de la estrategia

  1. Solo permite la posición completa o plana, no puede ajustar el tamaño de la posición.

  2. Se desempeña muy bien en el mercado alcista pero corre el riesgo de grandes pérdidas en el mercado bajista.

  3. Los parámetros predeterminados ajustados para criptomonedas pueden necesitar ajustes para otros activos.

  4. Menos señales comerciales significan que algunas oportunidades podrían perderse.

Mejoras

  1. Añadir la funcionalidad de dimensionamiento de posición para cerrar parte de la posición cuando la pérdida alcanza un umbral.

  2. Añadir señales de venta en corto cuando los niveles de soporte clave rompen para reducir las pérdidas.

  3. Optimizar los parámetros para adaptarse a más símbolos y mejorar la robustez.

  4. Se añadirá el stop loss cuando la pérdida alcance un nivel para contener el riesgo a la baja.

Resumen de las actividades

Como estrategia Ichimoku de largo plazo, este enfoque determina de manera confiable las reversiones de tendencia mediante la combinación de múltiples líneas Ichimoku. Funciona especialmente bien para activos con tendencias alcistas persistentes como las criptomonedas.


/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Simple long-only Ichimoku Cloud Strategy
// Enter position when conversion line crosses base line up, and close it when the opposite happens. 
// Additional condition for open / close the trade is lagging span, it should be higher than cloud to open position and below - to close it.
//@version=4
strategy("Ichimoku Cloud Strategy Long Only", shorttitle="Ichimoku Cloud Strategy (long only)", overlay=true )

conversion_length = input(9, minval=1, title="Conversion Line Periods"),
base_length = input(26, minval=1, title="Base Line Periods")
lagging_length = input(52, minval=1, title="Lagging Span 2 Periods"),
delta = input(26, minval=1, title="Delta")

average(len) => avg(lowest(len), highest(len))

conversion_line = average(conversion_length) // tenkan sen - trend
base_line = average(base_length) // kijun sen - movement
lead_line_a = avg(conversion_line, base_line) // senkou span A
lead_line_b = average(lagging_length) // senkou span B
lagging_span = close // chikou span - trend / move power

plot(conversion_line, color=color.blue, linewidth=2, title="Conversion Line")
plot(base_line, color=color.white, linewidth=2, title="Base Line")
plot(lagging_span, offset = -delta, color=color.purple, linewidth=2, title="Lagging Span")

lead_line_a_plot = plot(lead_line_a, offset = delta, color=color.green, title="Lead 1")
lead_line_b_plot = plot(lead_line_b, offset = delta, color=color.red, title="Lead 2")
fill(lead_line_a_plot, lead_line_b_plot, color = lead_line_a > lead_line_b ? color.green : color.red)

// Strategy logic

long_signal = crossover(conversion_line,base_line) and ((lagging_span) > (lead_line_a)) and ((lagging_span) > (lead_line_b))
short_signal = crossover(base_line, conversion_line) and ((lagging_span) < (lead_line_a)) and ((lagging_span) < (lead_line_b))

strategy.entry("LONG", strategy.long, when=strategy.opentrades == 0 and long_signal, alert_message='BUY')
strategy.close("LONG", when=strategy.opentrades > 0 and short_signal, alert_message='SELL')
    
    // === Backtesting Dates === thanks to Trost

testPeriodSwitch = input(true, "Custom Backtesting Dates")
testStartYear = input(2021, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, 0)
testStopYear = input(2021, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testStopHour = input(0, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, testStopHour, 0)
testPeriod() => true
testPeriod_1 = testPeriod()
isPeriod = testPeriodSwitch == true ? testPeriod_1 : true
// === /END

if not isPeriod
    strategy.cancel_all()
    strategy.close_all()

Más.