Estrategia de media envolvente de reversión intencional


Fecha de creación: 2023-12-04 16:12:39 Última modificación: 2023-12-04 16:12:39
Copiar: 0 Número de Visitas: 759
1
Seguir
1619
Seguidores

Estrategia de media envolvente de reversión intencional

Descripción general

Una estrategia de inversión de la red de la media de la intención es una estrategia de inversión de la intención basada en la media móvil. La estrategia utiliza la media móvil de los dos índices como base de cálculo y agrega varias bandas de la red de la media de la intención por encima y por debajo de ella.

Principio de estrategia

La estrategia utiliza la media móvil de doble índice (DEMA) como indicador básico. La media móvil de doble índice es una media móvil de alta sensibilidad a los cambios de precio. Sobre su base, la estrategia agrega varias bandas de precios en los lados superior e inferior, respectivamente, para formar una red de zonas de red de línea uniforme.

La estrategia abre una posición baja cuando el precio se acerca a la banda de cobertura superior; cuando el precio baja y toca la banda de cobertura inferior, la estrategia abre más posiciones. Cada vez que se toca una nueva banda de precios, se aumenta la posición.

La estrategia capta la hipervolatilidad de los precios a través de la zona de enlace y se retira de la ganancia cuando llega la reversión, logrando el objetivo de negociación de compra y venta. Se aplica a los ciclos de mercado con características de regreso a la media evidente, como las monedas digitales como Bitcoin.

Ventajas estratégicas

  • El uso de la media móvil de doble índice es más sensible a los cambios de precios a corto plazo y permite capturar rápidamente los giros de tendencia.
  • La creación de una zona de red cercana a la línea media permite capturar con mayor precisión las inversiones de precios.
  • El objetivo de esta iniciativa es crear una red de almacenamiento en lotes para aprovechar al máximo la eficiencia de los fondos.
  • Cambiar de dirección rápidamente después de obtener ganancias y responder con flexibilidad a los cambios en el mercado.
  • Se puede optimizar libremente ajustando los parámetros.

Riesgo estratégico

  • La mayor parte de las cosas no pueden cambiar de dirección para obtener beneficios.
  • La configuración inadecuada de los parámetros puede conducir a operaciones demasiado frecuentes.
  • La idea de que el mercado sea relativamente estable no se aplica a mercados con grandes fluctuaciones.
  • La zona de cobertura es demasiado pequeña y puede ocurrir que no se pueda abrir una posición.

Se puede reducir el riesgo de la ampliación adecuada de la zona de la red de paquetes, aumentando la sensibilidad a los cambios en los precios de desencadenamiento. Al mismo tiempo, se puede ajustar el parámetro de longitud de la línea media móvil para adaptarse a las diferentes circunstancias del ciclo.

Dirección de optimización de la estrategia

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Optimización de algoritmos de medias móviles. Se puede probar el efecto de diferentes tipos de indicadores de medias móviles.

  2. Ajuste el parámetro de longitud media de la línea. Reducir los ciclos puede mejorar la captura de cambios de precios a corto plazo, pero también puede aumentar el ruido de las transacciones.

  3. Optimice los parámetros de la red de enlaces. Puede probar diferentes configuraciones porcentuales para encontrar la combinación óptima de parámetros.

  4. Aumentar las estrategias de stop loss. Configurar un stop loss móvil o un stop loss de retiro para controlar eficazmente las pérdidas individuales.

  5. Aumentar las condiciones de filtración. En combinación con otras señales de indicadores, evitar la invalidación de la posición en circunstancias irracionales.

Resumir

La estrategia de mediana de la red de inversiones con intención de invertir captura eficazmente las oportunidades de reversión de precios mediante la construcción de un canal de precios mediano. Puede ajustar los parámetros con flexibilidad y se aplica a diferentes entornos de mercado. La estrategia tiene un costo de transacción bajo y un alto rendimiento, y es una estrategia de comercio cuantitativa recomendable.

