O recurso está a ser carregado... Carregamento...

Estratégia de negociação quantitativa baseada em padrões de reversão em níveis de suporte e resistência

Autora:ChaoZhang, Data: 2024-06-07 16:45:09
Tags:

img

Resumo

Esta estratégia baseia-se em padrões de reversão (martelo, engulfing e doji) e níveis de suporte e resistência na análise técnica, negociando em um gráfico de 1 hora.

A ideia principal da estratégia é entrar em uma posição longa quando um padrão de reversão de alta (como um martelo, engulfamento de alta ou doji) aparece perto de um nível de suporte, e entrar em uma posição curta quando um padrão de reversão de baixa (como um martelo, engulfamento de baixa ou doji) aparece perto de um nível de resistência.

Estratégia lógica

  1. Calcular o mínimo mínimo e o máximo máximo dentro do período de retrospectiva especificado usando as funções ta.lowest() e ta.highest() para determinar os níveis de suporte e resistência.
  2. Verifique se o candelabro atual forma um martelo, um padrão engulfante ou um doji.
  3. Se um padrão de inversão de alta aparecer perto de um nível de suporte, entre numa posição longa; se um padrão de inversão de baixa aparecer perto de um nível de resistência, entre numa posição curta.
  4. Fixar o preço do take profit a 3% acima do preço de entrada e o preço do stop loss a 1% abaixo do preço de entrada.
  5. Fechar a posição quando o preço atingir o nível de take profit ou stop loss.

Vantagens da estratégia

  1. Combina padrões de reversão e níveis principais de suporte e resistência, melhorando a confiabilidade dos sinais de negociação.
  2. Estabelece níveis claros de lucro e stop loss, controlando eficazmente o risco.
  3. Adequado tanto para mercados de tendências como para os de variação, captando potenciais oportunidades de reversão.
  4. Código simples e de fácil compreensão, facilitando a implementação.

Riscos estratégicos

  1. Em mercados variados, os sinais de reversão frequentes podem conduzir a perdas de comissão e a excesso de negociação.
  2. A identificação dos níveis de suporte e resistência depende da escolha do período de observação, e diferentes períodos de observação podem conduzir a resultados diferentes.
  3. A fiabilidade dos padrões de reversão não é absoluta e sinais falsos podem resultar em perdas.

Soluções:

  1. Ajustar os parâmetros e as condições de confirmação dos padrões de inversão para reduzir os falsos sinais.
  2. Incorporar outros indicadores técnicos ou indicadores do sentimento do mercado para melhorar a fiabilidade do sinal.
  3. Ajustar adequadamente os níveis de tomada de lucro e de stop loss para se adaptar às diferentes condições de mercado.

Orientações para a otimização da estratégia

  1. Introduzir indicadores de volume para confirmar a validade dos padrões de reversão.
  2. Considere os níveis de suporte e resistência de vários prazos para melhorar a precisão dos níveis de suporte e resistência.
  3. Combinar indicadores de tendência, tais como médias móveis, para negociar na direção da tendência e evitar negociações contrárias à tendência.
  4. Otimizar os níveis de tomada de lucro e de stop loss ajustando-os dinamicamente com base na volatilidade do mercado para alcançar melhores rácios risco/recompensa.

Resumo

Esta estratégia capta oportunidades de negociação potenciais identificando padrões de reversão perto de níveis de suporte e resistência. É simples de usar e aplicável a diferentes ambientes de mercado. No entanto, o sucesso da estratégia depende da identificação precisa de padrões de reversão e níveis de suporte e resistência. Ao otimizar as condições de confirmação dos sinais de negociação, incorporando outros indicadores técnicos e ajustando dinamicamente os níveis de take profit e stop loss, o desempenho da estratégia pode ser melhorado.


/*backtest
start: 2024-05-07 00:00:00
end: 2024-06-06 00:00:00
period: 2h
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/
// © Kingcoinmilioner

//@version=5
strategy("Reversal Patterns at Support and Resistance", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Parameters
support_resistance_lookback = input.int(50, title="Support/Resistance Lookback Period")
reversal_tolerance = input.float(0.01, title="Reversal Tolerance (percent)", step=0.01) / 100
take_profit_percent = input.float(3, title="Take Profit (%)") / 100
stop_loss_percent = input.float(1, title="Stop Loss (%)") / 100

// Functions to identify key support and resistance levels
findSupport() =>
    ta.lowest(low, support_resistance_lookback)

findResistance() =>
    ta.highest(high, support_resistance_lookback)

// Identify reversal patterns
isHammer() =>
    body = math.abs(close - open)
    lowerWick = open > close ? (low < close ? close - low : open - low) : (low < open ? open - low : close - low)
    upperWick = high - math.max(open, close)
    lowerWick > body * 2 and upperWick < body

isEngulfing() =>
    (close[1] < open[1] and close > open and close > open[1] and open < close[1]) 
    (close[1] > open[1] and close < open and close < open[1] and open > close[1])

isDoji() =>
    math.abs(open - close) <= (high - low) * 0.1

// Identify support and resistance levels
support = findSupport()
resistance = findResistance()

// Check for reversal patterns at support and resistance
hammerAtSupport = isHammer() and (low <= support * (1 + reversal_tolerance))
engulfingAtSupport = isEngulfing() and (low <= support * (1 + reversal_tolerance))
dojiAtSupport = isDoji() and (low <= support * (1 + reversal_tolerance))

hammerAtResistance = isHammer() and (high >= resistance * (1 - reversal_tolerance))
engulfingAtResistance = isEngulfing() and (high >= resistance * (1 - reversal_tolerance))
dojiAtResistance = isDoji() and (high >= resistance * (1 - reversal_tolerance))

// Trading logic
if (hammerAtSupport or engulfingAtSupport or dojiAtSupport)
    strategy.entry("Long", strategy.long)
    stop_level = low * (1 - stop_loss_percent)
    take_profit_level = close * (1 + take_profit_percent)
    strategy.exit("Take Profit/Stop Loss", from_entry="Long", stop=stop_level, limit=take_profit_level)

if (hammerAtResistance or engulfingAtResistance or dojiAtResistance)
    strategy.entry("Short", strategy.short)
    stop_level = high * (1 + stop_loss_percent)
    take_profit_level = close * (1 - take_profit_percent)
    strategy.exit("Take Profit/Stop Loss", from_entry="Short", stop=stop_level, limit=take_profit_level)

// Plot support and resistance levels for visualization
plot(support, color=color.green, linewidth=1, title="Support Level")
plot(resistance, color=color.red, linewidth=1, title="Resistance Level")

// Plot reversal patterns on the chart for visualization
plotshape(series=hammerAtSupport, location=location.belowbar, color=color.green, style=shape.labelup, text="Hammer at Support")
plotshape(series=engulfingAtSupport, location=location.belowbar, color=color.green, style=shape.labelup, text="Engulfing at Support")
plotshape(series=dojiAtSupport, location=location.belowbar, color=color.green, style=shape.labelup, text="Doji at Support")

plotshape(series=hammerAtResistance, location=location.abovebar, color=color.red, style=shape.labeldown, text="Hammer at Resistance")
plotshape(series=engulfingAtResistance, location=location.abovebar, color=color.red, style=shape.labeldown, text="Engulfing at Resistance")
plotshape(series=dojiAtResistance, location=location.abovebar, color=color.red, style=shape.labeldown, text="Doji at Resistance")


Mais.