
La stratégie de synchronisation des tendances dynamiques combine efficacement l’analyse de la dynamique et le jugement des tendances en intégrant les avantages de l’indice de dynamique relative (RMI) et de l’indicateur de super-tendance. La stratégie se concentre sur les tendances des changements de prix et les niveaux de dynamique du marché pour juger de la direction du marché dans une perspective plus globale.
Le RMI est une version améliorée de l’indice d’intensité relative (RSI). Il intègre plus de caractéristiques telles que la direction et l’ampleur des variations de prix, ce qui permet de juger plus précisément de la dynamique du marché.
Le RMI est calculé en calculant les hausses et les baisses moyennes d’une période donnée. Contrairement au RSI, le RMI utilise la variation du prix de clôture du jour par rapport au prix de clôture de la journée précédente, plutôt qu’une simple augmentation positive et une augmentation négative.
Cette stratégie utilise le RMI par rapport à la moyenne des IFM pour comparer avec les dévaluations de dynamique positive et négative prédéterminées, afin de juger du niveau actuel de dynamique du marché et de décider de la position de placement par rapport à la position de clôture.
L’indicateur de super-tendance est basé sur des calculs de périodes de temps plus élevées et peut fournir des jugements sur les grandes tendances. Il ajuste les paramètres ATR dynamiques en fonction de l’amplitude d’onde réelle, permettant ainsi d’identifier efficacement les points de retournement de tendance.
La stratégie a également ajouté une ligne moyenne pondérée en volume de transactions VWMA, renforçant encore la capacité d’identifier les changements de tendance importants.
Cette stratégie permet de choisir entre la position plus, la position plus courte ou la position bilatérale. Cela permet au trader de s’adapter de manière flexible en fonction de ses propres opinions sur le marché et de ses préférences en matière de risque.
Cette stratégie permet de juger plus précisément les tendances du marché en intégrant les avantages de l’indicateur RMI et de l’indicateur de super-tendance par rapport à une stratégie utilisant uniquement un indicateur de dynamique ou un indicateur de tendance.
L’utilisation d’indicateurs de RMI et de super-tendances pour différents cycles permet de mieux comprendre les tendances à court et à long terme.
Le système de stop loss en temps réel, basé sur une super tendance, permet de contrôler efficacement les pertes individuelles.
Le choix de la plus-value, de la plus-valeur ou de la transaction bidirectionnelle permet à la stratégie de s’adapter à différents environnements de marché.
L’optimisation de paramètres tels que l’IMR et les super-tendances est complexe et une mauvaise configuration peut affecter l’efficacité de la stratégie.
La sensibilité excessive aux fluctuations de marché à court terme peut entraîner des pertes de liquidité trop fréquentes.
Solution: élargissement approprié du périmètre ou utilisation d’une autre méthode de freinage.
Élargir la gamme de variétés applicables, identifier les différentes variétés et les directions d’optimisation des paramètres. Permettre à la stratégie d’être reproduite dans plus de marchés.
L’ajout d’un mode d’arrêt dynamique permet à la ligne d’arrêt de mieux suivre la bande passante et de réduire les pertes excessives causées par des vibrations mineures.
En combinant plus d’indicateurs de jugement comme conditions de filtrage, on évite de construire un entrepôt en l’absence de signal clair.
La stratégie permet de juger avec précision de l’état du marché grâce à une combinaison habile d’indicateurs de RMI et de super-tendances. Elle est également très bonne pour contrôler les risques. Grâce à une optimisation approfondie, on pense que sa performance sera de plus en plus excellente sur plusieurs variétés et plusieurs cycles.
/*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)