Stratégie de renversement de la moyenne


Date de création: 2023-12-20 14:48:57 Dernière modification: 2023-12-20 14:48:57
Copier: 0 Nombre de clics: 637
1
Suivre
1621
Abonnés

Stratégie de renversement de la moyenne

Aperçu

La stratégie de rupture de la moyenne inverse est une stratégie de rupture de la tendance composée de plusieurs facteurs. Elle combine plusieurs indicateurs techniques, tels que les moyennes mobiles, les bandes de Brin, l’indicateur CCI et l’indicateur RSI, afin de capturer les occasions de reprise des prix de la zone de survente.

Principe de stratégie

La logique centrale de la stratégie est de faire un effet de levier approprié lorsque le prix revient de la zone de survente. Plus précisément, la stratégie juge l’opportunité d’un revirement en quatre points:

  1. L’indicateur CCI ou l’indicateur de dynamique émet un signal de fourche dorée pour juger si le cours est trop élevé ou trop élevé.

  2. L’indicateur RSI détermine si l’indicateur est dans une zone de survente. Le RSI est supérieur à 65 pour la zone de survente et inférieur à 35 pour la zone de survente.

  3. Utilisez la courbe de Brin pour déclencher une déviation de la zone normale. Lorsque le prix revient à la zone normale, il peut être inversé.

  4. Détectez la régularité de la dispersion de l’indicateur RSI et évitez de poursuivre les fausses ruptures.

Si les conditions ci-dessus sont remplies, la stratégie prend l’entrée dans le sens inverse.

Avantages stratégiques

Le plus grand avantage de cette stratégie réside dans la combinaison de plusieurs indicateurs pour juger de la probabilité d’un renversement, avec un taux de victoire moyen plus élevé. Plus précisément, il y a principalement les points suivants:

  1. Les jugements multifonctionnels sont plus fiables. Ils ne s’appuient pas uniquement sur un seul indicateur, ce qui réduit la probabilité d’erreur.

  2. Le renversement de tendance est une méthode de négociation plus fiable.

  3. Détecter les fuites, éviter la chasse aux fausses percées et réduire les risques systémiques.

  4. Les mécanismes de prévention des pertes contrôlent les risques.

Risques et solutions

Cette stratégie comporte également des risques, principalement liés aux points suivants:

  1. Il n’est pas possible de déterminer le moment de l’inversion. Le déclenchement du stop-loss peut être dûment étendu.

  2. Les paramètres de la ceinture de Brin sont mal définis et considèrent les prix normaux comme des anomalies. Ils devraient être associés aux paramètres de la volatilité du marché.

  3. Le nombre de transactions peut être plus élevé. Élargir de manière appropriée la gamme de paramètres de jugement tels que le CCI et réduire la fréquence des transactions.

  4. L’équilibre multifonctionnel peut varier considérablement. Les paramètres de l’indicateur doivent être jugés sur la base des données historiques.

Direction d’optimisation

Cette stratégie peut être optimisée dans les directions suivantes:

  1. L’utilisation d’algorithmes d’apprentissage automatique pour optimiser automatiquement les paramètres de l’indicateur.

  2. Il est possible d’ajouter des indices de schiste, d’amplitude, etc. pour juger de l’intensité de l’offre et de la demande.

  3. Augmentation des indicateurs de volume des transactions pour juger de la fiabilité de l’inversion, tels que le volume des transactions, le dépôt de données, etc.

  4. L’utilisation de la blockchain pour évaluer le sentiment du marché et améliorer l’adaptabilité des stratégies

  5. Introduction d’un mécanisme d’adaptation des arrêts de perte. Adaptation des arrêts de perte en fonction de la fluctuation des taux de marché.

Résumer

La stratégie de rupture de la valeur moyenne de l’inversion utilise une combinaison d’indicateurs pour juger des chances de reprise. Si le risque est maîtrisé, la probabilité de réussite est élevée. La stratégie a une grande utilité et de la place pour une optimisation supplémentaire.

