Esta estratégia incorpora Bandas de Bollinger, indicador RSI e análise de vários prazos para capturar a direção das tendências de médio a longo prazo. Identifica pontos de reversão de tendência através de breakouts de Bandas de Bollinger combinados com sinais de sobrecompra / sobrevenda do RSI para entrada de baixo risco. Enquanto isso, são aplicados prazos mais longos para filtrar mercados variados e evitar ser preso.
Aplicar Bandas de Bollinger para determinar as quebras de preço. A faixa do meio é a média móvel do preço de fechamento ao longo de N dias. As bandas superior e inferior são colocadas a uma distância de um desvio padrão em cada lado da faixa do meio. A quebra acima da faixa superior sinaliza alta, enquanto a quebra abaixo da faixa inferior sinaliza baixa.
Incorpore o indicador RSI para identificar os níveis de sobrecompra/supervenda. RSI acima de 70 sugere condições de sobrecompra, enquanto abaixo de 30 sugere condições de supervenda. Uma quebra de RSI acima de 70 confirma o enfraquecimento do ímpeto de alta. Uma quebra de RSI abaixo de 30 confirma o enfraquecimento do ímpeto de baixa.
Quando um sinal de ruptura surge no prazo diário, ele requer confirmação adicional dos prazos de 4 horas ou mais para evitar ser preso.
A integração de vários indicadores aumenta a estabilidade e a rentabilidade da estratégia.
A inclusão do RSI mitiga as perdas de falhas.
A análise multi-tempo efetivamente filtra mercados variados e evita ser preso.
A determinação do sinal de ruptura otimizada (rupturas em 3 barras consecutivas) garante uma maturidade de tendência suficiente antes das entradas.
O indicador de vórtice determina a direcção da tendência nascente desde o início.
A parametrização inadequada das bandas de Bollinger leva a sinais errôneos de sobrecompra/supervenda.
Os valores razoáveis dos parâmetros RSI devem ser determinados separadamente para os diferentes produtos.
Os sinais de ruptura podem revelar-se falsos.
Manter uma margem de stop loss suficiente, por exemplo, 3 vezes o ATR.
Aplicar algoritmos de aprendizagem automática para ajustar automaticamente os parâmetros das bandas de Bollinger e do RSI.
Otimizar os níveis de stop loss com base em métricas de volatilidade.
Incorporar um módulo de dimensionamento de posições para calibrar as posições em risco com base nas condições de mercado em evolução.
Restringir a perda máxima por transação com base nos princípios de gestão do dinheiro.
Avaliar a estabilidade do sinal em diferentes sessões de negociação.
Esta estratégia examina de forma abrangente a determinação da tendência, as condições de sobrecompra/supervenda e vários prazos para controlar os riscos, ao mesmo tempo em que procura um momento de entrada ideal para capturar tendências de médio e longo prazo de alta qualidade para perfis de risco-recompensa atraentes.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Noway0utstorm //@version=5 strategy(title='Vortex0.71.3 + bb 3bar breakout + rsi - close hit upper or lower', shorttitle='truongphuthinh', format=format.price, precision=4,overlay = true) length = input(20, title="Length") mult = input(2.0, title="Multiplier") source = close basis = ta.sma(source, length) dev = mult * ta.stdev(source, length) upperBand = basis + dev lowerBand = basis - dev isClosedBar = ta.change(time("15")) var bool closeAboveUpperBand = false var bool closeBelowLowerBand = false // Vortex Indicator Settings period_ = input.int(14, title='Period', minval=2) VMP = math.sum(math.abs(high - low[1]), period_) VMM = math.sum(math.abs(low - high[1]), period_) STR = math.sum(ta.atr(1), period_) VIP = VMP / STR VIM = VMM / STR // lengthrsi = input(14, title="RSI Length") overboughtLevel = input(70, title="Overbought Level") oversoldLevel = input(30, title="Oversold Level") sourcersi = close rsiValue = ta.rsi(sourcersi, lengthrsi) shouldShort = rsiValue > overboughtLevel shouldLong = rsiValue < oversoldLevel if bool(isClosedBar[1]) and bool(isClosedBar[2]) and bool(isClosedBar[3]) if close[1] > upperBand[1] and close[2] > upperBand[2] and close[3] > upperBand[3] and VIP > 1.25 and VIM < 0.7 and rsiValue > overboughtLevel strategy.entry("Short", strategy.short) closeAboveUpperBand := false // Reset the condition when entering a new Short position if close[1] < lowerBand[1] and close[2] < lowerBand[2] and close[3] < lowerBand[3] and VIP < 0.7 and VIM > 1.25 and rsiValue < oversoldLevel strategy.entry("Long", strategy.long) closeBelowLowerBand := false // Reset the condition when entering a new Long position if strategy.position_size > 0 // Check if there is an open Long position closeAboveUpperBand := close > upperBand // Update the condition based on close price if closeAboveUpperBand strategy.close("Long",disable_alert=true) // Close the Long position if close price is above upper band if strategy.position_size < 0 // Check if there is an open Short position closeBelowLowerBand := close < lowerBand // Update the condition based on close price if closeBelowLowerBand strategy.close("Short",disable_alert=true) // Close the Short position if close price is below lower band // Plots plot(basis, color=color.orange, title="Basis") p1 = plot(upperBand, color=color.blue, title="Upper Band") p2 = plot(lowerBand, color=color.blue, title="Lower Band") fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))