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

SR PA
Data de criação: 2024-12-04 15:19:00 última modificação: 2024-12-04 15:19:00
cópia: 0 Cliques: 422
1
focar em
1617
Seguidores

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

Visão geral

A estratégia é um sistema de negociação baseado no comportamento do preço e na resistência de suporte dinâmico, que opera através da identificação de formas de preço críticas nas proximidades das posições de suporte e resistência. O sistema utiliza um método de cálculo de resistência de suporte dinâmico de 16 ciclos, combinando os quatro padrões clássicos de retorno de retorno de retorno - a linha do cone, a linha do meteoro, a cruz e a agulha - para capturar as oportunidades de retorno potencial do mercado. A estratégia usa um percentual fixo de stop-loss para gerenciar o risco e usa parâmetros de sensibilidade para controlar a rigidez dos sinais de entrada.

Princípio da estratégia

O núcleo da estratégia é formar uma fronteira superior e inferior da atividade de preços através do cálculo dinâmico dos níveis de suporte e resistência. Quando os preços se aproximam desses níveis críticos, o sistema procura uma forma específica de gráfico como um sinal de reversão. As condições de entrada requerem que os preços se revertam dentro de uma faixa de 1,8% dos níveis de suporte e resistência (sensibilidade padrão).

Vantagens estratégicas

  1. A estratégia combina os dois elementos mais confiáveis da análise técnica: a forma de preços e a resistência de suporte, aumentando a confiabilidade dos sinais de negociação
  2. Resistência de suporte com cálculo dinâmico, capaz de se adaptar a mudanças nas condições de mercado
  3. Aplicação de medidas rigorosas de gestão de fundos e de controlo de riscos para evitar a retirada em larga escala
  4. A lógica da estratégia é clara, os parâmetros são ajustáveis, facilitando a otimização de acordo com diferentes situações de mercado
  5. Os sinais de entrada são claros, sem componentes de julgamento subjetivo, adequados para negociação automatizada

Risco estratégico

  1. A eficácia da resistência de suporte pode ser reduzida em mercados altamente voláteis
  2. A posição de parada é relativamente distante (~16%), podendo sofrer grandes perdas em situações extremas.
  3. A configuração dos parâmetros de sensibilidade tem um impacto importante na frequência e na precisão das transações
  4. Dependendo apenas da forma do preço, pode-se perder outros sinais importantes do mercado
  5. É preciso considerar o impacto dos custos de transação nos retornos da estratégia

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

  1. Introdução do volume de tráfego como indicador auxiliar de confirmação para aumentar a confiabilidade do sinal
  2. Desenvolvimento de parâmetros de sensibilidade adaptáveis, ajustados à dinâmica de volatilidade do mercado
  3. Optimizar a configuração de stop loss, considerando o uso de stop loss móvel ou stop loss em intervalos
  4. Aumentar os filtros de tendência para evitar a inversão de tendências fortes
  5. Desenvolvimento de um sistema de gestão de posições dinâmicas para ajustar o volume de transações de acordo com as condições do mercado

Resumir

Esta estratégia de negociação baseada no comportamento do preço, combinando resistência de suporte dinâmico e a forma clássica de reversão, oferece aos comerciantes uma metodologia de negociação sistematizada. A estratégia tem vantagens em termos de clareza lógica e controle de risco, mas ainda precisa de otimização contínua de acordo com o efeito de negociação real. É recomendado que os comerciantes façam um bom feedback e otimização de parâmetros antes de usar o mercado real, e ajuste personalizado à estratégia em combinação com a experiência do mercado.

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