Code source de la stratégie
/*backtest
start: 2023-12-12 00:00:00
end: 2023-12-19 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title='BroTheJo Strategy', shorttitle='BTJ INV', overlay=true)

// Input settings
stopLossInPips = input.int(10, minval=0, title='Stop Loss (in Pips)')
ccimomCross = input.string('CCI', 'Entry Signal Source', options=['CCI', 'Momentum'])
ccimomLength = input.int(10, minval=1, title='CCI/Momentum Length')
useDivergence = input.bool(false, title='Find Regular Bullish/Bearish Divergence')
rsiOverbought = input.int(65, minval=1, title='RSI Overbought Level')
rsiOversold = input.int(35, minval=1, title='RSI Oversold Level')
rsiLength = input.int(14, minval=1, title='RSI Length')
plotMeanReversion = input.bool(true, 'Plot Mean Reversion Bands on the chart')
emaPeriod = input(200, title='Lookback Period (EMA)')
bandMultiplier = input.float(1.6, title='Outer Bands Multiplier')

// CCI and Momentum calculation
momLength = ccimomCross == 'Momentum' ? ccimomLength : 10
mom = close - close[momLength]
cci = ta.cci(close, ccimomLength)
ccimomCrossUp = ccimomCross == 'Momentum' ? ta.cross(mom, 0) : ta.cross(cci, 0)
ccimomCrossDown = ccimomCross == 'Momentum' ? ta.cross(0, mom) : ta.cross(0, cci)

// RSI calculation
src = close
up = ta.rma(math.max(ta.change(src), 0), rsiLength)
down = ta.rma(-math.min(ta.change(src), 0), rsiLength)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
oversoldAgo = rsi[0] <= rsiOversold or rsi[1] <= rsiOversold or rsi[2] <= rsiOversold or rsi[3] <= rsiOversold
overboughtAgo = rsi[0] >= rsiOverbought or rsi[1] >= rsiOverbought or rsi[2] >= rsiOverbought or rsi[3] >= rsiOverbought

// Regular Divergence Conditions
bullishDivergenceCondition = rsi[0] > rsi[1] and rsi[1] < rsi[2]
bearishDivergenceCondition = rsi[0] < rsi[1] and rsi[1] > rsi[2]

// Mean Reversion Indicator
meanReversion = plotMeanReversion ? ta.ema(close, emaPeriod) : na
stdDev = plotMeanReversion ? ta.stdev(close, emaPeriod) : na
upperBand = plotMeanReversion ? meanReversion + stdDev * bandMultiplier : na
lowerBand = plotMeanReversion ? meanReversion - stdDev * bandMultiplier : na

// Entry Conditions
prevHigh = ta.highest(high, 1)
prevLow = ta.lowest(low, 1)
shortEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition) and (prevHigh >= meanReversion) and (prevLow >= meanReversion)
longEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition) and (prevHigh <= meanReversion) and (prevLow <= meanReversion)

// Plotting
oldShortEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition)
oldLongEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition)
plotshape(oldLongEntryCondition, title='BUY', style=shape.triangleup, text='B', location=location.belowbar, color=color.new(color.lime, 0), textcolor=color.new(color.white, 0), size=size.tiny)
plotshape(oldShortEntryCondition, title='SELL', style=shape.triangledown, text='S', location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)

// Strategy logic
if (longEntryCondition)
    stopLoss = close - stopLossInPips
    strategy.entry("Buy", strategy.long)
    strategy.exit("exit", "Buy", stop=stopLoss)
if (shortEntryCondition)
    stopLoss = close + stopLossInPips
    strategy.entry("Sell", strategy.short)
    strategy.exit("exit", "Sell", stop=stopLoss)

// Close all open positions when outside of bands
closeAll = (high >= upperBand) or (low <= lowerBand)

if (closeAll)
    strategy.close_all("Take Profit/Cut Loss")

// Plotting
plot(upperBand, title='Upper Band', color=color.fuchsia, linewidth=1)
plot(meanReversion, title='Mean', color=color.gray, linewidth=1)
plot(lowerBand, title='Lower Band', color=color.blue, linewidth=1)