Una nube a través de la luna y dos estrellas para atraer la estrategia del dinero


Fecha de creación: 2023-11-28 16:12:09 Última modificación: 2023-11-28 16:12:09
Copiar: 1 Número de Visitas: 610
1
Seguir
1619
Seguidores

Una nube a través de la luna y dos estrellas para atraer la estrategia del dinero

Descripción general

La estrategia de la nube que atraviesa la luna es una estrategia de comercio cuantitativa que combina el indicador de análisis técnico de mercado de la nube y el filtro de rango. La estrategia utiliza un indicador de la nube para determinar la tendencia del mercado y los soportes importantes, los puntos de resistencia y las formas de la línea K para generar señales de comercio. Al mismo tiempo, combina el filtro de rango para controlar la frecuencia de las operaciones y el riesgo.

Principio de estrategia

La estrategia se basa principalmente en un indicador de nube y en la forma de la línea K para juzgar la tendencia del mercado. Un indicador de nube contiene la línea de cambio anterior, la línea de referencia y la línea de nube, cuya relación cruzada puede juzgar la tendencia del mercado; mientras que la línea de nube puede servir como soporte y resistencia. La estrategia ajusta la sensibilidad de una línea de nube mediante la configuración de diferentes combinaciones de parámetros.

Además, la estrategia también establece un filtro de rango de fechas, que solo se realiza en el rango de fechas especificado, lo que controla la frecuencia de operaciones de la estrategia. Al mismo tiempo, la configuración de stop loss también reduce el riesgo, ya que la opción de stop loss detendrá las pérdidas cuando el precio se ejecute en una dirección desfavorable.

Análisis de las ventajas

  • Utiliza un indicador de nube para determinar el movimiento del mercado, los parámetros del indicador pueden ajustar la sensibilidad
  • Identificación de la forma de la línea K, señal de transacción clara
  • Configuración de filtros de rango de fechas para controlar la frecuencia de las transacciones
  • Ajuste para detener el daño a tiempo y reducir el riesgo

Análisis de riesgos

  • Los indicadores de la nube están rezagados y podrían haberse perdido la tendencia de cambios rápidos
  • El filtro de rango de fechas puede perder algunas oportunidades de transacción
  • La configuración incorrecta de stop loss puede aumentar las pérdidas

El riesgo puede ser mejorado y controlado mediante la modificación de los parámetros del indicador de una nube, la optimización del rango de fechas y la corrección de los puntos de parada.

Dirección de optimización

  • Se pueden probar diferentes combinaciones de parámetros para seleccionar la mejor configuración de indicadores de una nube
  • Se puede combinar con otros indicadores para evitar el problema de un índice de nube atrasado
  • Se puede configurar el rango de fechas optimizadas por retroalimentación
  • Se puede configurar el punto de parada de deslizamiento dinámico condicional

Resumir

El uso integral de un indicador de una nube, la identificación de la línea K, el filtrado de rango y otros métodos para determinar el movimiento del mercado, puede capturar la dirección de la tendencia con mayor claridad. A través de ajustes de parámetros, control de riesgos y otros medios, se puede obtener un mejor efecto de la estrategia. Pero aún así, debe tener en cuenta el retraso del indicador de una nube y realizar un ajuste de optimización continuo.

Código Fuente 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)