Estrategia intertemporal de media móvil ponderada basada en la volatilidad real


Fecha de creación: 2024-01-17 15:09:28 Última modificación: 2024-01-17 15:09:28
Copiar: 1 Número de Visitas: 572
1
Seguir
1617
Seguidores

Estrategia intertemporal de media móvil ponderada basada en la volatilidad real

Descripción general

Esta estrategia utiliza el rango verdadero y el promedio móvil ponderado para construir un indicador transitorio para la determinación de tendencias. Al mismo tiempo, tiene un mecanismo de alza de la pirámide de múltiples posiciones acumuladas, así como varios mecanismos de stop loss para buscar ganancias estables.

Principio de estrategia

La estrategia primero calcula la amplitud de las ondas ascendentes (sube) y descendentes (baja), y luego calcula el WMA de los ciclos de la línea rápida (corto) y la línea lenta (largo), respectivamente. El diferencial de la línea rápida y lenta vuelve a calcular el indicador (ind) a través del WMA. Cuando el indicador pasa por 0 en la cima, genera una señal de compra, y cuando pasa por 0 en la parte inferior, genera una señal de venta.

Después de la salida a bolsa, la estrategia prevé 5 posiciones, de acuerdo con la ecuación de la acumulación de la pirámide. Al mismo tiempo, se establece un mecanismo de parada de pérdidas, y luego se debe determinar si la flotación actual está por debajo de la línea de parada de pérdidas para controlar el riesgo.

Análisis de las ventajas

La estrategia integra mecanismos como el juicio transitorio, la pirámide de alza y el stop loss múltiple, que permiten controlar el riesgo de manera efectiva y buscar ganancias estables.

El juicio interphaseo establece un sistema de juicio de tendencia a través de una combinación de líneas rápidas y lentas, que puede filtrar eficazmente el ruido del mercado y identificar los puntos de inflexión de la tendencia. El alza de la pirámide puede obtener más ganancias en la etapa inicial de la tendencia, y el mecanismo de alto de múltiples pérdidas puede controlar eficazmente las pérdidas individuales.

Análisis de riesgos

El principal riesgo de esta estrategia es que puede ocurrir un evento inesperado que cause una rápida reversión de la situación y cause pérdidas al activar el cutoff de pérdidas. Además, la configuración incorrecta de los parámetros también puede afectar la estabilidad de la estrategia.

El riesgo de una reversión del mercado puede ser respondido por la relajación adecuada de la línea de parada. La configuración de parámetros de optimización, el ajuste de los parámetros de ciclo, el número de posiciones, etc. pueden mejorar la estabilidad de la estrategia.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Aumentar el criterio de los indicadores estadísticos, combinado con parámetros de corrección de indicadores como la volatilidad y el volumen de transacciones, para que la estrategia sea más adaptable.

  2. Aumentar el conocimiento de los modelos de aprendizaje automático y el conocimiento de los modelos de aprendizaje profundo, como el LSTM, para mejorar la precisión de las estrategias.

  3. Optimizar el mecanismo de gestión de posiciones, se puede considerar ajustar la amplitud de la subida de posiciones en proporción a la fluctuación, para que el crecimiento de las posiciones sea más razonable.

  4. En combinación con el modelo de cobertura de futuros, el arbitraje a corto plazo permite un mayor control del riesgo.

Resumir

En general, esta estrategia es una estrategia de tendencias transcíclicas basada en indicadores de amplitud de onda reales, con un mecanismo de aumento de la pirámide y de alto riesgo múltiple, que puede controlar el riesgo de manera efectiva y buscar ganancias estables, es una estrategia de comercio cuantitativa muy práctica. Sin embargo, debe tenerse en cuenta el problema de la inversión de la tendencia y la optimización de los parámetros, que se puede optimizar aún más en términos de estadística, aprendizaje automático, etc.

Código Fuente de la Estrategia
/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 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/
// © MaclenMtz

//@version=5
strategy("[MACLEN] Rangos", shorttitle="Rangos [https://t.me/Bitcoin_Maclen]", overlay=false )

//------WINDOW----------

i_startTime = input(defval = timestamp("01 Jan 2022 00:00 -0700"), title = "Start Time", group = "Backtest Window")
i_endTime = input(defval = timestamp("31 Dec 2025 00:00 -0700"), title = "End Time")
window = true

//-----------------------------

sube = close>close[1] ? ta.tr : 0
baja = close<close[1] ? ta.tr : 0

corto = input(10)
largo = input(30)
suavizado = input(10)

fastDiff = ta.wma(sube, corto) - ta.wma(baja,corto)
slowDiff = ta.wma(sube, largo) - ta.wma(baja, largo)
ind = ta.wma(fastDiff - slowDiff, suavizado)

iColor = ind>0 ? color.green : ind<0 ? color.red : color.black
plot(ind, color=iColor)
plot(0, color=color.white)

long = ind[1]<ind and ind[2]<ind[1] and ind<0
short = ind[1]>ind and ind[2]>ind[1] and ind>0

plotshape(long and not long[1], style = shape.xcross, color=color.green, location=location.bottom, size=size.tiny)
plotshape(short and not short[1], style = shape.xcross, color=color.red, location=location.top, size=size.tiny)

//Contratos
contrato1 = input(50000)/(16*close)
c1 = contrato1
c2 = contrato1
c3 = contrato1*2
c4 = contrato1*4
c5 = contrato1*8

//cap_enopentrade = strategy.opentrades == 1 ? c1: strategy.opentrades == 2 ? c1+c2: strategy.opentrades == 3 ? c1+c2+c3: strategy.opentrades == 4 ? c1+c2+c3+c4: strategy.opentrades == 5 ? c1+c2+c3+c4+c5 : 0
openprofit_porc = math.round((close-strategy.position_avg_price)/strategy.position_avg_price * 100,2)

porc_tp = input.float(6.5)
safe = input(-6)

//----------------Strategy---------------------------

if strategy.opentrades == 0
    strategy.entry('BUY1', strategy.long, qty=c1, when = long and not long[1] and window)

if strategy.opentrades == 1
    strategy.entry('BUY2', strategy.long, qty=c2, when = long and not long[1] and window and openprofit_porc<safe)

if strategy.opentrades == 2
    strategy.entry('BUY3', strategy.long, qty=c3, when = long and not long[1] and window and openprofit_porc<safe)

if strategy.opentrades == 3
    strategy.entry('BUY4', strategy.long, qty=c4, when = long and not long[1] and window and openprofit_porc<safe)

if strategy.opentrades == 4
    strategy.entry('BUY5', strategy.long, qty=c5, when = long and not long[1] and window and openprofit_porc<safe)

min_prof = strategy.openprofit>0

strategy.close_all(when=short and min_prof)

plot(openprofit_porc)