Stratégie de cassure des prix des bandes de Bollinger A


Date de création: 2023-11-06 11:43:14 Dernière modification: 2023-11-06 11:43:14
Copier: 0 Nombre de clics: 355
1
Suivre
1141
Abonnés

Stratégie de cassure des prix des bandes de Bollinger A

Aperçu

Cette stratégie utilise l’indicateur de la ligne de Brin pour déterminer l’ampleur des fluctuations du prix, en combinaison avec la forme de la ligne K pour effectuer des opérations de rupture de prix. La trajectoire ascendante et descendante de la ligne de Brin peut généralement déterminer la tendance à la hausse et à la baisse du prix, et en la combinant avec l’indicateur de la forme de la ligne K, il est possible de trouver un moment de vente plus évident.

Principe de stratégie

La stratégie est principalement composée des indicateurs suivants:

  1. L’indicateur de la ligne de broyage, comprenant la voie moyenne, la voie supérieure et la voie inférieure de la ligne de broyage. La ligne de broyage calcule la marge de fluctuation du prix par la différence standard du prix, ce qui permet de juger de la tendance à la fluctuation du prix.

  2. L’indicateur Stoch, qui permet de déterminer si une action est en survente ou en survente. Les lignes K et D permettent de déterminer si une rupture est à la hausse ou à la baisse.

  3. La forme de la ligne K est un bon moment pour acheter ou vendre des formes courantes telles que la ligne du grand soleil, la ligne du grand diable.

