Preço de avanço Bollinger Band A Estratégia

Autora:ChaoZhang, Data: 2023-11-06 11:43:14
Tags:

img

Resumo

Esta estratégia usa o indicador de banda de Bollinger para julgar a amplitude das flutuações de preços, combinado com padrões de linha K para operações de ruptura de preço. Os trilhos superiores e inferiores da banda de Bollinger podem julgar grosseiramente as tendências ascendentes e descendentes dos preços. Combinando-o com indicadores de padrão de linha K, pode descobrir o tempo de compra e venda relativamente óbvio. A estratégia julga principalmente a ruptura abaixo da banda de Bollinger para ir longo, a ruptura acima do trilho para ir curto, enquanto combina o indicador de Stoch para julgar o status de sobrecompra e sobrevenda, e usa padrões de linha K para fornecer sinais alternativos de compra e venda.

Princípio da estratégia

A estratégia consiste nos seguintes principais indicadores:

  1. Indicador Bollinger Band, incluindo Bollinger middle rail, Bollinger upper rail e Bollinger lower rail. Bollinger Bands calcula a faixa de flutuação dos preços através do desvio padrão dos preços, julgando assim a tendência de flutuação dos preços.

  2. Indicador de estoque, para julgar se o estoque está em estado de sobrecompra ou sobrevenda.

  3. Padrões de linha K, julgar alguns padrões comuns como grande linha Yang, grande linha Yin etc como oportunidades de negociação alternativas.

Condição de compra: O preço cruza acima da linha inferior de Bollinger, o indicador Stoch mostra estado de sobrevenda (K<20, D<20), a média móvel rápida cruza acima da média móvel lenta.

Condição de venda: O preço cruza abaixo do limite superior de Bollinger, ou stop loss quando lucrativo.

A estratégia combina análise de tendências e julgamento de sobrecompra/supervenda, o que reduz a taxa de sinais falsos e permite a entrada oportuna no mercado quando uma tendência surge.

Análise das vantagens

  1. Combinando a banda de Bollinger e o indicador Stoch, pode comprar em pontos baixos óbvios, reduzindo o risco.

  2. Os padrões de linha K servem como condição auxiliar, evitando compras erradas no mercado de intervalo.

  3. A adoção de julgamentos de dupla condição aumenta a estabilidade e a fiabilidade da estratégia.

  4. O mecanismo de stop loss evita perdas enormes.

Análise de riscos

  1. A negociação com Bandas de Bollinger é propensa a ficar presa. As discontinuidades de preços podem causar perdas relativamente grandes.

  2. O indicador Stoch tem uma alta probabilidade de emitir sinais falsos.

  3. É fácil gerar sinais de negociação errados em mercados de intervalo.

  4. Precisa de um stop loss oportuno para controlar os riscos.

  5. Precisamos prestar atenção à força dos avanços para evitar o recuo depois de subir alto.

Orientações de otimização

  1. Otimizar o estoque, selecionar ações com grandes flutuações e tendências óbvias.

  2. Otimizar os parâmetros de Bollinger, ajustar o ciclo do trilho médio, otimizar a compreensão dos pontos de compra/venda.

  3. Otimizar os parâmetros de Stoch, ajustar os ciclos da linha K e da linha D, melhorar a fiabilidade dos indicadores.

  4. Adicionar julgamentos sobre a condição do volume de negociação para evitar um recuo após um aumento elevado.

  5. Adicionar estratégias de stop loss como trailing stop loss, move stop loss etc para controlar os riscos de perda.

  6. Avalie a adição de outros indicadores técnicos, como MACD, KDJ, etc., para melhorar a estabilidade da estratégia.

  7. Testar diferentes períodos de detenção para otimizar o rácio de lucro e de utilização.

Resumo

A estratégia integra a banda de Bollinger, o indicador de Stoch com indicadores de fundamentos técnicos. Sob a premissa de controlar os riscos, ele compra em preços baixos e vende perto de máximos históricos, realizando um modelo de lucro relativamente estável. Mas também carrega riscos como ficar preso, stop loss ineficaz, etc. A melhoria da estabilidade e da lucratividade pode ser alcançada melhorando parâmetros e adicionando outros indicadores de julgamento. A estratégia é adequada para investidores que negociam quando os preços oscilam em torno de zonas de sobrecompra e sobrevenda.


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






Mais.