Estrategia comercial de votación de promedio móvil múltiple configurable


Fecha de creación: 2023-09-23 15:52:06 Última modificación: 2023-09-23 15:52:06
Copiar: 2 Número de Visitas: 646
1
Seguir
1617
Seguidores

Descripción general

La estrategia se configura para establecer una combinación de varias líneas medias rápidas y lentas, haciendo más cuando todas las líneas rápidas atraviesan las líneas lentas; y para cerrar la posición cuando al menos una línea rápida atraviesa la línea lenta. La estrategia aprovecha al máximo las ventajas de varias líneas medias, formando un sistema de toma de decisiones de posición más fuerte.

Principio de estrategia

Los principales componentes y reglas de la estrategia son los siguientes:

  1. Múltiples grupos de medias rápidas y lentas: utiliza varios indicadores de medias, como SMA, WMA y VWMA.

  2. Hacer más señales: Hacer más señales al cruzar la línea lenta en todas las líneas rápidas.

  3. Señales de estabilidad: estabilidad en cualquier línea rápida que atraviese la línea lenta.

  4. Detención de pérdidas: fija el punto de detención de pérdidas con el valor ATR.

  5. Configuración: puede configurar flexiblemente varios grupos de parámetros de línea media.

La entrada en el juego se puede mejorar la fiabilidad de la señal mediante el voto de posición de combinación de líneas medias múltiples. Los parámetros de líneas medias múltiples se pueden configurar de forma personalizada y con flexibilidad.

Análisis de las ventajas

En comparación con la estrategia de línea media única, esta estrategia tiene las siguientes ventajas:

  1. La combinación de líneas medias múltiples proporciona un juicio de tendencias más amplio.

  2. La votación fue para evitar que el ruido de la transacción fuera engañoso.

  3. Los parámetros de la línea media se pueden configurar libremente, con un gran espacio de optimización.

  4. Soporte para varios indicadores de medias líneas, con flexibilidad de uso.

  5. La configuración de un punto de parada de pérdidas para controlar las pérdidas individuales.

  6. Los ciclos más largos de uso son más efectivos y reducen la oscilación de la curva.

  7. La computación es sencilla, intuitiva, fácil de implementar y operar.

  8. En general, la estabilidad y la durabilidad son mejores que las de la línea media simple.

Análisis de riesgos

Sin embargo, la estrategia también tiene sus riesgos:

  1. La línea media múltiple aumenta la complejidad de la estrategia.

  2. Existe el riesgo de una optimización excesiva de los parámetros.

  3. La línea media es esencialmente una identificación tardía de los cambios de tendencia.

  4. No se tiene en cuenta el volumen de transacciones, lo que podría suponer una estafa.

  5. La configuración de stop loss es arbitraria y puede generar una liquidación innecesaria.

  6. El efecto varía mucho según el entorno del mercado.

  7. La corrección de la curva de retracción de ganancias debe tenerse en cuenta para evitar que la curva se mueva demasiado.

  8. Los parámetros para comprobar la estabilidad en varias variedades.

Dirección de optimización

Basado en el análisis anterior, la estrategia puede ser reforzada en los siguientes aspectos:

  1. Parámetros de la línea media para probar la robustez en diferentes variedades.

  2. Aumentar el volumen de transacciones o verificar la volatilidad.

  3. Optimización de los parámetros de pérdida de frenado.

  4. Se establece la tolerancia máxima de retirada.

  5. Construir un mecanismo de gestión de posiciones dinámicas.

  6. Evaluar el efecto de la introducción del aprendizaje automático.

  7. La atención se centra en la concentración máxima de la curva de retiro y ganancias.

  8. La estrategia de la repetición es para evitar la optimización excesiva.

Resumir

La estrategia establece una combinación de líneas de avance múltiples mediante la configuración, formando un mecanismo de decisión de tenencia de posición más sólido. Sin embargo, cualquier estrategia requiere evitar la sobreadaptación y el ajuste dinámico de acuerdo con el entorno del mercado. La estrategia cuantitativa solo puede adaptarse al mercado a largo plazo si se optimiza continuamente la prueba.

Código Fuente de la Estrategia
/*backtest
start: 2022-09-16 00:00:00
end: 2023-09-22 00:00:00
period: 1d
basePeriod: 1h
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/
// © levieux

//@version=5
strategy(title='Configurable Multi MA Crossover Voting System', shorttitle='Configurable Multi MA Crossover Voting System', initial_capital=1000, overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1)
crossoverConfig= input.string(defval="2x4,3x5,4x6", title="Crossover Config")
source= input.source(high)
maType= input.string("WMA", title="Moving Average Type", options=["WMA","SMA","VWMA"])
atrPeriod= input(14, title="ATR Period")
profitAtr = input(10, title="Profit ATR x")
lossAtr = input(5, title="Loss ATR x")


ma(src,length,type) => 
    float ma = switch type
	    "SMA" => ta.sma(src, length)
	    "WMA" => ta.wma(src, length)
	    "VWMA" => ta.vwma(src, length)

crossoverGroups= str.split(crossoverConfig, ",")
crossoverCount= array.size(crossoverGroups)
crossovers= array.new_string(crossoverCount)
positions= array.new_int(crossoverCount, 0)
longVotes= 0
for i= 0 to crossoverCount-1
    crossover= str.tostring(array.get(crossoverGroups, i))
    crossoverBoundaries= str.split(crossover, "x")
    int fastLength= math.round(str.tonumber(array.get(crossoverBoundaries, 0)))
    int slowLength= math.round(str.tonumber(array.get(crossoverBoundaries, 1)))
    wmaFast= ma(source,fastLength,maType)
    wmaSlow= ma(source,slowLength,maType)
    if wmaFast>wmaSlow
        longVotes:= longVotes + 1
        array.set(positions, i, 1)

longCondition= longVotes==crossoverCount and strategy.position_size==0


//profitTicks = profitAtr*ta.atr(atrPeriod)/syminfo.mintick
//lossTicks = lossAtr*ta.atr(atrPeriod)/syminfo.mintick
profitPrice= close+profitAtr*ta.atr(atrPeriod)
lossPrice= close-lossAtr*ta.atr(atrPeriod)

if strategy.position_size>0
    profitPrice:= profitPrice[1]
    lossPrice:= lossPrice[1]

plot(profitPrice, color=color.green)
plot(lossPrice, color=color.red)

if longCondition and profitPrice>0
    strategy.entry("Long", strategy.long)

if longVotes<crossoverCount and strategy.position_size>0 and (high>profitPrice or low<lossPrice)
    strategy.close("Long")
    
longVotes:= 0