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

Sistema de negociação de ação de preço de suporte dinâmico resistência

Autora:ChaoZhang, Data: 2024-12-04 15:19:00
Tags:SRPA

img

Resumo

Esta estratégia é um sistema de negociação baseado na ação de preços e níveis dinâmicos de suporte / resistência, executando negociações perto de níveis de preço-chave quando padrões específicos de velas surgem. O sistema utiliza um método de cálculo de suporte / resistência dinâmico de 16 períodos, combinado com quatro padrões clássicos de velas de reversão - Hammer, Shooting Star, Doji e Pin Bar para capturar reversões potenciais do mercado. A estratégia emprega níveis fixos de lucro e stop-loss para gerenciamento de riscos e usa um parâmetro de sensibilidade para controlar o rigor do sinal de entrada.

Princípios de estratégia

O núcleo da estratégia consiste em calcular dinamicamente os níveis de suporte e resistência para estabelecer limites de movimento de preços. Quando o preço se aproxima desses níveis-chave, o sistema procura padrões específicos de velas como sinais de reversão. As condições de entrada exigem formação de padrões dentro de 1,8% (sensibilidade padrão) dos níveis de suporte / resistência. O sistema implementa uma regra de gerenciamento de ações de 35% com 16% de stop-loss e 9,5% de take-profit, controlando efetivamente o risco em cerca de 5,6% do total de ações por negociação.

Vantagens da estratégia

  1. Combina dois elementos mais confiáveis da análise técnica: padrões de preços e suporte/resistência, aumentando a fiabilidade do sinal
  2. Utiliza níveis de suporte/resistência calculados dinamicamente, adaptando-se às condições de mercado em evolução
  3. Implementa medidas rigorosas de gestão de fundos e controlo de riscos para evitar saques significativos
  4. Lógica estratégica clara com parâmetros ajustáveis, facilitando a otimização para diferentes condições de mercado
  5. Sinais de entrada claros sem julgamento subjetivo, adequados para negociação automatizada

Riscos estratégicos

  1. A eficácia de suporte/resistência pode diminuir em mercados altamente voláteis
  2. A taxa de stop loss relativamente ampla (16%) pode conduzir a perdas significativas em condições voláteis
  3. As definições dos parâmetros de sensibilidade afetam significativamente a frequência e a precisão das negociações
  4. Confiar apenas nos padrões de preços pode deixar de lado outros sinais importantes do mercado
  5. Necessidade de considerar os custos de negociação impacto nos retornos da estratégia

Orientações de otimização

  1. Introduzir o volume como indicador de confirmação para melhorar a fiabilidade do sinal
  2. Desenvolver parâmetros de sensibilidade adaptativos que se ajustem dinamicamente com base na volatilidade do mercado
  3. Otimizar as configurações de stop-loss, considerar a implementação de trailing stops ou planos de stop-loss escalonados
  4. Adicionar filtros de tendência para evitar operações de reversão durante tendências fortes
  5. Desenvolver um sistema dinâmico de dimensionamento das posições que ajuste o tamanho das transacções com base nas condições do mercado

Resumo

Esta estratégia de negociação baseada na ação de preço fornece aos traders uma abordagem de negociação sistemática, combinando níveis de suporte / resistência dinâmicos com padrões de reversão clássicos. Os pontos fortes da estratégia estão em sua lógica clara e risco controlável, embora a otimização contínua baseada nos resultados reais da negociação seja necessária.


