Stratégie de retournement de fond sur plusieurs périodes


Date de création: 2023-10-18 12:27:29 Dernière modification: 2023-10-18 12:27:29
Copier: 0 Nombre de clics: 642
1
Suivre
1617
Abonnés

Stratégie de retournement de fond sur plusieurs périodes

Aperçu

La stratégie utilise une combinaison de plusieurs indicateurs de forme sous-jacents pour identifier les moments de revers majeurs, adopter une stratégie de suivi de tendance et de stop loss, avec pour objectif de gagner plus que le stop loss.

Le principe

Cette stratégie est principalement basée sur les indicateurs suivants pour juger de l’inversion du fond:

  1. La BottomSensivity de Noro: détermine si la ligne K présente une forme de fond spécifique.

  2. L’indice de volonté de certitude (CVI): juger si la psychologie de la pluralité est en train de changer

  3. L’indicateur ultime (UCS): détermine si la dérive est supérieure à la moyenne.

  4. L’indicateur de rendement (RSI) est utilisé pour juger de la survente.

  5. La combinaison de formes: une variété de formes de base, y compris des formes de croûte, des crochets, etc.

La stratégie utilise plusieurs combinaisons d’indicateurs sous-jacents, générant un signal d’achat lorsque le nombre de formes sous-jacentes définies par les paramètres de la stratégie est satisfait. Pour filtrer les fausses ruptures, la stratégie ajoute également le jugement de l’indicateur RSI, qui ne déclenche des achats que si elles sont survendues.

L’utilisateur peut personnaliser l’utilisation et les paramètres de chaque indicateur de jugement inférieur, ce qui permet une grande flexibilité. En même temps, la stratégie ajoute un filtre SMA linéaire pour éviter de faire trop en dessous de la tendance.

Les avantages

  • L’utilisation d’indicateurs multiples pour un jugement plus sûr

  • Paramètres d’indicateur personnalisables pour différentes variétés

  • Le filtrage SMA est linéaire et évite le recul.

  • L’accès à la ligne K rouge est configurable pour réduire les risques

  • Alerte à la fenêtre, surveillance en direct

Les risques

  • Les jugements combinés peuvent manquer le fond

  • Le bas n’est pas forcément en perpétuelle inversion

  • La question est de savoir si le volume des transactions peut soutenir la reprise.

Direction d’optimisation

  • Optimisation de la configuration des paramètres de l’indicateur et adaptation aux différentes variétés

  • Augmentation de la gestion des positions et réduction des coûts par l’augmentation des stocks

  • Augmenter les stratégies de stop loss et suivre les tendances de stop loss

Résumer

La stratégie exploite pleinement le jugement multi-indicateurs pour améliorer l’exactitude de l’identification des fonds de roulement, le suivi de la tendance pour bloquer les pertes et les gains, afin de contrôler efficacement les risques. Cependant, il faut toujours se demander si le volume des transactions peut soutenir la reprise de la tendance. Les utilisateurs peuvent optimiser les paramètres en fonction des caractéristiques de la variété pour s’adapter aux différents environnements du marché.

