
La estrategia de sincronización de tendencias dinámicas logra una combinación eficaz de análisis de la dinámica y el juicio de tendencias mediante la integración de las ventajas del índice de dinámica relativa (RMI) y el indicador de tendencias súper. La estrategia también se centra en las tendencias de cambio de precios y los niveles de dinámica del mercado para juzgar la dirección del mercado desde una perspectiva más integral.
El RMI es una versión mejorada del índice de fuerza relativa (RSI). Incorpora más características como la dirección y la magnitud de los cambios en los precios, lo que ayuda a juzgar con mayor precisión la dinámica del mercado.
El RMI se calcula de la siguiente manera: primero se calcula el aumento promedio y la caída promedio durante un período determinado. A diferencia del RSI, el RMI utiliza el cambio en el precio de cierre del día en relación con el precio de cierre del día anterior, en lugar de un simple aumento positivo y un aumento negativo.
Esta estrategia utiliza el promedio de RMI y MFI para comparar con los valores predeterminados positivos y negativos para determinar el nivel actual de dinámica del mercado y decidir entre posiciones abiertas y posiciones cerradas.
El indicador de tendencia súper, basado en el cálculo de un período de tiempo más alto, puede proporcionar un juicio sobre la tendencia general. Se ajusta el parámetro ATR dinámico en función de la amplitud de onda real, lo que permite identificar eficazmente los puntos de inflexión de la tendencia.
La estrategia también incluye la línea media ponderada por volumen de transacciones VWMA, lo que mejora aún más la capacidad de identificar cambios importantes en las tendencias.
Esta estrategia permite opciones de hacer más, hacer menos o negociar de dos maneras. Esto permite al comerciante la flexibilidad de adaptarse a su visión del mercado y sus preferencias de riesgo.
En comparación con las estrategias que utilizan solo un indicador de dinámica o un indicador de tendencia, esta estrategia permite un juicio más preciso de la tendencia del mercado mediante la integración de las ventajas de RMI y el indicador de tendencia súper.
La aplicación de RMI y indicadores de tendencias súper de diferentes períodos permite una mejor comprensión de las tendencias a corto y largo plazo.
El mecanismo de stop loss en tiempo real basado en supertrends permite un control efectivo de las pérdidas individuales.
La opción de operar a largo plazo, a corto plazo o en dos direcciones permite que la estrategia se adapte a diferentes entornos de mercado.
La optimización de parámetros como el RMI y las supertendencias es compleja, y la configuración incorrecta puede afectar la eficacia de la estrategia.
El exceso de sensibilidad a las fluctuaciones de los mercados en períodos pequeños puede causar problemas con el exceso de pérdidas.
Solución: una ampliación adecuada del rango de pérdidas, o la adopción de otros métodos de pérdidas de tipo vibratorio.
Ampliar el rango de variedades aplicables, identificar las diferentes variedades y orientar la optimización de los parámetros. Permitir que las estrategias se puedan replicar en más mercados.
La inclusión de un modo de parada dinámica permite a la línea de parada seguir mejor el rango de onda actual, reduciendo la parada excesiva causada por pequeños temblores.
En combinación con más indicadores de juicio como condición de filtración, evitar la construcción de un almacén sin una señal clara.
La estrategia logra un juicio preciso del estado del mercado a través de una combinación ingeniosa de RMI y indicadores de tendencia súper. También es excelente en el control de riesgos. Con una optimización profunda, se cree que su rendimiento será cada vez mejor en múltiples variedades y ciclos múltiples.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 3h
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/
// @ presentTrading
//@version=5
strategy("RMI Trend Sync - Strategy [presentTrading]", shorttitle = "RMI Sync [presentTrading]", overlay=true )
// ---> Inputs --------------
// Add Button for Trading Direction
tradeDirection = input.string("Both", "Select Trading Direction", options=["Long", "Short", "Both"])
// Relative Momentum Index (RMI) Settings
Length = input.int(21, "RMI Length", group = "RMI Settings")
pmom = input.int(70, "Positive Momentum Threshold", group = "RMI Settings")
nmom = input.int(30, "Negative Momentum Threshold", group = "RMI Settings")
bandLength = input.int(30, "Band Length", group = "Momentum Settings")
rwmaLength = input.int(20, "RWMA Length", group = "Momentum Settings")
// Super Trend Settings
len = input.int(10, "Super Trend Length", minval=1, group="Super Trend Settings")
higherTf1 = input.timeframe('480', "Higher Time Frame", group="Super Trend Settings")
factor = input.float(3.5, "Super Trend Factor", step=.1, group="Super Trend Settings")
maSrc = input.string("WMA", "MA Source", options=["SMA", "EMA", "WMA", "RMA", "VWMA"], group="Super Trend Settings")
atr = request.security(syminfo.tickerid, higherTf1, ta.atr(len))
TfClose1 = request.security(syminfo.tickerid, higherTf1, close)
// Visual Settings
filleshow = input.bool(true, "Display Range MA", group = "Visual Settings")
bull = input.color(#00bcd4, "Bullish Color", group = "Visual Settings")
bear = input.color(#ff5252, "Bearish Color", group = "Visual Settings")
// Calculation of Bar Range
barRange = high - low
// RMI and MFI Calculations
upChange = ta.rma(math.max(ta.change(close), 0), Length)
downChange = ta.rma(-math.min(ta.change(close), 0), Length)
rsi = downChange == 0 ? 100 : upChange == 0 ? 0 : 100 - (100 / (1 + upChange / downChange))
mf = ta.mfi(hlc3, Length)
rsiMfi = math.avg(rsi, mf)
// Momentum Conditions
positiveMomentum = rsiMfi[1] < pmom and rsiMfi > pmom and rsiMfi > nmom and ta.change(ta.ema(close,5)) > 0
negativeMomentum = rsiMfi < nmom and ta.change(ta.ema(close,5)) < 0
// Momentum Status
bool positive = positiveMomentum ? true : negativeMomentum ? false : na
bool negative = negativeMomentum ? true : positiveMomentum ? false : na
// Band Calculation
calculateBand(len) =>
math.min(ta.atr(len) * 0.3, close * (0.3/100)) * 4
band = calculateBand(bandLength)
// Range Weighted Moving Average (RWMA) Calculation
calculateRwma(range_, period) =>
weight = range_ / math.sum(range_, period)
sumWeightedClose = math.sum(close * weight, period)
totalWeight = math.sum(weight, period)
sumWeightedClose / totalWeight
rwma = calculateRwma(barRange, rwmaLength)
colour = positive ? bull : negative ? bear : na
rwmaAdjusted = positive ? rwma - band : negative ? rwma + band : na
max = rwma + band
min = rwma - band
longCondition = positive and not positive[1]
shortCondition = negative and not negative[1]
longExitCondition = shortCondition
shortExitCondition = longCondition
// Dynamic Trailing Stop Loss
vwma1 = switch maSrc
"SMA" => ta.sma(TfClose1*volume, len) / ta.sma(volume, len)
"EMA" => ta.ema(TfClose1*volume, len) / ta.ema(volume, len)
"WMA" => ta.wma(TfClose1*volume, len) / ta.wma(volume, len)
upperBand = vwma1 + factor * atr
lowerBand = vwma1 - factor * atr
prevLowerBand = nz(lowerBand[1])
prevUpperBand = nz(upperBand[1])
float superTrend = na
int direction = na
superTrend := direction == -1 ? lowerBand : upperBand
longTrailingStop = superTrend - atr * factor
shortTrailingStop = superTrend + atr * factor
// Strategy Order Execution
if (tradeDirection == "Long" or tradeDirection == "Both")
strategy.entry("Long", strategy.long, when = longCondition)
strategy.exit("Exit Long", "Long", when=longExitCondition, stop = longTrailingStop)
if (tradeDirection == "Short" or tradeDirection == "Both")
strategy.entry("Short", strategy.short, when =shortCondition)
strategy.exit("Exit Short", "Short", when=shortExitCondition, stop = shortTrailingStop)