Estrategia de tendencia adaptativa de combinación de múltiples indicadores

El autor:¿ Qué pasa?, Fecha: 2023-12-19 11:01:05
Las etiquetas:

img

Resumen general

Esta estrategia juzga con precisión la tendencia mediante la combinación del indicador de media móvil Hull doble, el indicador de media móvil ponderada por volumen, el indicador MACD y el indicador del índice de fuerza real.

Principio de la estrategia

El indicador central de esta estrategia es el doble promedio móvil de Hull, que está controlado por dos parámetros keh y teh. Estos dos parámetros determinan el ciclo de la línea rápida y la línea lenta respectivamente.

El indicador de juicio auxiliar es la media móvil ponderada por volumen meh1. Cuando el precio es superior a meh1, es una tendencia alcista; cuando el precio es inferior a meh1, es una tendencia bajista.

Otro indicador de juicio auxiliar es el MACD. Se obtiene restando el promedio móvil rápido del promedio móvil lento para obtener el MACD, y luego utilizando el promedio móvil del MACD para obtener la línea de señal.

El último indicador de juicio auxiliar es TSI, que se calcula al suavizar dos veces la tasa de cambio de precio. Su magnitud de valor absoluto representa el impulso del cambio de precio. En las condiciones de compra y venta, se juzga que la línea de señal de TSI controla el momento de las entradas y salidas.

Al combinar las señales de estos indicadores, se puede juzgar con precisión la tendencia y los parámetros se pueden ajustar automáticamente para sincronizar con el mercado.

Ventajas

  1. El uso de la media móvil doble de Hull como indicador principal de juicio, combinado con varios otros indicadores, puede mejorar la precisión del juicio y reducir las señales falsas.

  2. La aplicación del indicador de la ETI para determinar el momento de entrada y salida del mercado puede controlar los riesgos.

  3. Múltiples parámetros ajustables para una gran adaptabilidad que puede adaptarse automáticamente a los cambios del mercado.

  4. La idea de combinación de indicadores y autoadaptación de parámetros hace que la estrategia sea estable con una fuerte rentabilidad continua.

Análisis de riesgos

  1. Aunque el indicador TSI se utiliza para determinar el momento, los indicadores utilizados en el algoritmo siguen siendo tipos de tendencia.

  2. Los parámetros deben establecerse razonablemente basándose en la experiencia.

  3. La combinación de múltiples indicadores aumenta la cantidad de cálculo, lo que aumenta la posibilidad de errores en grandes existencias de datos y períodos de tiempo.

  4. Necesidad de controlar el efecto de cálculo de los indicadores para evitar interferencias de datos anormales.

Dirección de optimización

  1. Se pueden probar otros indicadores auxiliares como el BOLL para que la señal sea más precisa y fiable.

  2. Optimice la lógica de entrada y salida, establezca condiciones de stop loss y take profit para controlar las ganancias y pérdidas individuales.

  3. Entrenar y optimizar los parámetros para diferentes variedades para que sean más adecuados para diferentes variedades.

  4. Aumentar el módulo de autoadaptación de parámetros para ajustar automáticamente los parámetros de la estrategia en función de los efectos de las transacciones recientes.

Resumen de las actividades

Esta estrategia integra las ventajas de múltiples indicadores y utiliza combinaciones de indicadores para juzgar la dirección de la tendencia. Mientras controla los riesgos, mejora la precisión de los juicios. A través de la optimización de parámetros y la optimización lógica, la estrategia puede adaptarse mejor a los cambios del mercado, al tiempo que reduce las pérdidas consecutivas y obtiene mayores ganancias. Esta estrategia es estable y puede usarse para acciones, criptomonedas y otras variedades a largo plazo.


/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//                                                    Quad-HullMA-cross & VWMA & MacD & TSI combination  <<<<< by SeaSide420 >>>>>>
strategy("MultiCross420", overlay=true, calc_on_order_fills= true, calc_on_every_tick=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0)
keh=input(title="Double HullMA 1",defval=7, minval=1)
teh=input(title="Double HullMA 2",defval=14, minval=1)
meh=input(title="VWMA",defval=1, minval=1)
meh1=vwma(close,round(meh))
n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma,sqn=round(sqrt(keh))
n2ma1=2*wma(close[2],round(keh/2))
nma1=wma(close[2],keh)
diff1=n2ma1-nma1,sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
b=n1>n2?lime:red
c=n1>n2?green:red
n2ma3=2*wma(close,round(teh/2))
nma2=wma(close,teh)
diff2=n2ma3-nma2,sqn2=round(sqrt(teh))
n2ma4=2*wma(close[2],round(teh/2))
nma3=wma(close[2],teh)
diff3=n2ma4-nma3,sqn3=round(sqrt(teh))
n3=wma(diff2,sqn2)
n4=wma(diff3,sqn3)
fastLength = input(title="MacD fastLength", defval=7)
slowlength = input(title="MacD slowlength", defval=14)
MACDLength = input(title="MacD Length", defval=3)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
a1=plot(n1,color=c),a2=plot(n2,color=c)
plot(cross(n1, n2) ? n1 : na, style = cross, color=b, linewidth = 3)
a3=plot(n3,color=c),a4=plot(n4,color=c)
plot(cross(n3, n4) ? n1 : na, style = cross, color=b, linewidth = 3)
//a5=plot(meh1,color=c)
long = input(title="TSI Long Length",  defval=5)
short = input(title="TSI Short Length",  defval=3)
signal = input(title="TSI Signal Length",  defval=2)
linebuy = input(title="TSI Upper Line",  defval=4)
linesell = input(title="TSI Lower Line",  defval=-4)
price = close
double_smooth(src, long, short) =>
    fist_smooth = ema(src, long)
    ema(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
closelong = n1<n2 and n3<n4 and n1>meh1
if (closelong)
    strategy.close("Long")
closeshort = n1>n2 and n3>n4 and n1<meh1
if (closeshort)
    strategy.close("Short") 
longCondition = strategy.opentrades<1 and n1>n2 and MACD>aMACD and n1<meh1 and n3>n4 and ema(tsi_value, signal)>linesell
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = strategy.opentrades<1  and n1<n2 and MACD<aMACD and n1>meh1 and n3<n4 and ema(tsi_value, signal)<linebuy
if (shortCondition)
    strategy.entry("Short",strategy.short)

Más.