Estrategia de combinación de indicadores de impulso múltiple


Fecha de creación: 2023-09-24 13:24:47 Última modificación: 2023-09-24 13:24:47
Copiar: 0 Número de Visitas: 823
1
Seguir
1617
Seguidores

Descripción general

Esta estrategia utiliza una combinación de varios indicadores de movimiento, como el indicador de movimiento de Cande, el indicador de RMI, el Triple HMA RSI, el Double EVW RSI y el Triple EMA RSI, para determinar la dirección de la tendencia y entrar en juego cuando todos los indicadores emiten señales al mismo tiempo. Se trata de una estrategia experimental de múltiples factores.

Principio de estrategia

  1. Calcule el índice de movilidad de Chande y establezca su línea de compra y venta.

  2. Calcula el RMI, el Triple HMA RSI, el Doble EVW RSI, el Triple EMA RSI y otros indicadores.

  3. Establezca una línea de compra y venta para cada indicador.

  4. Cuando el indicador de la dinámica de Chande ocurre al cruzar hacia arriba la línea de compra, compruebe si los otros indicadores también están por debajo de sus respectivas líneas de compra. Si todos los indicadores cumplen las condiciones al mismo tiempo, se genera una señal de compra.

  5. Por el contrario, si el indicador de la dinámica de Chande supera la línea de venta bajo, y los otros indicadores superan sus respectivas líneas de venta al mismo tiempo, se genera una señal de venta.

Ventajas estratégicas

  1. La combinación de varios indicadores puede ser verificada entre sí para evitar errores de juicio.

  2. El indicador de la dinámica de Chande es sensible a los cambios de tendencia y puede capturar con eficacia los giros.

  3. El indicador RMI puede mostrar el nivel de impulso para determinar si se está sobrecomprando o sobrevendendo.

  4. Los indicadores HMA RSI, EVW RSI, etc. se analizan de diferentes maneras para calcular el RSI.

  5. La combinación de múltiples indicadores permite una mayor flexibilidad para evaluar la eficacia de los mismos.

Riesgo estratégico

  1. La combinación de múltiples indicadores es más difícil de satisfacer, hay menos señales y es posible que se pierda la oportunidad.

  2. No hay medios de control de riesgo como el stop loss.

  3. El efecto del indicador es dependiente del período de tiempo y puede no ser sensible a diferentes períodos.

  4. Sin optimización de parámetros, la configuración de los parámetros del indicador puede ser incorrecta.

  5. La falta de datos de detección no permite una verificación completa de la estrategia.

Resolución de las mismas:

  1. Reducir adecuadamente la depreciación de los indicadores para ofrecer más oportunidades de negociación.

  2. Añadir el stop móvil o el stop duro para controlar la pérdida individual.

  3. Prueba en diferentes ciclos y variedades para encontrar los mejores parámetros.

  4. Optimización de parámetros mediante métodos como el aprendizaje automático o la búsqueda en red.

  5. La estrategia es robusta y se puede retomar en más mercados.

Dirección de optimización de la estrategia

  1. Prueba diferentes configuraciones de parámetros de indicadores para encontrar la configuración óptima

  2. Aumentar el índice de movilidad de adaptación a múltiples escalas de tiempo.

  3. Introducir detección de tendencias y evitar el comercio en contra.

  4. El uso de aprendizaje automático para mejorar la configuración de peso de múltiples indicadores.

  5. El sistema de uniformidad de la línea de juego permite la elección de la hora de entrada en el campo.

Resumir

Esta estrategia combina varios indicadores de dinámica para tratar de encontrar un punto de inflexión de tendencia más fiable. Esta estrategia de diversificación tiene un gran espacio de expansión y optimización, que puede comenzar desde la selección de parámetros, peso de indicadores y control de riesgos, para obtener más oportunidades de negociación que cumplan con la lógica del sistema, siempre que se garantice la calidad de la señal.