Code source de la stratégie
/*backtest
start: 2022-10-11 00:00:00
end: 2023-10-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// the original indicator is Noro's BottomSensivity v0.6
//@version=4
strategy("Noro's BottomSensivity v0.6 strategy + rsi + Alarm", shorttitle="Bottom 0.6 StRsiAlarm", overlay=true)

overSold = input(35)
overBought = input(70)
botsens = input(defval = 3, minval = 1, maxval = 4, title = "Bottom-Sensivity")
smalen = input(defval = 25, minval = 20, maxval = 200, title = "SMA Length")
bars = input(defval = 3, minval = 2, maxval = 4, title = "Bars of Locomotive")
useloc = input(true, title = "Use bottom-pattern Locomotive?")
usepin = input(true, title = "Use bottom-pattern Pin-bar?")
usecvi = input(true, title = "Use bottom-indicator CVI?")
useucs = input(true, title = "Use bottom-indicator UCS?")
usevix = input(true, title = "Use bottom-indicator WVF?")
usersi = input(true, title = "Use bottom-indicator RSI?")
usered = input(false, title = "Only red candles?")
usesma = input(true, title = "Use SMA Filter?")
showsma = input(false, title = "Show SMA Filter?")

//SMA Filter
sma = sma(close, smalen)
colsma = showsma == true ? red : na
plot(sma, color = colsma)

//VixFix method
//Start of ChrisMoody's code
pd = 22
bbl = 20
mult = 2
lb = 50
ph = .85
pl = 1.01
hp = false
sd = false
wvf = ((highest(close, pd)-low)/(highest(close, pd)))*100
sDev = mult * stdev(wvf, bbl)
midLine = sma(wvf, bbl)
lowerBand = midLine - sDev
upperBand = midLine + sDev
rangeHigh = (highest(wvf, lb)) * ph
rangeLow = (lowest(wvf, lb)) * pl
//End of ChrisMoody's code

//Locomotive mmethod
bar = close > open ? 1 : close < open ? -1 : 0
locob = bar == 1 and bar[1] == -1 and bar[2] == -1 and (bar[3] == -1 or bars < 3) and (bar[4] == -1 or bars < 4) ? 1 : 0

//PIN BAR
body = abs(close - open)
upshadow = open > close? (high - open) : (high - close)
downshadow = open > close ? (close - low) : (open - low)
pinbar = open[1] > close[1] ? (body[1] > body ? (downshadow > 0.5 * body ? (downshadow > 2 * upshadow ? 1 : 0 ) : 0 ) : 0 ) : 0

//CVI method
//Start of LazyBear's code
ValC=sma(hl2, 3)
bull=-.51
bear=.43
vol=sma(atr(3), 3)
cvi = (close-ValC) / (vol*sqrt(3))
cb= cvi <= bull ? green : cvi >=bear ? red : cvi > bull ? blue : cvi < bear ? blue : na
bull1 = cvi <= bull
bear1 = cvi >= bear
bull2 = bull1[1] and not bull1
bear2 = bear1[1] and not bear1
//End of LazyBear's code

//UCS method
//Start of UCS's code
ll = lowest(low, 5)
hh = highest(high, 5)
diff = hh - ll
rdiff = close - (hh+ll)/2
avgrel = ema(ema(rdiff,3),3)
avgdiff = ema(ema(diff,3),3)
mom = ((close - close[3])/close[3])*1000
SMI = avgdiff != 0 ? (avgrel/(avgdiff/2)*100) : 0
SMIsignal = ema(SMI,3)
ucslong = SMI < -35  and mom > 0 and mom[1] < 0 ? 1 : 0
//End of UCS's code

//RSI method
//Chris Moody's code
up = rma(max(change(close), 0), 2)
down = rma(-min(change(close), 0), 2)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsib = rsi < 10 ? 1 : 0
//Chris Moody's code

//sum
locobot = useloc == false ? 0 : locob
vixfixbot = usevix == false ? 0 : wvf >= upperBand or wvf >= rangeHigh ? 1 : 0
cvibot = usecvi == false ? 0 : bull2 == true ? 1 : 0
ucsbot = useucs == false ? 0 : ucslong == 1 ? 1 : 0
rsibot = usersi == false ? 0 : rsib
pinbot = usepin == false ? 0 : pinbar
score = vixfixbot + locobot + cvibot + ucsbot + rsibot + pinbot

//arrows
bottom = usered == false ? usesma == false ? score >= botsens ? 1 : 0 : high < sma and score >= botsens ? 1 : 0 : usesma == false ? score >= botsens and close < open ? 1 : 0 : high < sma and score >= botsens and close < open ? 1 : 0
plotarrow(bottom == 1 ? 1 : na, title="Buy arrow", colorup=lime, maxheight=60, minheight=50, transp=0)
data = bottom == 1
plotchar(data, char=" ", text="BUY!", location=location.belowbar, color=green, size=size.small)


//Market buy and exit
strategy.entry("BUY!", strategy.long, when =(bottom == 1) and(rsi(close,14)<overSold))
strategy.close("BUY!", when = (crossunder(rsi(close,14), overBought)))
alarm = bottom == 1 and(rsi(close,14)<overSold)
alertcondition(alarm == 1,title="BUY+RSI",message="BUY+RSI")