Preisdurchbruch Bollinger Band A Strategie

Schriftsteller:ChaoZhang, Datum: 2023-11-06 11:43:14
Tags:

img

Übersicht

Diese Strategie verwendet den Bollinger-Band-Indikator, um die Amplitude der Kursschwankungen zu beurteilen, kombiniert mit K-Linien-Mustern für Preisdurchbruchoperationen. Die oberen und unteren Schienen des Bollinger-Bands können die Auf- und Abwärtstrends der Preise grob beurteilen.

Strategieprinzip

Die Strategie besteht aus folgenden Hauptindikatoren:

  1. Bollinger-Band-Indikator, einschließlich Bollinger-Mittelschiene, Ober- und Unterschiene. Bollinger-Bänder berechnen den Kursschwankungsbereich anhand der Standardabweichung der Preise und beurteilen so den Kursschwankungstrend.

  2. Der Aktienindikator, um zu beurteilen, ob die Aktie sich in einem Überkauf- oder Überverkaufszustand befindet.

  3. K-Linienmuster, beurteilen Sie einige gemeinsame Muster wie große Yang-Linie, große Yin-Linie usw. als alternative Handelsmöglichkeiten.

Kaufbedingung: Der Preis überschreitet den Bollinger-Untergrund, der Stoch-Indikator zeigt einen Überverkaufstatus (K<20, D<20), der schnelle gleitende Durchschnitt überschreitet den langsamen gleitenden Durchschnitt.

Verkaufsbedingung: Der Preis fällt unter die Bollinger-Obergrenze oder stoppt den Verlust, wenn er profitabel ist.

Die Strategie kombiniert sowohl Trendanalyse als auch Überkauf/Überverkauf, wodurch die Anzahl falscher Signale reduziert und der rechtzeitige Markteintritt bei einem Trend ermöglicht wird.

Analyse der Vorteile

  1. Durch die Kombination von Bollinger Band und Stoch-Indikator kann er an offensichtlichen Tiefpunkten kaufen, wodurch das Risiko verringert wird.

  2. K-Linienmuster dienen als Hilfsbedingung, um falsche Käufe im Bereichsmarkt zu vermeiden.

  3. Durch die Annahme von Urteilen über Doppelbedingungen wird die Stabilität und Zuverlässigkeit der Strategie verbessert.

  4. Der Stop-Loss-Mechanismus vermeidet große Verluste.

Risikoanalyse

  1. Der Handel mit Bollinger-Bändern ist anfällig für Fallstricke.

  2. Der Stoch-Indikator hat eine hohe Wahrscheinlichkeit falscher Signale.

  3. Es ist leicht, falsche Handelssignale auf den Märkten mit Bandbreite zu erzeugen.

  4. Sie benötigen zeitnahe Stop-Loss-Verfahren, um Risiken zu kontrollieren.

  5. Man muss auf die Stärke der Durchbrüche achten, um Rückschläge nach einem hohen Anstieg zu vermeiden.

Optimierungsrichtlinien

  1. Optimieren Sie den Aktienpool, wählen Sie Aktien mit großen Schwankungen und offensichtlichen Trends aus.

  2. Optimieren Sie die Bollinger-Parameter, passen Sie den mittleren Schienenzyklus an, optimieren Sie den Umgang mit Kauf-/Verkaufspunkten.

  3. Optimierung der Stochparameter, Anpassung der K- und D-Linienzyklen, Verbesserung der Indikatorzuverlässigkeit.

  4. Hinzufügen von Handelsvolumen-Bedingungen, um einen Rückzug nach einem Anstieg zu vermeiden.

  5. Hinzufügen Sie Stop-Loss-Strategien wie Trailing Stop-Loss, Moving Stop-Loss usw., um Verlustrisiken zu kontrollieren.

  6. Es wird geprüft, ob weitere technische Indikatoren wie MACD, KDJ usw. hinzugefügt werden können, um die Strategie zu stabilisieren.

  7. Versuche verschiedene Haltungszeiten, um die Gewinn-Nutzung-Ratio zu optimieren.

Zusammenfassung

Die Strategie integriert Bollinger Band, Stoch-Indikator mit technischen Fundamentalanzeigen. Unter der Prämisse der Risikokontrolle kauft sie zu Preistief und verkauft nahe historischen Höchstständen, um ein relativ stabiles Gewinnmodell zu realisieren. Aber sie birgt auch Risiken wie Gefangensein, ineffektiven Stop-Loss usw. Eine weitere Steigerung der Stabilität und Rentabilität kann durch Optimierung von Parametern und Hinzufügen anderer Beurteilungsindikatoren erreicht werden.


/*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)  






Mehr