
A estratégia de sincronização de tendências dinâmicas permite uma combinação eficaz de análise de dinâmica e julgamento de tendências, integrando os benefícios do índice de dinâmica relativa (RMI) e do indicador de tendências superficiais. A estratégia, ao mesmo tempo, observa as tendências de mudança de preços e os níveis de dinâmica do mercado e avalia a direção do mercado de uma perspectiva mais abrangente.
O RMI é uma versão melhorada do índice de força relativa (RSI). Ele incorpora mais características, como a direção e a amplitude das mudanças de preço, para determinar com mais precisão a dinâmica do mercado.
O RMI é calculado como uma média de subidas e descidas em um determinado período. Ao contrário do RSI, o RMI usa a variação do preço de fechamento do dia em relação ao preço de fechamento do dia anterior, em vez de um simples aumento positivo e aumento negativo.
Esta estratégia usa o valor médio do RMI em relação ao MFI para comparar com os valores de diminuição de dinâmica positiva e diminuição de dinâmica negativa previstos, para avaliar o nível de dinâmica do mercado atual e, assim, decidir sobre a posição em aberto e a posição em aberto.
O indicador de super tendência baseia-se em cálculos de períodos de tempo mais elevados e pode fornecer julgamentos sobre grandes tendências. Ele ajusta os parâmetros ATR dinâmicos de acordo com a amplitude de onda real, identificando efetivamente os pontos de mudança de tendência.
A estratégia também inclui a linha média ponderada por volume de transações VWMA, o que aumenta ainda mais a capacidade de identificar mudanças importantes nas tendências.
Esta estratégia permite opções de negociação de longo prazo, de curto prazo ou bidirecional. Isso permite ao trader flexibilidade para se ajustar de acordo com sua visão de mercado e preferências de risco.
Em comparação com estratégias que usam apenas um indicador de dinâmica ou um indicador de tendência, esta estratégia permite um julgamento mais preciso do movimento do mercado, integrando os benefícios do RMI e do indicador de tendência super.
A aplicação de RMI e indicadores de super tendências de diferentes períodos permite uma melhor compreensão das tendências de curto e longo prazo.
O mecanismo de parada em tempo real baseado em supertrends permite o controle efetivo de perdas individuais.
A opção de negociar a longo prazo, a curto prazo ou a dois sentidos permite que a estratégia se adapte a diferentes cenários de mercado.
A otimização de parâmetros como RMI e super tendências é complexa e pode afetar a eficácia da estratégia.
A hipersensibilidade às pequenas variações de mercado pode causar problemas com a frequência excessiva de perdas.
Solução: Alargação adequada do intervalo de suspensão ou outros métodos de suspensão de vibração.
Ampliar a gama de variedades aplicáveis, identificar as diferentes variedades e orientar a otimização de parâmetros. Permitir que a estratégia seja reproduzida em mais mercados.
Adição de modo de parada dinâmica para que a linha de parada possa melhor acompanhar a faixa atual e reduzir a parada excessiva causada por pequenas vibrações.
A combinação de mais critérios de avaliação como condição de filtragem evita a construção de um depósito sem sinais claros.
A estratégia permite um julgamento preciso do estado do mercado por meio de uma combinação inteligente de RMI e indicadores de tendência super. Também é excelente no controle de risco. Com otimização profunda, acredita-se que seu desempenho será cada vez melhor em várias variedades e períodos.
/*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)