
La stratégie utilise l’indicateur CCI et l’indicateur de dynamique en combinaison avec l’indicateur RSI pour identifier les tendances du marché, pour entrer en jeu lorsque des zones de survente et de survente sont détectées, tout en utilisant le Brining pour identifier la tendance et le retour au centre. La stratégie peut identifier efficacement les ruptures et les retours, entrer en jeu au début de la tendance et peut être librement adaptée aux différentes variétés de transactions par paramètres.
Tout d’abord, la stratégie détermine les signaux d’achat et de vente par le passage au-dessus et au-dessous de l’axe zéro de l’indicateur CCI ou de l’indicateur de dynamique. En même temps, l’indicateur RSI doit être dans la zone de survente de survente, c’est-à-dire que le RSI est supérieur à 65 pour la zone de survente et inférieur à 35 pour la zone de survente.
En outre, la stratégie peut choisir de juger la divergence haussière et la divergence baissière du RSI pour s’assurer que les signaux d’achat et de vente sont plus fiables.
Lorsqu’il correspond à un signal d’achat CCI ou dynamique, et que le RSI est en zone de survente, la stratégie détermine si le précédent haut et le précédent bas sont au-dessus du centre de la courbe de Brin, et si c’est le cas, un signal d’achat est généré. Inversement, lorsqu’il correspond à un signal de vente, et que le précédent haut et bas sont au-dessous du centre de la courbe de Brin, un signal de vente est généré.
De cette façon, la stratégie utilise à la fois l’indice de tendance et l’indice de choc pour capturer en temps opportun le début d’une tendance et utiliser le jugement central pour éviter les fausses ruptures. Lorsque le prix s’écarte de la ceinture de Brin pour descendre, la stratégie est complètement nivelée pour bloquer les bénéfices et empêcher l’expansion des retraits.
La combinaison de l’indice de tendance et de l’indice de choc permet d’entrer au début d’une tendance tout en évitant de prendre des positions inutiles sur des marchés en choc
Utilisation de la liaison nucléaire de la ceinture de Brin comme signal d’entrée pour filtrer efficacement les fausses percées
Un regard sur l’historique du RSI pour éviter les signaux de trading erronés
Les transactions sont entièrement automatisées, sans intervention humaine, et adaptées aux algorithmes.
Les paramètres de stratégie peuvent être librement ajustés pour s’adapter à différentes variétés de transactions
Il est possible de définir un stop-loss et de contrôler efficacement les risques.
Une mauvaise configuration des paramètres de la bande de Bryn peut entraîner une erreur de jugement centrale
Les paramètres de l’indicateur sont mal configurés, ce qui peut entraîner des signaux erronés excessifs
La rupture a échoué et les prix ont dû être arrêtés à temps pour se replier sur le centre de la ceinture de Brin.
Les variétés négociées peuvent être moins rentables lorsque la liquidité est faible.
Avant de faire une transaction, vérifiez que les données historiques sont suffisantes pour éviter une mauvaise adéquation de la courbe.
Attention aux heures de transaction pour éviter les fausses percées
Optimisation des paramètres de la bande de Bryn pour une plus grande stabilité du centre
Tester l’effet de différents paramètres sur différentes variétés
Augmentation du contrôle du volume des transactions pour éviter une surcharge de positions individuelles
Augmentation du jugement sur les périodes de temps, opérant pendant les heures de négociation principales
Ajout d’algorithmes d’apprentissage automatique pour une génération de signaux plus intelligente
Accès à plus de sources de données pour évaluer les tendances globales du marché
Augmentation de l’intégration d’un plus grand nombre d’indicateurs pour former un ensemble d’indicateurs
Cette stratégie intègre l’indice de tendance et l’indice de choc, ce qui permet d’entrer sur le marché au début de la tendance. En utilisant la combinaison de la courbe de la courbe de Brin comme signal d’entrée, il est possible d’éviter efficacement les fausses percées. Les paramètres de la stratégie peuvent être ajustés de manière flexible pour s’adapter à différentes variétés, avec un effet de rétroaction optimal.
/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title='BroTheJo Strategy', shorttitle='BTJ', overlay=true)
// Input settings
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)
longEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition) and (prevHigh >= meanReversion) and (prevLow >= meanReversion)
shortEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition) and (prevHigh <= meanReversion) and (prevLow <= meanReversion)
// Plotting
oldLongEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition)
oldShortEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition)
plotshape(oldLongEntryCondition, title='BUY', style=shape.triangleup, 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, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)
// Strategy logic
if (longEntryCondition)
strategy.entry("Buy", strategy.long)
if (shortEntryCondition)
strategy.entry("Sell", strategy.short)
// 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)