Código Fuente de la Estrategia
/*backtest
start: 2022-11-27 00:00:00
end: 2023-12-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Mean Reversion - Envelope Strategy", overlay=true )

// ----------------------- DESCRIPTION -----------------------
// THIS SCRIPT IS A MEAN REVERSION SYSTEM THAT USES A MOVING AVERAGE AS BASE CALCULATION AND A % OF THIS MOVING AVERAGE TO CALCULATE THE ENVELOPE
// BY DEFAULT, THE SYSTEM WILL PLACE LONG ORDERS ON THE MOVING AVERAGE -5% PER ENVELOPE COUNT (5%, 10% AND SO ON...)
// YOU CAN ENABLE THE SHORT ORDERS THAT WILL FOLLOW THE SAME LOGIC ON THE OPPOSITE SIDE
// THE SYSTEM WILL CLOSE EVERY ONGOING TRADE WHEN THE PRICE RETURNS TO THE MEAN

// ---------------------------------------------
// ---------------- SETTINGS -------------------
src = input(close, "Moving Average Source", group = "Moving Average")
ma_window = input.int(5, "Moving Average Window", step = 1, group = "Moving Average")
ma_type = input.string('4. DEMA', "Moving Average Type", options=['1. SMA', '2. EMA', '3. RMA', '4. DEMA'], group = "Moving Average")
enveloppe_step = input.float(0.05, "Delta Per Enveloppe", step = 0.01, group = "Envelope")
envelope_count = input.int(5, "Envelope count", options = [1, 2, 3, 4, 5], group = "Envelope")
use_longs = input.bool(true, 'Use Long Orders ?', group = "Orders") 
use_short = input.bool(false, 'Use Short Orders ?', group = "Orders")


// ---------------------------------------------
// -------------- INDICATORS -------------------
ma_funct() =>
    if(ma_type == '1. SMA') 
        ta.sma(src, ma_window)
    if(ma_type == '2. EMA') 
        ta.ema(src, ma_window)
    if(ma_type == '3. RMA') 
        ta.rma(src, ma_window)
    if(ma_type == '4. DEMA') 
        2 * ta.ema(src, ma_window) - ta.ema(ta.ema(src, ma_window), ma_window)

ma_base = ma_funct()

ma_high_1 = envelope_count > 0 ? ma_base * (1 + enveloppe_step) : na
ma_high_2 = envelope_count > 1 ? ma_base * (1 + enveloppe_step * 2) : na
ma_high_3 = envelope_count > 2 ? ma_base * (1 + enveloppe_step * 3) : na
ma_high_4 = envelope_count > 3 ? ma_base * (1 + enveloppe_step * 4) : na
ma_high_5 = envelope_count > 4 ? ma_base * (1 + enveloppe_step * 5) : na

ma_low_1 = envelope_count > 0 ? ma_base * (1 - enveloppe_step) : na
ma_low_2 = envelope_count > 0 ? ma_base * (1 - enveloppe_step * 2) : na
ma_low_3 = envelope_count > 0 ? ma_base * (1 - enveloppe_step * 3) : na
ma_low_4 = envelope_count > 0 ? ma_base * (1 - enveloppe_step * 4) : na
ma_low_5 = envelope_count > 0 ? ma_base * (1 - enveloppe_step * 5) : na


// ---------------------------------------------
// --------------- STRATEGY --------------------
if use_longs
    if envelope_count > 0 and strategy.opentrades < 1
        strategy.entry('long 1', strategy.long, limit=ma_low_1, qty=(strategy.equity / ma_low_1) * (1 / envelope_count))
    if envelope_count > 1 and strategy.opentrades < 2
        strategy.entry('long 2', strategy.long, limit=ma_low_2, qty=(strategy.equity / ma_low_2) * (1 / envelope_count))
    if envelope_count > 2 and strategy.opentrades < 3
        strategy.entry('long 3', strategy.long, limit=ma_low_3, qty=(strategy.equity / ma_low_3) * (1 / envelope_count))
    if envelope_count > 3 and strategy.opentrades < 4
        strategy.entry('long 4', strategy.long, limit=ma_low_4, qty=(strategy.equity / ma_low_4) * (1 / envelope_count))
    if envelope_count > 4 and strategy.opentrades < 5
        strategy.entry('long 5', strategy.long, limit=ma_low_5, qty=(strategy.equity / ma_low_5) * (1 / envelope_count))


if use_short
    if envelope_count > 0 and strategy.opentrades < 1
        strategy.entry('short 1', strategy.short, limit=ma_high_1, qty=(strategy.equity / ma_high_1) * (1 / envelope_count))
    if envelope_count > 1 and strategy.opentrades < 2
        strategy.entry('short 2', strategy.short, limit=ma_high_2, qty=(strategy.equity / ma_high_2) * (1 / envelope_count))
    if envelope_count > 2 and strategy.opentrades < 3
        strategy.entry('short 3', strategy.short, limit=ma_high_3, qty=(strategy.equity / ma_high_3) * (1 / envelope_count))
    if envelope_count > 3 and strategy.opentrades < 4
        strategy.entry('short 4', strategy.short, limit=ma_high_4, qty=(strategy.equity / ma_high_4) * (1 / envelope_count))
    if envelope_count > 4 and strategy.opentrades < 5
        strategy.entry('short 5', strategy.short, limit=ma_high_5, qty=(strategy.equity / ma_high_5) * (1 / envelope_count))

strategy.exit('close', limit=ma_base)


// ---------------------------------------------
// ------------------ PLOT ---------------------
ma_base_plot = plot(ma_base, title = "Base MA", color = color.orange, linewidth = 3, offset = 1)

ma_high_1_plot = plot(ma_high_1, title = "MA high 1", color = color.red, offset = 1)
ma_high_2_plot = plot(ma_high_2, title = "MA high 2", color = color.red, offset = 1)
ma_high_3_plot = plot(ma_high_3, title = "MA high 3", color = color.red, offset = 1)
ma_high_4_plot = plot(ma_high_4, title = "MA high 4", color = color.red, offset = 1)
ma_high_5_plot = plot(ma_high_5, title = "MA high 5", color = color.red, offset = 1)

ma_low_1_plot = plot(ma_low_1, title = "MA low 1", color = color.green, offset = 1)
ma_low_2_plot = plot(ma_low_2, title = "MA low 2", color = color.green, offset = 1)
ma_low_3_plot = plot(ma_low_3, title = "MA low 3", color = color.green, offset = 1)
ma_low_4_plot = plot(ma_low_4, title = "MA low 4", color = color.green, offset = 1)
ma_low_5_plot = plot(ma_low_5, title = "MA low 5", color = color.green, offset = 1)