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


Data de criação: 2024-06-07 16:45:09 última modificação: 2024-06-07 16:45:09
cópia: 3 Cliques: 611
1
focar em
1617
Seguidores

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

Visão geral

A estratégia baseia-se nas formas de reversão na análise técnica (linhas de cabeça, formas de absorção e estrelas cruzadas), bem como nas posições de suporte e resistência, para negociar no gráfico de 1 hora. A estratégia executa a negociação através da identificação de potenciais pontos de reversão do mercado e dos níveis de parada e de perda previstos.

O principal conceito da estratégia é abrir uma posição a mais quando há uma inversão de tendência de baixa perto de um nível de suporte (como uma linha de ponta, uma forma de absorção de tendência de baixa ou uma cruz) e abrir uma posição a menos quando há uma inversão de tendência de baixa perto de uma resistência (como uma linha de ponta, uma forma de absorção de tendência de baixa ou uma cruz). Ao mesmo tempo, configure um stop-loss e um stop-loss para controlar o risco e bloquear os lucros.

Princípio da estratégia

  1. Calcule o preço mínimo e o preço máximo durante o período de retorno especificado, determinando os níveis de suporte e resistência através das funções ta.lowest() e ta.highest().
  2. Determine se o mapa atual está formando uma linha de cabeça, uma forma de engolir ou uma estrela cruzada.
  3. Se uma inversão de tendência de baixa ocorrer perto de um ponto de suporte, abra uma posição a mais; se uma inversão de tendência de baixa ocorrer perto de uma resistência, abra uma posição a zero.
  4. Configure o preço de parada em 3% do preço de abertura e o preço de parada em 1% do preço de abertura.
  5. Quando o preço atinge um nível de stop loss ou stop loss, a posição é fechada.

Vantagens estratégicas

  1. A combinação de formas invertidas e pontos de resistência de suporte crítico aumenta a confiabilidade do sinal de negociação.
  2. Definir níveis claros de stop-loss para controlar o risco.
  3. Aplica-se a mercados de tendências e de turbulências, para captar potenciais oportunidades de reversão.
  4. O código é simples, fácil de entender e implementar.

Risco estratégico

  1. Em mercados turbulentos, os sinais de reversão são frequentes e podem levar a perdas de comissões e transações excessivas.
  2. O julgamento de suporte e resistência depende da escolha do período de retorno, e diferentes períodos de retorno podem levar a resultados diferentes.
  3. A fiabilidade da forma invertida não é absoluta, e sinais falsos podem causar prejuízos.

Solução:

  1. Reduz os sinais falsos, ajustando os parâmetros e as condições de confirmação da forma inversa.
  2. Em combinação com outros indicadores técnicos ou de sentimento de mercado, para aumentar a confiabilidade do sinal.
  3. Ajustar adequadamente os níveis de stop-loss e stop-loss para responder a diferentes condições de mercado.

Direção de otimização da estratégia

  1. A introdução de indicadores de volume de transação confirma a eficácia da forma de reversão. A forma de reversão de alto volume de transação pode ser mais confiável.
  2. Considerar o nível de resistência de suporte em vários períodos de tempo para melhorar a precisão do nível de resistência de suporte.
  3. Combine indicadores de tendência, como a média móvel, para negociar na direção da tendência, evitando negociações contracorrentes.
  4. Otimizar os níveis de stop-loss e stop-loss, ajustando-os à dinâmica de volatilidade do mercado, para obter melhores taxas de retorno de risco.

Resumir

A estratégia capta potenciais oportunidades de negociação através da identificação de formas de reversão próximas de suportes e resistências. É simples e fácil de usar e se aplica a diferentes ambientes de mercado. No entanto, o sucesso da estratégia depende de um julgamento preciso das formas de reversão e dos suportes e resistências.

Código-fonte da estratégia
/*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")