Conditions d’achat: le prix a traversé la ligne de Brin, l’indicateur Stoch a montré une survente ((K < 20, D < 20), la moyenne mobile rapide a franchi la moyenne mobile lente vers le haut.

Les conditions de vente sont les suivantes: mise en circulation sous le prix, ou stop loss après profit.

Cette stratégie, combinant l’analyse de tendance et le jugement de surachat et de survente, réduit le taux de faux succès et permet d’entrer en temps opportun sur le marché lorsque la tendance se manifeste. Cependant, il existe également un risque d’être piégé et de devoir s’arrêter au bon moment.

Analyse des avantages

  1. La combinaison des lignes de Bryn et de l’indicateur Stoch permet d’acheter des actions lorsque le cours est en baisse marquée, ce qui réduit le risque.

  2. La forme en K est une condition supplémentaire pour éviter les erreurs d’achat lors d’une secousse.

  3. L’utilisation de deux critères de jugement a amélioré la stabilité et la fiabilité de la stratégie.

  4. Les mécanismes de prévention des pertes permettent d’éviter des pertes importantes.

Analyse des risques

  1. Les transactions en ligne sont faciles à manipuler. La rupture du marché peut entraîner des pertes importantes.

  2. L’indicateur Stoch est plus susceptible d’émettre de faux signaux et le risque de perte est plus élevé lorsqu’il est utilisé seul.

  3. Les signaux de transaction peuvent être faussés par des chocs.

  4. Il est nécessaire d’arrêter les pertes en temps opportun et de contrôler les risques.

  5. Il faut faire attention à l’intensité de la rupture pour éviter le retour en arrière.

Direction d’optimisation

  1. Optimiser les pools d’actions en choisissant les actions les plus volatiles et les plus tendance.

  2. Optimiser les paramètres de la ligne de boulonnage, ajuster le cycle de la voie médiane, optimiser la maîtrise des points d’achat et de vente.

  3. Optimiser les paramètres de Stoch, ajuster les cycles des lignes K et D et améliorer la fiabilité des indicateurs.

  4. Pour éviter un retour en arrière, il faut augmenter le volume de transactions.

  5. Augmenter les stratégies de stop loss, telles que le suivi des stops, le stop loss mobile, etc. pour contrôler le risque de pertes.

  6. Évaluer l’ajout d’autres indicateurs techniques, tels que MACD, KDJ, etc., pour améliorer la stabilité de la stratégie.

  7. Test de différentes durées de détention pour optimiser le taux de retrait des bénéfices

Résumer

La stratégie intègre la ligne de Brin, l’indicateur de Stoch et les indicateurs techniques fondamentaux, sous réserve de maîtriser le risque, acheter à des prix bas et vendre à des prix près des hauts historiques, ce qui permet de réaliser un modèle de profit relativement stable. Mais il existe également des risques tels que la couverture, l’effet de stop-loss.

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

//@version=3
strategy("Bollinger e Tendência", overlay=true)

//MÉDIAS 
periodolenta = 14
periodosimples = 47
periodome = 7

psimples = input(title="Período da média simples", defval=periodosimples)
pexp = input(title="Período da média exponencial", defval=periodome)
pexplenta = input(title="Período da média exp lenta", defval=periodolenta)
msimples = sma(close, psimples)
mexp = ema(close, pexp)
mexplenta = ema(close, pexplenta)

plot(msimples, linewidth=2, color=yellow)
plot(mexp, linewidth=5, color=white)
plot(mexplenta, linewidth=2, color=orange)

//BOLLANGER
length = input(21, minval=2)
src = input(close, title="Source")
mult = input(1.5, minval=0.001, maxval=50)
basis = sma(src, length)
dev = mult * stdev(src, length)
upperBol = basis + dev
lowerBol = basis - dev

p1 = plot(upperBol, title="Upper", color=blue, linewidth=3)
p2 = plot(lowerBol, title="Lower", color=blue, linewidth=3)
fill(p1, p2, color = purple, transp=90)

//BBW (altura do Bollanger)
basis2 = sma(close, 21)
bbw = (upperBol-lowerBol)/basis2


//STOCH E FORÇA
source = close
lengthRSI = input(11, minval=2), lengthStoch = input(7, minval=2)
smoothK = input(3,minval=3), smoothD = input(4,minval=3)
OverSold = input(20), OverBought = input(80)
rsi1 = rsi(source, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
hline(OverSold,color=blue)
hline(OverBought,color=blue)



// Cor das Tendências (Verde ou Vermelho)
// Baseado no código: "Pivot Daily Price Color" (by Rimko)
pivot = (high + low + close ) / 3.0 
dtime_pivot = request.security(syminfo.tickerid, 'D', pivot[1]) 
pv = dtime_pivot ? dtime_pivot : na
pe = ema(close,periodome)
col = sma(close,1)>pv?green:red
col2 = sma(close,1)>pe?green:red
offs_daily = 0 
pp=plot(pv, title="Daily Pivot",style=linebr, color=black,linewidth=2) 
p=plot(sma(close,1), transp=100, editable=false)
pema = plot(pe, title="EMA",style=line, color=black,linewidth=2, transp = 50)
fill(p,pema,color=col2,title="EMA to price color", transp = 50)
fill(pp,p,color=col, title="Privot to price color", transp = 90) 


//*************************************************************************************************************************************************
// Candles (identificação):
// Baseado no código: "Candlesticks Pattern Identified" (by Repo32)
trend= input(5, minval=1, title="Trend in Bars")

DojiSize = input(0.05, minval=0.01, title="Doji size")
data=(abs(open - close) <= (high - low) * DojiSize)
//plotchar(data, title="Doji", color=white)
plotshape(data, title="Doji", color=white, style=shape.cross)
 //text='Doji'

data6=(close[1] > open[1] and open > close and open <= close[1] and open[1] <= close and open - close < close[1] - open[1] and open[trend] < open)
plotshape(data6, title= "Bearish Harami", color=red, style=shape.triangledown)
//, text="Harami\nde Baixa"

data8=(close[1] > open[1] and open > close and open >= close[1] and open[1] >= close and open - close > close[1] - open[1] and open[trend] < open)
plotshape(data8,  title= "Bearish Engulfing", color=red, style=shape.triangledown)
//, text="Engolfo\nde Baixa"

data13=(open[1]<close[1] and open<=open[1] and close<=open and open[trend] < open)
plotshape(data13, title= "Bearish Kicker", color=red, style=shape.triangledown)
//, text="Kicker\nde Baixa"

data14=(((high-low>4*(open-close))and((close-low)/(.001+high-low)>=0.75)and((open-low)/(.001+high-low)>=0.75))and open[trend] < open and high[1] < open and high[2] < open)
plotshape(data14,  title= "Hanging Man", location=location.belowbar, color=red, style=shape.triangledown)
//, text="Enforcado"

data7=(open[1] > close[1] and close > open and close <= open[1] and close[1] <= open and close - open < open[1] - close[1] and open[trend] > open)
plotshape(data7,  title= "Bullish Harami", location=location.belowbar, color=lime, style=shape.triangleup)
//, text="Mulher\nGrávida"

data9=(open[1] > close[1] and close > open and close >= open[1] and close[1] >= open and close - open > open[1] - close[1] and open[trend] > open)
plotshape(data9, title= "Bullish Engulfing", location=location.belowbar, color=lime, style=shape.triangleup)
//, text="Engolfo\nde Alta"

//uppercandle = highest(10)[1]
data10=(close[1] < open[1] and  open < low[1] and close > close[1] + ((open[1] - close[1])/2) and close < open[1] and open[trend] > open)
plotshape(data10, title= "Piercing Line", location=location.belowbar, color=lime, style=shape.triangleup)
//, text="Piercing"

lowercandle = lowest(10)[1]
data11=(low == open and  open < lowercandle and open < close and close > ((high[1] - low[1]) / 2) + low[1] and open[trend] > open)
plotshape(data11, title= "Bullish Belt", location=location.belowbar, color=lime, style=shape.triangleup)
//, text="Contenção\nde Alta"

data12=(open[1]>close[1] and open>=open[1] and close>open and open[trend] > open)
plotshape(data12, title= "Bullish Kicker", location=location.belowbar, color=lime, style=shape.triangleup)//, text="Kicker\nde Alta"


data5=(((high - low)>3*(open -close)) and  ((close - low)/(.001 + high - low) > 0.6) and ((open - low)/(.001 + high - low) > 0.6))
plotshape(data5, title= "Hammer", location=location.belowbar, color=white, style=shape.diamond)

data5b=(((high - low)>3*(open -close)) and  ((high - close)/(.001 + high - low) > 0.6) and ((high - open)/(.001 + high - low) > 0.6))
plotshape(data5b, title= "Inverted Hammer", location=location.belowbar, color=white, style=shape.diamond)
//, text="Martelo\nInvertido"

data2=(close[2] > open[2] and min(open[1], close[1]) > close[2] and open < min(open[1], close[1]) and close < open )
//plotshape(data2, title= "Evening Star", location=location.belowbar, color=red, style=shape.arrowdown, text="Estrela\nda Tarde")
plotchar(data2, title="Evening Star", color=white)

data3=(close[2] < open[2] and max(open[1], close[1]) < close[2] and open > max(open[1], close[1]) and close > open )
//plotshape(data3,  title= "Morning Star", location=location.belowbar, color=lime, style=shape.arrowup, text="Estrela\nda Manhã")
plotchar(data3, title="Morning Star", color=white, location=location.belowbar)

data4=(open[1] < close[1] and open > close[1] and high - max(open, close) >= abs(open - close) * 3 and min(close, open) - low <= abs(open - close))
//plotshape(data4, title= "Shooting Star", color=red, style=shape.arrowdown, text="Estrela\nCadente")
plotchar(data4, title="Shooting Star", color=white)



//**********************************************************************************************************



// Ações:

momento = strategy.position_size[0] > strategy.position_size[1]
valorcompra = valuewhen(momento, open, 0)
valorbbw = input(title="Altura Máxima do Bollinger", defval=10)

alerta = crossunder(close, lowerBol)
alertcondition(alerta, title='Abaixo da Banda Baixa', message='Fechou abaixo da banda baixa...!')

//data7 data9 data10 data11 data12

compra =  crossover(close, lowerBol) and ((k<=20) and (d<=20)) and (mexp>mexp[1])
//compra = (data7 or data9 or data10 or data11 or data12) and (msimples>msimples[1]) and ((k<=20) and (d<=20)) and (bbw<valorbbw/1000)
//compra =  (open<close) and (crossover (close, lowerBol)) and ((k<=20) and (d<=20)) and (bbw<valorbbw/1000) and (msimples>msimples[1])

venda = crossover(close, upperBol)
//(close >= (valorcompra + (valorcompra * 0.025))) 

strategy.entry ("Compra", strategy.long, when=compra)
strategy.entry ("Venda", strategy.short, when=venda)


//plotshape(series=compra, title="Compra", style=shape.triangleup, location=location.belowbar, color=green, text="COMPRA", size=size.small)
//plotshape(series=venda, title="Venda", style=shape.triangledown, location=location.abovebar, color=red, text="VENDA", size=size.small)