Código Fuente de la Estrategia
/*backtest
start: 2023-08-24 00:00:00
end: 2023-09-23 00:00:00
period: 1h
basePeriod: 15m
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/
// © burgercrisis

//@version=4
strategy("RMI + Triple HMRSI + Double EVWRSI + TERSI Strategy")

//* Backtesting Period Selector | Component *//
//* https://www.tradingview.com/script/eCC1cvxQ-Backtesting-Period-Selector-Component *//
//* https://www.tradingview.com/u/pbergden/ *//
//* Modifications made *//
testStartYear = input(2021, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(999999, "Backtest Stop Year")
testStopMonth = input(9, "Backtest Stop Month")
testStopDay = input(26, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true
/////////////// END - Backtesting Period Selector | Component ///////////////


src = input(close, "Price", type = input.source)
CMOlength = input(9, minval=1, title="Alpha Chande Momentum Length")

//CMO
momm = change(src)
f1(m) => m >= 0.0 ? m : 0.0
f2(m) => m >= 0.0 ? 0.0 : -m
m1 = f1(momm)
m2 = f2(momm)
sm1 = sum(m1, CMOlength)
sm2 = sum(m2, CMOlength)
percent(nom, div) => 100 * nom / div
chandeMO = percent(sm1-sm2, sm1+sm2)
plot(chandeMO, "Chande MO", color=color.blue)




//RMI
// Copyright (c) 2018-present, Alex Orekhov (everget)
// Relative Momentum Index script may be freely distributed under the MIT license.
length3 = input(title="RMI Length", type=input.integer, minval=1, defval=30)
momentumLength3 = input(title="RMI Momentum ", type=input.integer, minval=1, defval=25)
up3 = rma(max(change(src, momentumLength3), 0), length3)
down3 = rma(-min(change(src, momentumLength3), 0), length3)

rmi3 = (down3 == 0 ? 100 : up3 == 0 ? 0 : 100 - (100 / (1 + up3 / down3)))-50
//
//
// end RMI, end Alex Orekhov copywrite
//
//

lengthMA = input(7)
lengthRSI = input(14)
thrsi = hma(hma(hma(rsi(src, lengthRSI), lengthMA), lengthMA), lengthMA)
thrsi1 = (thrsi-50)*10

lengthMA2 = input(7)
lengthRSI2 = input(14)
devwrsi = ((ema(ema(vwma(rsi(src, lengthRSI2), lengthMA2), lengthMA2), lengthMA2))-50)*5

lengthMA3 = input(7)
lengthRSI3 = input(14)
tersi = ((ema(ema(ema(rsi(src, lengthRSI3), lengthMA3), lengthMA3), lengthMA3))-50)*10

rmirsi = ((thrsi*rmi3/25))

//Boundary Lines

obLevel1 = input(0, title="Chande Sellline")
osLevel1 = input(0, title="Chande Buyline")
hline(obLevel1, color=#0bc4d9)
hline(osLevel1, color=#0bc4d9)

obLevel2 = input(0, title="Triple HMRSI Sellline")
osLevel2 = input(0, title="Triple HMRSI Buyline")
hline(obLevel2, color=#5a0bd9)
hline(osLevel2, color=#5a0bd9)

obLevel3 = input(0, title="DEVWRSI Sellline")
osLevel3 = input(0, title="DEVWRSI Buyline")
hline(obLevel3, color=#5a0bd9)
hline(osLevel3, color=#5a0bd9)

obLevel4 = input(0, title="TERSI Sellline")
osLevel4 = input(0, title="TERSI Buyline")
hline(obLevel4, color=#5a0bd9)
hline(osLevel4, color=#5a0bd9)

obLevel5 = input(0, title="RMI Sellline")
osLevel5 = input(0, title="RMI Buyline")
hline(obLevel5, color=#5a0bd9)
hline(osLevel5, color=#5a0bd9)

obLevel6 = input(0, title="RMI*RSI Sellline")
osLevel6 = input(0, title="RMI*RSI Buyline")
hline(obLevel6, color=#5a0bd9)
hline(osLevel6, color=#5a0bd9)

plot((thrsi1), title="THRSI")
plot(devwrsi, color=color.red, title="DEVWRSI")
plot(tersi, color=color.yellow, title="TERSI")
plot(rmirsi, color=color.purple, title="RMI*HMRSI")
plot(rmi3, color=color.orange, title="RMI")




longcondition1 = crossover(chandeMO, osLevel1)
shortcondition1 = crossunder(chandeMO, obLevel1)
longcondition2 = rmirsi<osLevel6 and rmi3<osLevel5 and tersi<osLevel4 and devwrsi<osLevel3 and thrsi1<osLevel2  and longcondition1
shortcondition2 = rmirsi>obLevel6 and rmi3>obLevel5 and tersi>obLevel4 and devwrsi>obLevel3 and thrsi1>obLevel2  and shortcondition1

if testPeriod()
    if longcondition2
        strategy.entry("Buy", strategy.long)
    if shortcondition2
        strategy.entry("Sell", strategy.short)






hline(0, color=#C0C0C0, linestyle=hline.style_dashed, title="Zero Line")