Estratégia de negociação de acompanhamento de tendência de canal gaussiano e RSI estocástico

RSI GWMA GWSD SRSI
Data de criação: 2025-02-20 11:01:36 última modificação: 2025-02-20 11:01:36
cópia: 1 Cliques: 638
2
focar em
319
Seguidores

Estratégia de negociação de acompanhamento de tendência de canal gaussiano e RSI estocástico Estratégia de negociação de acompanhamento de tendência de canal gaussiano e RSI estocástico

Visão geral

A estratégia é um sistema de negociação de acompanhamento de tendências que combina o canal de média móvel ponderada por Gauss e o índice Stochastic RSI, um índice aleatório relativamente forte. A estratégia constrói o canal de preços através do método de Gauss, e combina o sinal cruzado do indicador RSI aleatório para determinar o momento de entrada e saída, permitindo a captação e a confirmação da dinâmica da tendência.

Princípio da estratégia

A lógica central da estratégia consiste em duas partes principais:

  1. Sistema de canal de Gauss: construção de um canal de preços usando a média móvel ponderada de Gauss ((GWMA) e a diferença padrão de Gauss ((GWSD)). O GWMA dá maior peso aos dados recentes, tornando a linha de equilíbrio mais sensível à reação às mudanças de preço. O deslocamento do canal é determinado por multiplicar o GWSD por um fator múltiplo.

  2. Sistema de RSI aleatório: processamento aleatório do tradicional RSI para calcular os valores K e D. Este processamento permite identificar melhor as áreas de sobrevenda e venda, fornecendo um sinal de dinâmica mais preciso.

A geração de sinais de transação baseia-se nas seguintes condições:

  • Multi entrada: preço de fechamento preço de fechamento quebra o canal de Gauss e cruza a linha D na linha K do RSI aleatório
  • Sinais de equilíbrio: preço de fechamento cai para cima do canal de Gauss

Vantagens estratégicas

  1. A base matemática é sólida: a construção de canais de preços com o método de Gauss-Gravitational tem uma base teórica melhor do que a média móvel simples.
  2. Alta fiabilidade do sinal: o mecanismo de dupla verificação, combinado com a ruptura do preço e a confirmação do momento, pode reduzir efetivamente os sinais falsos.
  3. Adaptabilidade: o método de Gauss pode ajustar automaticamente a largura do canal de acordo com as flutuações do mercado.
  4. Controle de risco perfeito: controle efetivo de custos e riscos de transação através da gestão de fundos e configuração de comissões.

Risco estratégico

  1. Dependência de tendência: pode produzir frequentes falsos sinais em mercados turbulentos, resultando em excesso de negociação.
  2. Efeito de atraso: devido ao uso de suavização de linha média múltipla, pode haver atraso no sinal nos pontos de mudança de tendência.
  3. Sensibilidade de parâmetros: a eficácia da estratégia é influenciada pela configuração de parâmetros, que precisam ser cuidadosamente otimizados.

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

  1. Identificação do cenário de mercado: adicionar mecanismos de julgamento do cenário de mercado, usando diferentes configurações de parâmetros em diferentes estados de mercado.
  2. Optimização de stop loss: introdução de mecanismos de stop loss dinâmicos, como stop loss adaptativo baseado no ATR ou na taxa de flutuação.
  3. Filtragem de sinais: adicionar confirmação de volume de transação ou outros indicadores técnicos como condição de filtragem auxiliar.
  4. Gerenciamento de fundos: implementa estratégias de gerenciamento de posições mais flexíveis, ajustando dinamicamente a proporção de posse de acordo com a intensidade do sinal.

Resumir

A estratégia, em combinação com o canal de Gauss e o indicador RSI aleatório, constrói um sistema de acompanhamento de tendências com uma base matemática sólida. A estratégia tem um excelente desempenho em mercados de tendências evidentes, mas é necessário prestar atenção à otimização de parâmetros e à adaptabilidade ao ambiente de mercado.

Código-fonte da estratégia
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Gaussian Channel + Stoch RSI Strategy", overlay=true, margin_long=100, margin_short=100, initial_capital=100000, commission_type=strategy.commission.percent, commission_value=0.1, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=1)

// User Inputs
length     = input.int(20, "Gaussian Length", minval=5)
multiplier = input.float(2.0, "Channel Multiplier", step=0.1)
rsiLength  = input.int(14, "RSI Length", minval=1)
stochLength= input.int(14, "Stoch RSI Length", minval=1)
kLength    = input.int(3, "Stoch K Smoothing", minval=1)
dLength    = input.int(3, "Stoch D Smoothing", minval=1)

// Gaussian Weighted Moving Average Function
f_gaussian(source, length) =>
    half = (length - 1) / 2.0
    sum = 0.0
    norm = 0.0
    // Gaussian standard deviation chosen as length/6 for a smooth curve
    denom = (length / 6.0) * (length / 6.0)
    for i = 0 to length - 1
        x = i - half
        w = math.exp(-(x * x) / (2 * denom))
        sum += source[i] * w
        norm += w
    sum / norm

// Gaussian Weighted Standard Deviation Function
f_gaussian_std(source, length) =>
    half = (length - 1) / 2.0
    gavg = f_gaussian(source, length)
    sum = 0.0
    norm = 0.0
    denom = (length / 6.0) * (length / 6.0)
    for i = 0 to length - 1
        x = i - half
        w = math.exp(-(x * x)/(2*denom))
        diff = source[i] - gavg
        sum += diff * diff * w
        norm += w
    math.sqrt(sum/norm)

// Compute Gaussian Channel
gaussMid = f_gaussian(close, length)
gaussStd = f_gaussian_std(close, length)
gaussUpper = gaussMid + gaussStd * multiplier
gaussLower = gaussMid - gaussStd * multiplier

// Stochastic RSI Calculation
rsi = ta.rsi(close, rsiLength)
rsiLowest = ta.lowest(rsi, stochLength)
rsiHighest = ta.highest(rsi, stochLength)
stoch = 100 * (rsi - rsiLowest) / math.max(rsiHighest - rsiLowest, 1e-10)
k = ta.sma(stoch, kLength)
d = ta.sma(k, dLength)

// Conditions
// Long entry: Price closes above upper Gaussian line AND Stoch RSI K > D (stochastic is "up")
longCondition = close > gaussUpper and k > d

// Exit condition: Price closes below upper Gaussian line
exitCondition = close < gaussUpper

// Only trade in the specified date range
inDateRange = time >= timestamp("2018-01-01T00:00:00") and time < timestamp("2069-01-01T00:00:00")

// Submit Orders
if inDateRange
    if longCondition and strategy.position_size <= 0
        strategy.entry("Long", strategy.long)
    if exitCondition and strategy.position_size > 0
        strategy.close("Long")
        
// Plot Gaussian Channel
plot(gaussMid, "Gaussian Mid", color=color.new(color.yellow, 0))
plot(gaussUpper, "Gaussian Upper", color=color.new(color.green, 0))
plot(gaussLower, "Gaussian Lower", color=color.new(color.red, 0))