
A estratégia de quantificação de padrões de altitude semelhante a um retângulo é um sistema de negociação baseado em características de flutuação de preços que capta oportunidades de negociação potenciais identificando retângulos de altitude semelhante no mercado. O núcleo da estratégia consiste em encontrar padrões semelhantes de amplitude de flutuação de preços, combinando o indicador RSI, a confirmação de volume de transação e o stop loss ajustado dinamicamente para gerenciar o risco e otimizar os resultados de negociação.
O princípio central da estratégia é baseado na análise de características geométricas das formas de preços, e gira em torno de alguns pontos-chave:
Identificação de padrões de altitudeA estratégia se concentra principalmente em dois tipos de padrões de altura - a altura principal (a porcentagem do preço definida pelo usuário) e a altura de retorno (a porcentagem menor também definida pelo usuário). O sistema calcula dinamicamente esses valores de altura para se adaptar a diferentes condições de mercado.
Detecção de múltiplos modos:
Optimização de parâmetros:
Filtragem de indicadores técnicos:
Estratégias de entrada e saída:
A estratégia mostra as seguintes vantagens significativas, através de uma análise profunda da implementação do código:
Mecanismos de geração de sinais objetivosA base de cálculos matemáticos e de relações geométricas claramente definidas reduz a influência de julgamentos subjetivos e torna as decisões de negociação mais sistemáticas e consistentes.
Adaptação às condições do mercadoA estratégia é capaz de se adaptar automaticamente a diferentes faixas de preços e a um ambiente de mercado flutuante, calculando o parâmetro de altura usando uma porcentagem do preço médio.
Mecanismo de confirmação multidimensionalCombinação de reconhecimento de forma, indicadores RSI e análise de volume de transação, fornecendo confirmação de sinal em vários níveis, ajudando a filtrar sinais de negociação de baixa qualidade.
Uma estrutura clara de gestão de riscosCada transação tem um ponto de parada e de parada predefinido, o que ajuda os comerciantes a controlar o risco e manter uma taxa de retorno de risco consistente.
Ajuda visual: Apresentação visual de padrões de negociação identificados por meio de retângulos e etiquetas no gráfico, facilitando a compreensão e a verificação de sinais por parte dos traders.
Desenho parametrizadoA estratégia fornece vários parâmetros ajustáveis, permitindo que o comerciante otimizar de acordo com as condições específicas do mercado e as preferências de risco pessoais.
Identificação de múltiplos modelosO Google Trends permite que os traders se sintam mais propensos a negociar com o mercado, além de identificar a formação das principais tendências, capturando oportunidades de retração nas tendências e oferecendo mais pontos de entrada para negociações.
Apesar das vantagens desta estratégia, existem os seguintes riscos potenciais:
Sensibilidade do parâmetroO desempenho da estratégia é altamente dependente da configuração dos parâmetros, e os parâmetros inadequados podem levar a overtrading ou a perda de sinais importantes. A solução é encontrar a combinação de parâmetros ótima através do histórico retrospectivo e reavaliar periodicamente a eficácia dos parâmetros.
Risco de Falso Breakout: O mercado pode formar um padrão semelhante ao esperado, mas depois inverter, causando sinais errados. Recomenda-se a adição de mecanismos de confirmação, como esperar a confirmação do preço de fechamento ou a verificação cruzada em combinação com outros indicadores.
Limitação de percentagem fixaO uso de alturas de percentual fixo pode não ser adequado para mercados com variações acentuadas de volatilidade. Pode ser considerado a introdução de métodos de alturas dinâmicas baseados no ATR ou na volatilidade histórica.
Processamento computacional intensivoA estratégia envolve múltiplos circuitos e julgamentos condicionais, que podem causar problemas de desempenho ao processar grandes quantidades de dados. Otimizar a estrutura do código ou simplificar certas etapas de computação pode aumentar a eficiência de execução.
Simplificação de tendênciasA análise de tendências atuais baseada apenas em uma simples comparação de médias móveis pode não ser capaz de capturar com precisão a estrutura de mercado complexa. Considere a integração de algoritmos de identificação de tendências mais complexos para melhorar a precisão.
Paragem estática de paragemO uso fixo de alturas de retorno e alturas principais como stop loss e stop loss pode não ser suficientemente flexível. Pode ser introduzido um mecanismo de stop loss e stop loss dinâmico baseado na volatilidade do mercado ou no suporte de resistência.
Com base na análise do código, a estratégia pode ser otimizada para:
Ajuste de parâmetros dinâmicosIntrodução de um mecanismo de parâmetros de adaptação que ajusta automaticamente os parâmetros de alta percentagem e largura de modelo de acordo com a volatilidade do mercado e o ciclo de negociação. Assim, é possível adaptar melhor as características de diferentes fases do mercado.
Confirmação de tendência de aumentoIntegração de métodos de identificação de tendências mais complexos, como análise de tendências de múltiplos períodos, mudanças de largura de banda de Brin ou índice de movimento de direção (DMI), para melhorar a precisão do julgamento de tendências.
Filtragem de sinal de otimizaçãoA introdução de condições de filtragem adicionais, como a relação de posição entre o preço e a média móvel, a análise de consistência do RSI de períodos múltiplos ou a distribuição de características de volume de transação, reduz a falácia.
Melhorar a avaliação de feedbackAumento de indicadores de avaliação estratégica mais abrangentes, como a retirada máxima, a taxa de Sharpe e o fator de perda, para avaliar o desempenho da estratégia e orientar a otimização dos parâmetros.
Mecanismo de suspensão de prejuízosAumentar a eficácia do gerenciamento de risco: Ajustar o nível de parada de perda com base no ATR ou na dinâmica de flutuação recente, em vez de simplesmente usar uma altura de retorno fixa.
Análise do cenário de mercado integradoAdição de uma função de classificação de cenários de mercado para usar diferentes configurações de parâmetros ou lógica de negociação em diferentes estados de mercado (como alta volatilidade, baixa volatilidade, forte tendência ou oscilação intermédia).
Otimização da Eficiência de ExecuçãoReestruturação de algoritmos de reconhecimento de padrões, redução de ciclos embutidos e de computação repetida, e melhoria da velocidade de execução de estratégias em ambientes em tempo real.
Aumentar o tempo de filtragemA adição de condições de filtragem baseadas no tempo, evitando os momentos de maior volatilidade, como aberturas e fechamentos de mercados ou notícias importantes, melhorando a qualidade do sinal.
A estratégia de quantificação de padrões de altura semelhantes a um retângulo é um método de análise técnica exclusivo para capturar oportunidades de negociação através da definição precisa e da identificação de características geométricas de flutuações de preços. Sua inovação central consiste em transformar padrões de gráficos abstratos em relações matemáticas quantificáveis e em combinação com indicadores técnicos para a confirmação múltipla. A estratégia oferece uma estrutura de negociação completa, incluindo sinais de entrada, geração de gerenciamento de risco e apresentação gráfica, adequada para os comerciantes que buscam métodos de negociação sistematizados.
Embora a estratégia ofereça uma nova perspectiva para analisar o mercado, sua eficácia depende em grande parte da otimização dos parâmetros e da adaptabilidade do mercado. A estratégia tem potencial para ser uma ferramenta eficaz na caixa de ferramentas do comerciante, através da melhoria contínua do mecanismo de filtragem de sinais, do aumento da precisão de discernimento de tendências e da otimização dos métodos de gerenciamento de risco.
/*backtest
start: 2024-03-26 00:00:00
end: 2025-03-25 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Similar Rectangle Heights - Strategy", overlay=true)
// Strategy parameters
lookbackPeriod = input.int(45, "Analysis period", minval=10)
primaryHeightPercent = input.float(5.0, "Primary height (% of price)", minval=0.5, maxval=20.0, step=0.5)
correctionHeightPercent = input.float(2.2, "Correction height (% of price)", minval=0.5, maxval=10.0, step=0.5)
minPatternBars = input.int(5, "Minimum pattern width (candles)", minval=3)
maxPatternBars = input.int(14, "Maximum pattern width (candles)", minval=5)
useVolume = input.bool(false, "Include volume")
useRSI = input.bool(true, "Include RSI")
rsiPeriod = input.int(23, "RSI period", minval=5)
rsiOverbought = input.int(55, "RSI overbought level", minval=50, maxval=90)
rsiOversold = input.int(50, "RSI oversold level", minval=10, maxval=50)
// Calculate primary height and correction height in price points
avgPrice = ta.sma(close, lookbackPeriod)
primaryHeight = avgPrice * primaryHeightPercent / 100
correctionHeight = avgPrice * correctionHeightPercent / 100
// Calculate RSI
rsi = ta.rsi(close, rsiPeriod)
// Function to detect a bullish pattern
bullishPattern(idx) =>
// Check if there is a low followed by a rise of a specified height
lowestLow = ta.lowest(low, minPatternBars)[idx]
highAfterLow = ta.highest(high, minPatternBars)[idx]
patternHeight = highAfterLow - lowestLow
// Check if pattern height matches the primary height
heightMatch = math.abs(patternHeight - primaryHeight) <= primaryHeight * 0.2
// Check if pattern width is within range
patternWidth = 0
for i = 0 to maxPatternBars - 1
if idx + i < lookbackPeriod and low[idx + i] == lowestLow
for j = i to maxPatternBars - 1
if idx + j < lookbackPeriod and high[idx + j] == highAfterLow
patternWidth := j - i + 1
break
break
widthMatch = patternWidth >= minPatternBars and patternWidth <= maxPatternBars
// Check volume and RSI conditions
volumeCondition = not useVolume or volume > ta.sma(volume, lookbackPeriod)
rsiCondition = not useRSI or rsi[idx] < rsiOversold
// Return true if all conditions are met
heightMatch and widthMatch and volumeCondition and rsiCondition
// Function to detect a bearish pattern
bearishPattern(idx) =>
// Check if there is a high followed by a drop of a specified height
highestHigh = ta.highest(high, minPatternBars)[idx]
lowAfterHigh = ta.lowest(low, minPatternBars)[idx]
patternHeight = highestHigh - lowAfterHigh
// Check if pattern height matches the primary height
heightMatch = math.abs(patternHeight - primaryHeight) <= primaryHeight * 0.2
// Check if pattern width is within range
patternWidth = 0
for i = 0 to maxPatternBars - 1
if idx + i < lookbackPeriod and high[idx + i] == highestHigh
for j = i to maxPatternBars - 1
if idx + j < lookbackPeriod and low[idx + j] == lowAfterHigh
patternWidth := j - i + 1
break
break
widthMatch = patternWidth >= minPatternBars and patternWidth <= maxPatternBars
// Check volume and RSI conditions
volumeCondition = not useVolume or volume > ta.sma(volume, lookbackPeriod)
rsiCondition = not useRSI or rsi[idx] > rsiOverbought
// Return true if all conditions are met
heightMatch and widthMatch and volumeCondition and rsiCondition
// Function to detect a bullish correction in an uptrend
bullishCorrection(idx) =>
// Check if there is a pullback of correction height after a rise
highBeforeCorrection = ta.highest(high, minPatternBars)[idx]
lowDuringCorrection = ta.lowest(low, minPatternBars)[idx]
correctionSize = highBeforeCorrection - lowDuringCorrection
// Check if correction height matches expected height
heightMatch = math.abs(correctionSize - correctionHeight) <= correctionHeight * 0.2
// Check if correction width is within range
correctionWidth = 0
for i = 0 to maxPatternBars - 1
if idx + i < lookbackPeriod and high[idx + i] == highBeforeCorrection
for j = i to maxPatternBars - 1
if idx + j < lookbackPeriod and low[idx + j] == lowDuringCorrection
correctionWidth := j - i + 1
break
break
widthMatch = correctionWidth >= minPatternBars / 2 and correctionWidth <= maxPatternBars / 2
// Check if we are in an uptrend
uptrend = ta.sma(close, lookbackPeriod)[idx] > ta.sma(close, lookbackPeriod)[idx + minPatternBars]
// Return true if all conditions are met
heightMatch and widthMatch and uptrend
// Function to detect a bearish correction in a downtrend
bearishCorrection(idx) =>
// Check if there is a pullback of correction height after a drop
lowBeforeCorrection = ta.lowest(low, minPatternBars)[idx]
highDuringCorrection = ta.highest(high, minPatternBars)[idx]
correctionSize = highDuringCorrection - lowBeforeCorrection
// Check if correction height matches expected height
heightMatch = math.abs(correctionSize - correctionHeight) <= correctionHeight * 0.2
// Check if correction width is within range
correctionWidth = 0
for i = 0 to maxPatternBars - 1
if idx + i < lookbackPeriod and low[idx + i] == lowBeforeCorrection
for j = i to maxPatternBars - 1
if idx + j < lookbackPeriod and high[idx + j] == highDuringCorrection
correctionWidth := j - i + 1
break
break
widthMatch = correctionWidth >= minPatternBars / 2 and correctionWidth <= maxPatternBars / 2
// Check if we are in a downtrend
downtrend = ta.sma(close, lookbackPeriod)[idx] < ta.sma(close, lookbackPeriod)[idx + minPatternBars]
// Return true if all conditions are met
heightMatch and widthMatch and downtrend
// Detecting signals
var float entryPrice = na
var float stopLoss = na
var float takeProfit = na
// Buy signal
buySignal = false
for i = 0 to 3
if bullishPattern(i) or (i > 0 and bullishCorrection(i))
buySignal := true
break
// Sell signal
sellSignal = false
for i = 0 to 3
if bearishPattern(i) or (i > 0 and bearishCorrection(i))
sellSignal := true
break
// Execute strategy
if buySignal
entryPrice := close
stopLoss := close - correctionHeight
takeProfit := close + primaryHeight
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", "Long", stop=stopLoss, limit=takeProfit)
if sellSignal
entryPrice := close
stopLoss := close + correctionHeight
takeProfit := close - primaryHeight
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", "Short", stop=stopLoss, limit=takeProfit)