
A estratégia usa o indicador de linha de browning para determinar a amplitude de oscilação do preço, em combinação com a forma de linha K para realizar operações de ruptura de preço. A ascensão e descensão da linha de browning pode determinar a tendência de aumento e queda do preço, combinando-a com o indicador de forma de linha K, para encontrar um momento de compra e venda mais óbvio.
A estratégia é composta principalmente pelos seguintes indicadores:
Indicadores de linha de browning, incluindo linha de browning em meio, em cima e em baixo. A linha de browning calcula a amplitude de flutuação do preço através da diferença padrão do preço, e assim determina a tendência de flutuação do preço.
O indicador Stoch, que determina se uma ação está em um estado de sobrecompra e sobrevenda. As linhas K e D podem determinar se uma ruptura para cima e uma ruptura para baixo.
A forma de linha K, julgar algumas formas comuns como linha do sol e linha do dia como opções de compra e venda.
Condições de compra: Preço acima atravessa a linha de baixa de Brin, o indicador de Stoch mostra um excesso de venda ((K<20, D<20), a média móvel rápida rompe a média móvel lenta para cima.
Condições de venda: preço abaixo da linha de Bolin, ou perda pós-ganho.
A estratégia combina a análise de tendências e o julgamento de overbought e oversold, reduzindo a probabilidade de ecausefalse e permitindo a entrada no mercado em tempo hábil quando a tendência surge. Mas também existe o risco de ser coberto, o que requer um stop loss oportuno.
A combinação de linhas de Brin e indicadores de Stoch permite a compra de ações quando o preço está claramente baixo, reduzindo o risco.
A forma linear K serve como condição auxiliar para evitar compras erradas em situações de choque.
O uso de julgamentos de dupla condição aumenta a estabilidade e a confiabilidade da estratégia.
O mecanismo de parada de prejuízos pode evitar grandes perdas.
Quando se negocia em linha de frente, é fácil de ser enganado. Quando o mercado se rompe, pode causar grandes perdas.
O indicador de Stoch tem maior probabilidade de emitir falsos sinais, e o risco de perda é maior quando usado sozinho.
Os sinais de negociação podem ser errados em situações de turbulência.
O que é necessário é um stop-loss e um controlo de risco.
A intensidade da ruptura deve ser observada para evitar a reversão da onda de choque.
Optimizar o pool de ações, escolher ações com maior volatilidade e tendência.
Otimizar os parâmetros de linhas de binário, ajustar o ciclo de rotação, otimizar a compreensão de pontos de compra e venda.
Otimizar os parâmetros de Stoch, ajustar os períodos das linhas K e D e aumentar a confiabilidade do indicador.
Aumentar o volume de transações e evitar o retrocesso.
Aumentar as estratégias de stop loss, como tracking stop loss, move stop loss, etc., para controlar o risco de perda.
Avaliação da adição de outros indicadores técnicos, como MACD, KDJ e outros, para melhorar a estabilidade da estratégia.
Testar diferentes períodos de detenção e otimizar a taxa de retirada de lucro.
A estratégia integra a linha de Brin, o indicador de Stoch e os indicadores técnicos fundamentais, assumindo o controle do risco, comprando no preço da ação no mínimo e vendendo perto do máximo histórico, alcançando um modelo de lucro relativamente estável. Mas também há riscos como cobertura, parada de perdas e outros. Otimizando os parâmetros e adicionando outros indicadores de julgamento, a estabilidade da estratégia e a rentabilidade contínua podem ser aumentadas.
/*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)