Ichimoku Kumo Twist estrategia de absorción de oro

El autor:¿ Qué pasa?, Fecha: 2023-11-28 16:12:09
Las etiquetas:

img

Resumen general

La estrategia Ichimoku Kumo Twist Gold-Absorbing es una estrategia de negociación cuantitativa que combina el indicador técnico de mercado Ichimoku y el filtrado de rango. Utiliza el indicador Ichimoku para determinar las tendencias del mercado y los niveles de soporte y resistencia importantes, junto con patrones de velas para generar señales comerciales. Mientras tanto, el filtrado de rango ayuda a controlar la frecuencia y el riesgo de negociación.

Principio de la estrategia

La estrategia se basa principalmente en el indicador de Ichimoku y los patrones de velas para juzgar las tendencias del mercado. El Ichimoku contiene la línea de conversión, la línea base y las líneas de nube, sus relaciones de cruce indican las tendencias del mercado. Las líneas de nube también actúan como niveles de soporte y resistencia. La estrategia establece diferentes combinaciones de parámetros para ajustar la sensibilidad de las líneas de Ichimoku. Además, la estrategia identifica patrones y genera señales de compra cuando la línea de conversión cruza por encima de la línea base, y señales de venta cuando cruza por debajo.

Además, la estrategia tiene filtros de rango de fechas configurados, de modo que solo opera dentro de rangos de fechas especificados. Esto controla la frecuencia de negociación. Además, la configuración de stop loss ayuda a reducir el riesgo al detener la pérdida cuando el precio corre en una dirección desfavorable.

Análisis de ventajas

  • Utilice el indicador Ichimoku para juzgar las tendencias del mercado, parámetros ajustables por sensibilidad
  • Las señales de negociación claras del reconocimiento de patrones de candelabro
  • El filtro de rango de fechas controla la frecuencia de negociación
  • Configuración de pérdida de parada para reducir el riesgo de pérdida de parada oportuna

Análisis de riesgos

  • Ichimoku puede perderse las tendencias rápidamente cambiantes
  • El filtro de rango de fechas puede perder algunas oportunidades comerciales
  • La configuración inadecuada del stop loss puede aumentar las pérdidas

Métodos como ajustar los parámetros de Ichimoku, optimizar el rango de fecha, modificar los puntos de stop loss pueden mejorar y controlar los riesgos.

Direcciones de optimización

  • Prueba diferentes combinaciones de parámetros para encontrar la configuración óptima de Ichimoku
  • Combinar con otros indicadores para evitar problemas de retraso Ichimoku
  • Prueba de retroceso para optimizar la configuración del rango de fecha
  • Establecer la pérdida de detención de seguimiento dinámico condicional

Resumen de las actividades

La estrategia de absorción de oro Ichimoku Kumo Twist integra el indicador Ichimoku, el reconocimiento de patrones de velas, el filtrado de rango para determinar las tendencias del mercado. Puede captar las direcciones de la tendencia con bastante claridad. A través de medios como el ajuste de parámetros, el control de riesgos, etc., se puede lograr un buen rendimiento de la estrategia.


/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-27 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="Ichimoku Kumo Twist Strategy (Presets)", shorttitle="Kumo Twist Strategy", overlay=true)

xlowest_(src, len) =>
    x = src
    for i = 1 to len - 1
        v = src[i]
        if (na(v))
            break
        x := min(x, v)
    x

xlowest(src, len) =>
    na(src[len]) ? xlowest_(src, len) : lowest(src, len)

xhighest_(src, len) =>
    x = src
    for i = 1 to len - 1
        v = src[i]
        if (na(v))
            break
        x := max(x, v)
    x

xhighest(src, len) =>
    na(src[len]) ? xhighest_(src, len) : highest(src, len)

dropn(src, n) =>
    na(src[n]) ? na : src

ichiConversionPeriods(presets) =>
    if presets == "Cpt 20 60 120 30"
        20
    else
        if presets == "Cpt 10 30 60 30"
            10
        else
            if presets == "Std 18 52 104 26"
                18
            else
                9

ichiBasePeriods(presets) =>
    if presets == "Cpt 20 60 120 30"
        60
    else
        if presets == "Cpt 10 30 60 30"
            30
        else
            if presets == "Std 18 52 104 26"
                52
            else
                26

ichiLaggingSpan2Periods(presets) =>
    if presets == "Cpt 20 60 120 30"
        120
    else
        if presets == "Cpt 10 30 60 30"
            60
        else
            if presets == "Std 18 52 104 26"
                104
            else
                52

ichiDisplacement(presets) =>
    if presets == "Cpt 20 60 120 30"
        30
    else
        if presets == "Cpt 10 30 60 30"
            30
        else
            if presets == "Std 18 52 104 26"
                26
            else
                26

scaling = input(title="Scaling", options=["Linear", "Log"], defval="Linear")
presets = input(title="Presets", options=["Cpt 20 60 120 30", "Cpt 10 30 60 30", "Std 18 52 104 26", "Std 9 26 52 26"], defval="Cpt 20 60 120 30")
dropCandles = input(1, minval=0, title="Drop first N candles")
showClouds = input(false, "Show Clouds")
stoploss = input(true, title="Stop Loss")

conversionPeriods = ichiConversionPeriods(presets)
basePeriods = ichiBasePeriods(presets)
laggingSpan2Periods = ichiLaggingSpan2Periods(presets)
displacement = ichiDisplacement(presets)
logScaling = scaling == "Log"

lows = dropn(low, dropCandles)
highs = dropn(high, dropCandles)

lowsp = logScaling ? log(lows) : lows
highsp = logScaling ? log(highs) : highs

donchian(len) =>
    avg(xlowest(lowsp, len), xhighest(highsp, len))

conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

// === BACKTEST RANGE ===
FromMonth = input(defval = 10, title = "From Month", minval = 1)
FromDay   = input(defval = 3, title = "From Day", minval = 1)
FromYear  = input(defval = 2017, 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)

golong = crossover(leadLine1, leadLine2)
goshort = crossunder(leadLine1, leadLine2)

strategy.entry("Buy", strategy.long, when=(golong and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))
strategy.entry("Sell", strategy.short, when=(goshort and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))

conversionLinep = logScaling ? exp(conversionLine) : conversionLine
baseLinep = logScaling ? exp(baseLine) : baseLine
leadLine1p = logScaling ? exp(leadLine1) : leadLine1
leadLine2p = logScaling ? exp(leadLine2) : leadLine2

plot(showClouds ? conversionLinep : na, color=#0496ff, title="Conversion Line")
plot(showClouds ? baseLinep : na, color=#991515, title="Base Line")

p1 = plot(showClouds ? leadLine1p : na, offset = displacement, color=green, title="Lead 1")
p2 = plot(showClouds ? leadLine2p : na, offset = displacement, color=red, title="Lead 2")
fill(p1, p2, color = showClouds ? (leadLine1p > leadLine2p ? green : red) : na)


Más.