
La estrategia de súper dinámica utiliza una combinación de varios indicadores de dinámica para realizar operaciones de compra o venta cuando varios indicadores de dinámica están a la vez en alza o baja. La estrategia, mediante la combinación de varios indicadores de dinámica, puede capturar con mayor precisión la tendencia de los precios y evitar las señales erróneas causadas por un solo indicador.
La estrategia utiliza al mismo tiempo cuatro indicadores RMI de Everget y un indicador de oscilación de la dinámica de Chande. El indicador RMI se basa en el cálculo de la dinámica de los precios y puede determinar la fuerza de subida y bajada de los precios.
La operación de compra se realiza cuando RMI5 pasa por su línea de compra, RMI4 pasa por su línea de compra, RMI3 pasa por su línea de compra, RMI2 pasa por su línea de compra, RMI1 pasa por su línea de compra y Chande MO pasa por su línea de compra.
La operación de venta se realiza cuando RMI5 atraviesa su línea de venta, RMI4 su línea de venta, RMI3 su línea de venta, RMI2 su línea de venta, RMI1 su línea de venta y Chande MO su línea de venta.
El RMI5 se establece en la dirección opuesta a la de otros indicadores RMI, lo que permite identificar mejor las tendencias y realizar operaciones piramidales.
La integración de varios indicadores permite determinar las tendencias con mayor precisión y evitar señales erróneas en un solo indicador
Incluye indicadores de varios períodos de tiempo para identificar tendencias a mayor escala
El indicador de RMI inverso puede ayudar a identificar tendencias y operar la pirámide
Chande MO ayuda a evitar errores en las transacciones de sobreventa
Combinaciones de indicadores excesivas, configuración de parámetros compleja, que requiere pruebas cuidadosas y optimización
Cuando varios indicadores cambian al mismo tiempo, puede producirse una señal errónea
La combinación de varios indicadores podría hacer que la frecuencia de las transacciones sea más baja
Necesidad de prestar atención a si los parámetros indicadores son adecuados para diferentes variedades y entornos de mercado
Configuración de los parámetros de los indicadores de prueba y optimización de los parámetros para mejorar la estabilidad de la estrategia
Intentar aumentar o disminuir algunos indicadores para evaluar el impacto en la calidad de la señal
Se pueden introducir condiciones de filtración para evitar señales erróneas en determinadas situaciones de mercado
Ajustar la posición de la línea de compra y venta del indicador para encontrar la combinación óptima de parámetros
Considerar la inclusión de un mecanismo de suspensión de pérdidas para controlar el riesgo
Esta estrategia mejora la capacidad de juicio sobre las tendencias del mercado mediante el uso integrado de varios indicadores dinámicos. Sin embargo, la configuración de los parámetros es compleja y requiere una prueba cuidadosa para optimizar, mejorar y ajustar constantemente. Si se utiliza correctamente, se espera obtener una señal de negociación superior y tener una cierta ventaja en el seguimiento de las tendencias del mercado.
/*backtest
start: 2023-10-29 00:00:00
end: 2023-11-05 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Super Momentum Strat", shorttitle="SMS", format=format.price, precision=2)
//* 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)
highlightBreakouts = input(title="Highlight Overbought/Oversold Breakouts ?", type=input.bool, defval=true)
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)+50
plot(chandeMO, "Chande MO", color=color.blue)
obLevel = input(75, title="Chande Sellline")
osLevel = input(25, title="Chande Buyline")
hline(obLevel, color=#0bc4d9)
hline(osLevel, color=#0bc4d9)
///
///RMIS
//
// Copyright (c) 2018-present, Alex Orekhov (everget)
// Relative Momentum Index script may be freely distributed under the MIT license.
//
///
///
//RMI1
length1 = input(title="RMI1 Length", type=input.integer, minval=1, defval=8)
momentumLength1 = input(title="RMI1 Momentum ", type=input.integer, minval=1, defval=3)
up1 = rma(max(change(src, momentumLength1), 0), length1)
down1 = rma(-min(change(src, momentumLength1), 0), length1)
rmi1 = down1 == 0 ? 100 : up1 == 0 ? 0 : 100 - (100 / (1 + up1 / down1))
obLevel1 = input(57, title="RMI1 Sellline")
osLevel1 = input(37, title="RMI1 Buyline")
rmiColor1 = rmi1 > obLevel1 ? #0ebb23 : rmi1 < osLevel1 ? #ff0000 : #ffe173
plot(rmi1, title="RMI 1", linewidth=2, color=rmiColor1, transp=0)
hline(obLevel1, color=#0b57d9)
hline(osLevel1, color=#0b57d9)
//RMI2
length2 = input(title="RMI2 Length", type=input.integer, minval=1, defval=12)
momentumLength2 = input(title="RMI2 Momentum ", type=input.integer, minval=1, defval=3)
up2 = rma(max(change(src, momentumLength1), 0), length2)
down2 = rma(-min(change(src, momentumLength1), 0), length2)
rmi2 = down2 == 0 ? 100 : up1 == 0 ? 0 : 100 - (100 / (1 + up2 / down2))
obLevel2 = input(72, title="RMI2 Sellline")
osLevel2 = input(37, title="RMI2 Buyline")
rmiColor2 = rmi1 > obLevel1 ? #0ebb23 : rmi2 < osLevel2 ? #ff0000 : #c9ad47
plot(rmi2, title="RMI 2", linewidth=2, color=rmiColor2, transp=0)
hline(obLevel2, color=#5a0bd9)
hline(osLevel2, color=#5a0bd9)
//RMI3
length3 = input(title="RMI3 Length", type=input.integer, minval=1, defval=30)
momentumLength3 = input(title="RMI3 Momentum ", type=input.integer, minval=1, defval=53)
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))
obLevel3 = input(46, title="RMI3 Sellline")
osLevel3 = input(24, title="RMI3 Buyline")
rmiColor3 = rmi3 > obLevel3 ? #0ebb23 : rmi3 < osLevel3 ? #ff0000 : #967d20
plot(rmi3, title="RMI 3", linewidth=2, color=rmiColor3, transp=0)
hline(obLevel3, color=#cf0bd9)
hline(osLevel3, color=#cf0bd9)
//RMI4
length4 = input(title="RMI4 Length", type=input.integer, minval=1, defval=520)
momentumLength4 = input(title="RMI4 Momentum ", type=input.integer, minval=1, defval=137)
up4 = rma(max(change(src, momentumLength4), 0), length4)
down4 = rma(-min(change(src, momentumLength4), 0), length4)
rmi4 = down4 == 0 ? 100 : up4 == 0 ? 0 : 100 - (100 / (1 + up4 / down4))
obLevel4 = input(0, title="RMI4 Sellline")
osLevel4 = input(100, title="RMI4 Buyline")
rmiColor4 = rmi4 > obLevel4 ? #0ebb23 : rmi4 < osLevel4 ? #ff0000 : #7a630b
plot(rmi4, title="RMI 4", linewidth=2, color=rmiColor4, transp=0)
hline(obLevel4, color=#bd1150)
hline(osLevel4, color=#bd1150)
//RMI5
length5 = input(title="RMI5 Length", type=input.integer, minval=1, defval=520)
momentumLength5 = input(title="RMI5 Momentum ", type=input.integer, minval=1, defval=137)
up5 = rma(max(change(src, momentumLength5), 0), length5)
down5 = rma(-min(change(src, momentumLength5), 0), length5)
rmi5 = down5 == 0 ? 100 : up4 == 0 ? 0 : 100 - (100 / (1 + up5 / down5))
buy5 = input(0, title="RMI5 Buy Above")
sell5 = input(47, title="RMI5 Sell Below")
rmiColor5 = rmi5 > buy5 ? #0ebb23 : rmi5 < sell5 ? #ff0000 : #7a630b
plot(rmi5, title="RMI 5", linewidth=2, color=rmiColor5, transp=0)
hline(buy5, color=#bd1150)
hline(sell5, color=#bd1150)
///
///END RMIS
//
//
// Relative Momentum Index script may be freely distributed under the MIT license.
//
///
///
hline(50, color=#C0C0C0, linestyle=hline.style_dashed, title="Zero Line")
//alerts
longcondition1 = crossover(chandeMO, osLevel)
shortcondition1 = crossunder(chandeMO, obLevel)
longcondition2 = rmi5>buy5 and rmi4<osLevel4 and rmi3<osLevel3 and rmi2<osLevel2 and rmi1<osLevel1 and longcondition1
shortcondition2 = rmi5<sell5 and rmi4>obLevel4 and rmi3>obLevel3 and rmi2>obLevel2 and rmi1>obLevel1 and shortcondition1
if testPeriod()
if longcondition2
strategy.entry("Buy", strategy.long)
if shortcondition2
strategy.entry("Sell", strategy.short)