/*backtest
start: 2024-11-26 00:00:00
end: 2024-12-03 00:00:00
period: 1h
basePeriod: 1h
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/
// © felipemiransan

//@version=5
strategy("Price Action Strategy", overlay=true)

// Settings
length = input.int(16, title="Support and Resistance Length")
sensitivity = input.float(0.018, title="Sensitivity")

// Stop Loss and Take Profit
stop_loss_pct = input.float(16, title="Stop Loss percentage", minval=0.1) / 100
take_profit_pct = input.float(9.5, title="Take Profit percentage", minval=0.1) / 100

// Function to identify a Hammer
isHammer() =>
    body = close - open
    price_range = high - low
    lower_shadow = open - low
    upper_shadow = high - close
    body > 0 and lower_shadow > body * 2 and upper_shadow < body * 0.5 and price_range > 0

// Function to identify a Shooting Star
isShootingStar() =>
    body = open - close
    price_range = high - low
    lower_shadow = close - low
    upper_shadow = high - open
    body > 0 and upper_shadow > body * 2 and lower_shadow < body * 0.5 and price_range > 0

// Function to identify a Doji
isDoji() =>
    body = close - open
    price_range = high - low
    math.abs(body) < (price_range * 0.1)  // Doji has a small body

// Function to identify a Pin Bar
isPinBar() =>
    body = close - open
    price_range = high - low
    lower_shadow = open - low
    upper_shadow = high - close
    (upper_shadow > body * 2 and lower_shadow < body * 0.5) or (lower_shadow > body * 2 and upper_shadow < body * 0.5)

// Support and resistance levels 
support = ta.lowest(low, length)
resistance = ta.highest(high, length)

// Entry criteria
long_condition = (isHammer() or isDoji() or isPinBar()) and close <= support * (1 + sensitivity)
short_condition = (isShootingStar() or isDoji() or isPinBar()) and close >= resistance * (1 - sensitivity)

// Function to calculate stop loss and take profit (long)
calculate_levels(position_size, avg_price, stop_loss_pct, take_profit_pct) =>
    stop_loss_level = avg_price * (1 - stop_loss_pct)
    take_profit_level = avg_price * (1 + take_profit_pct)
    [stop_loss_level, take_profit_level]

// Function to calculate stop loss and take profit (short)
calculate_levels_short(position_size, avg_price, stop_loss_pct, take_profit_pct) =>
    stop_loss_level = avg_price * (1 + stop_loss_pct)
    take_profit_level = avg_price * (1 - take_profit_pct)
    [stop_loss_level, take_profit_level]

// Buy entry order with label
if (long_condition and strategy.opentrades == 0)
    strategy.entry("Buy", strategy.long)
    pattern = isHammer() ? "Hammer" : isDoji() ? "Doji" : isPinBar() ? "Pin Bar" : ""
    label.new(x=bar_index, y=low, text=pattern, color=color.green, textcolor=color.black, size=size.small)

// Sell entry order with label
if (short_condition and strategy.opentrades == 0)
    strategy.entry("Sell", strategy.short)
    pattern = isShootingStar() ? "Shooting Star" : isDoji() ? "Doji" : isPinBar() ? "Pin Bar" : ""
    label.new(x=bar_index, y=high, text=pattern, color=color.red, textcolor=color.black, size=size.small)

// Stop Loss and Take Profit management for open positions
if (strategy.opentrades > 0)
    if (strategy.position_size > 0)  // Long position
        avg_price_long = strategy.position_avg_price  // Average price of long position
        [long_stop_level, long_take_profit_level] = calculate_levels(strategy.position_size, avg_price_long, stop_loss_pct, take_profit_pct)
        strategy.exit("Exit Long", from_entry="Buy", stop=long_stop_level, limit=long_take_profit_level)
    if (strategy.position_size < 0)  // Short position
        avg_price_short = strategy.position_avg_price  // Average price of short position
        [short_stop_level, short_take_profit_level] = calculate_levels_short(strategy.position_size, avg_price_short, stop_loss_pct, take_profit_pct)
        strategy.exit("Exit Short", from_entry="Sell", stop=short_stop_level, limit=short_take_profit_level)

// Visualization of Support and Resistance Levels
plot(support, title="Support", color=color.green, linewidth=2)
plot(resistance, title="Resistance", color=color.red, linewidth=2)






Relacionados

Mais.