Estrategia de la Cruz de la Muerte y la Cruz Dorada


Fecha de creación: 2023-10-11 16:33:18 Última modificación: 2023-10-11 16:33:18
Copiar: 0 Número de Visitas: 676
1
Seguir
1617
Seguidores

Descripción general

La estrategia utiliza el principio de la cruz dorada y la horca muerta del promedio móvil simple para realizar posiciones largas y cortas en las acciones. Haga más cuando la línea rápida rompa la línea lenta desde la parte inferior; Haga más cuando la línea rápida rompa la línea lenta desde la parte superior.

Principio de estrategia

La estrategia define primero el tiempo de inicio y finalización de la retrotracción y luego establece los parámetros de cálculo de las dos medias, que incluyen el tipo de media y la longitud del período.

Calcula el valor de las dos medias con la función getMAType (). Donde fastMA es el promedio de corto período y slowMA es el promedio de largo período.

La lógica central de la estrategia es:

  • Cuando el MA rápido está sobre el MA lento, se emite una señal de largo;

  • Cuando el MA rápido atraviesa el MA lento, emite una señal de vacío, short.

Finalmente, durante el período de retracción, se adopta una estrategia de posición larga en caso de señales de más; se adopta una estrategia de posición vacía en caso de señales de menos.

Análisis de las ventajas

  • La estrategia es clara, sencilla y fácil de entender.
  • El uso de un amplio principio de cruzamiento equilíneo se aplica a la mayoría de las variedades de acciones.
  • Tipo de promedio y parámetros personalizables, de gran adaptabilidad.
  • La estructura de la estrategia de la pirámide, las funciones de cada parte son claras, lo que facilita la optimización posterior.

Análisis de riesgos

  • El cruce de líneas medias tiene un cierto atraso y puede perder algunas oportunidades de negociación.
  • El mercado de la vibración no se puede filtrar de manera efectiva, y es fácilmente manipulado.
  • La optimización de parámetros no es un sistema completo, requiere ayuda de la experiencia manual.
  • No se puede controlar eficazmente el riesgo y las pérdidas de una sola transacción.

En cuanto a los riesgos, se puede optimizar aún más:

  1. Añadir filtros de otros indicadores técnicos para identificar tendencias.

  2. Aumentar las estrategias de detención de pérdidas y controlar las pérdidas individuales.

  3. Introducir indicadores de energía, etc., para evitar el arbitraje en mercados convulsionados.

  4. Establecer mecanismos de optimización de parámetros para buscar automáticamente la combinación de parámetros óptima.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Aumentar las estrategias de detención de pérdidas, como establecer puntos de detención fijos o rastrear las paradas y controlar las pérdidas.

  2. Aumentar las estrategias de gestión de posiciones, tales como posiciones fijas, posiciones dinámicas, y controlar el riesgo de las transacciones.

  3. Aumentar los filtros, combinados con otros indicadores técnicos para identificar tendencias y mejorar la tasa de éxito.

  4. Optimización de la configuración de los parámetros, búsqueda de los parámetros óptimos a través de búsquedas en la red, regresión lineal, etc.

  5. Expandir las estrategias de venta libre, como la inversión de ruptura, la creación de posiciones por lotes, y otras estrategias de comercio enriquecedoras.

  6. Aumentar los indicadores de energía para evitar ser atrapados en situaciones de temblores.

  7. Enriquecer la variedad de transacciones, extendiéndose a más variedades como futuros de índices bursátiles, divisas y monedas digitales.

Resumir

Esta estrategia se basa en el principio cruzado de la media móvil para lograr la selección de posiciones largas y cortas de las acciones. La idea de la estrategia es simple, clara, de uso amplio, adaptable y de cierto valor práctico. Pero la estrategia también tiene un cierto retraso y no puede filtrar eficazmente las oscilaciones. En el futuro, se puede optimizar mediante la mejora del stop loss, la optimización de los parámetros, el aumento de los filtros, etc., lo que hace que la estrategia tenga más ventajas.

Código Fuente de la Estrategia
/*backtest
start: 2023-09-10 00:00:00
end: 2023-10-10 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//strategy("Golden X BF Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)

/////////////// Time Frame ///////////////
testStartYear = input(2010, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() =>  true

///////////// MA Params /////////////
source1 = input(title="MA Source 1", defval=close)
maType1 = input(title="MA Type 1", defval="sma", options=["sma", "ema", "swma", "wma"])
length1 = input(title="MA Length 1", defval=50)

source2 = input(title="MA Source 2", defval=close)
maType2 = input(title="MA Type 2", defval="sma", options=["sma", "ema", "swma", "wma"])
length2 = input(title="MA Length 2", defval=200)

///////////// Get MA Function /////////////
getMAType(maType, sourceType, maLen) => 
    res = sma(close, 1)
    
    if maType == "ema"
        res := ema(sourceType, maLen)
    if maType == "sma"
        res := sma(sourceType, maLen)
    if maType == "swma"
        res := swma(sourceType)
    if maType == "wma"
        res := wma(sourceType, maLen)
    res
    
///////////// MA /////////////
fastMA = getMAType(maType1, source1, length1)
slowMA = getMAType(maType2, source2, length2)

long = crossover(fastMA, slowMA)
short = crossunder(fastMA, slowMA)

/////////////// Plotting /////////////// 
checkColor() => fastMA > slowMA
colCheck = checkColor() ? color.lime : color.red
p1 = plot(fastMA, color = colCheck, linewidth=1)
p2 = plot(slowMA, color = colCheck, linewidth=1)
fill(p1, p2, color = checkColor() ? color.lime : color.red)
bgcolor(long ? color.lime : short ? color.red : na, transp=20)

/////////////// Execution /////////////// 
if testPeriod()
    strategy.entry("Long", strategy.long, when=long)
    strategy.entry("Short", strategy.short, when=short)