
A estratégia de rastreamento de tendências de dinâmica cruzada é um sistema de negociação simples e eficiente que combina habilmente dois indicadores técnicos, a média móvel (SMA) e o índice de força relativa (RSI), formando um sistema de geração de sinais de compra e venda automático. A estratégia usa o preço e o ponto de cruzamento do SMA de 20 ciclos como condição principal para o disparo do sinal, enquanto combina a confirmação de movimento do indicador RSI para filtrar alguns sinais de negociação de baixa qualidade. A estratégia também inclui um módulo de rastreamento de desempenho para monitorar a taxa de sucesso e fracasso das negociações em tempo real, fornecendo uma referência para os decisores de negociação.
O princípio central da estratégia é capturar os pontos de mudança de tendência através da intersecção do preço com a linha média, enquanto o RSI é usado para a confirmação de sinais, como segue:
Condições de compraO sistema gera um sinal de compra quando o preço atravessa um SMA de 20 ciclos para cima e o RSI é maior que 60. Esta condição combina as duas dimensões da tendência e da dinâmica: a ruptura da linha média do preço indica a possibilidade de uma tendência ascendente, enquanto o RSI acima de 60 confirma a existência de uma força ascendente.
Condições de vendaQuando o preço atravessa uma SMA de 20 ciclos para baixo e o RSI é menor que 40, o sistema gera um sinal de venda. Da mesma forma, esta condição identifica uma possível reversão de tendência e confirma a dinâmica de queda com o RSI abaixo de 40.
Mecanismo de rastreamento de desempenhoA estratégia inclui um sistema de monitoramento do desempenho das transações que acompanha os seguintes indicadores:
VisualizaçãoEstratégia: Marque os pontos de compra e venda com “B” (Buy) e “S” (Sell) no gráfico e exiba estatísticas de desempenho em tempo real através de tabelas.
Simplicidade e eficiênciaA utilização de apenas dois indicadores técnicos comuns (SMA e RSI) para a construção de um sistema de negociação completo, reduz o risco de otimização excessiva e overfit.
Mecanismo de dupla confirmaçãoA combinação do indicador de tendência (SMA) e do indicador de momentum (RSI) aumenta a confiabilidade do sinal. O preço deve não apenas romper a linha média, mas também ter energia suficiente para desencadear a negociação.
Alta automatizaçãoA estratégia é totalmente automatizada para gerar sinais de compra e venda, reduzindo a interferência emocional humana e é adequada para o uso de comerciantes sistematizados.
Avaliação de desempenho embutidaA estratégia de negociação é um sistema de negociação que permite ao trader avaliar objetivamente o desempenho da estratégia em tempo real, ajustando os parâmetros ou saindo da estratégia em caso de fracasso.
Consciência de controle de riscoAtividades: Ajudar a identificar potenciais pontos de parada de perdas e criar consciência de gerenciamento de risco, monitorando o comportamento dos preços durante os 7 ciclos posteriores à compra.
Visualização intuitivaA estratégia de negociação de Forex é baseada em um conjunto de estratégias de negociação de Forex, que são as seguintes:
Risco de Falso BreakoutApesar da filtragem com o RSI, a estratégia ainda pode gerar uma grande quantidade de falsos breakouts no mercado de liquidação, resultando em transações frequentes e custos de transação desnecessários.
Sensibilidade do parâmetroO desempenho da estratégia é altamente dependente da escolha do ciclo SMA (20) e do ciclo RSI (8) e do seu limiar (60⁄40). Em diferentes ambientes de mercado ou variedades, esses parâmetros fixos podem não funcionar bem.
Falta de adaptabilidadeA estratégia não tem a capacidade de identificar o ambiente de mercado e tem um bom desempenho em mercados de tendência, mas pode frequentemente perder em mercados de turbulência.
Mecanismo de suspensão de perdas simplesA estratégia, apesar de acompanhar as falhas, não tem uma função de parada dinâmica, o que pode levar a perdas excessivas em situações extremas.
Falta de gestão de posiçõesEstratégia de entrada e saída de posições fixas, sem ajuste do tamanho da posição com base na volatilidade do mercado ou na intensidade do sinal, não é possível otimizar a utilização de fundos.
Limites da avaliação de desempenhoA definição de sucesso é um aumento de 2% no preço. Este limiar fixo pode não ser aplicável em todos os cenários de mercado, e variedades altamente voláteis podem necessitar de um limiar mais elevado.
Adicionar um filtro de ambiente de mercadoIntrodução de indicadores de volatilidade (como o ATR) ou indicadores de intensidade de tendência (como o ADX) para ajudar a identificar o estado do mercado, reduzir a frequência de negociação ou ajustar os parâmetros em mercados de turbulência.
Mecanismo de adaptação de parâmetros: Realizar o ajuste dinâmico dos parâmetros SMA e RSI, otimizar automaticamente os ciclos e os devaluações de acordo com o desempenho recente do mercado, melhorar a adaptabilidade da estratégia.
Optimizar a gestão de posiçõesDesenhar um sistema de distribuição de posições dinâmicas com base na intensidade do sinal (por exemplo, o desvio do RSI), a volatilidade do mercado ou o risco da conta para controlar o risco de uma única transação.
Melhorar o mecanismo de suspensãoA implementação do stop loss dinâmico ou stop loss de rastreamento baseado no ATR permite um controle mais preciso do risco de cada transação.
Aumentar o tempo de filtragemConsidere o fator horário do mercado, evite a negociação em períodos anormais de volatilidade ou de baixa liquidez, e melhore a qualidade do sinal.
Confirmação de múltiplos períodos: Adicione a análise de múltiplos períodos, exigindo que a direção da tendência do período de tempo maior coincida com a direção da negociação, filtrando os sinais de negociação de tendências contrárias.
Avaliação de Performance de OtimizaçãoMelhorar a definição de sucesso/fracasso, podendo considerar a adoção de indicadores de avaliação mais abrangentes, como o lucro ajustado ao risco ou o lucro/risco.
A estratégia de rastreamento de tendências de dinâmica cruzada é um sistema de negociação simples e prático que filtra alguns sinais de baixa qualidade, efetivamente, através da combinação de indicadores SMA e RSI, que identificam pontos de mudança de tendência e, ao mesmo tempo, confirmam a dinâmica. A estratégia é especialmente adequada para investidores recém-exposos à negociação quantitativa, pois fornece sinais de negociação claros e funcionalidades de rastreamento de desempenho embutidas para ajudar os comerciantes a avaliar objetivamente o desempenho da estratégia.
Embora a estratégia seja relativamente simples em design, ela reflete importantes princípios em negociação quantitativa: acompanhamento de tendências, confirmação de sinais e monitoramento de desempenho. Através de orientações de otimização sugeridas, como filtragem do ambiente de mercado, auto-adaptação de parâmetros e aperfeiçoamento do mecanismo de parada de perdas, o comerciante pode aumentar significativamente a robustez e a adaptabilidade da estratégia, mantendo a lógica central da estratégia.
Essas estratégias simples, combinadas com indicadores técnicos clássicos, tendem a ser mais confiáveis e viáveis do que os algoritmos complexos, especialmente quando eles têm mecanismos de gerenciamento de risco e avaliação de desempenho embutidos. Para os comerciantes que procuram estratégias de quantificação de nível de entrada, é um ponto de partida ideal, que pode fornecer experiência em campo e servir de base para o desenvolvimento de estratégias subsequentes.
/*backtest
start: 2024-07-05 00:00:00
end: 2025-02-23 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("STOCKS TO BUY", overlay=true, fill_orders_on_standard_ohlc=true)
// Define 20-period SMA
sma20 = ta.sma(close, 20)
// RSI Calculation (8-period)
rsiValue = ta.rsi(close, 8)
// Buy Condition: Close crosses above 20-SMA and RSI > 60
buyCondition = ta.crossover(close, sma20) and rsiValue > 60
// Sell Condition: Close crosses below 20-SMA and RSI < 40
sellCondition = ta.crossunder(close, sma20) and rsiValue < 40
// Tracking Performance Metrics
var int totalSignals = 0 // Total number of 'B' signals
var int successCount = 0 // Times price rose >2% from 'B' candle close
var int failureCount = 0 // Times price fell below 'B' candle low within 7 bars
// Store entry price and low when signal occurs
var float entryPrice = na
var float entryLow = na
var int barCounter = na // Bar counter for tracking 7-candle window
if buyCondition
strategy.entry("Buy", strategy.long)
totalSignals := totalSignals + 1 // Increment 'B' count
entryPrice := close
entryLow := low
barCounter := 0 // Reset counter when new 'B' signal appears
if sellCondition
strategy.close("Buy") // Close the buy position on sell signal
// Monitor for 7 candles only
if not na(barCounter)
barCounter := barCounter + 1
// Check for Success (Price rises >2%)
success = high >= entryPrice * 1.02
if success
successCount := successCount + 1
entryPrice := na // Reset entry price after success
// Check for Failure (Price falls below entryLow within 7 candles)
failure = low < entryLow and barCounter <= 7
if failure
failureCount := failureCount + 1
entryLow := na // Reset entry low after failure
// Stop tracking after 7 candles
if barCounter > 7
barCounter := na
// Plot 'B' on chart when buy condition is met
plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="B")
// Plot 'S' on chart when sell condition is met
plotshape(series=sellCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="S")
// Display Performance Metrics Table
var table performanceTable = table.new(position=position.top_right, columns=2, rows=4, bgcolor=color.gray, border_width=1)
if bar_index % 10 == 0 // Update table every 10 bars for efficiency
table.cell(performanceTable, 0, 0, "Metric", text_color=color.white, bgcolor=color.blue)
table.cell(performanceTable, 1, 0, "Value", text_color=color.white, bgcolor=color.blue)
table.cell(performanceTable, 0, 1, "Total 'B' Signals", text_color=color.white)
table.cell(performanceTable, 1, 1, str.tostring(totalSignals), text_color=color.white)
table.cell(performanceTable, 0, 2, "Price Rose >2%", text_color=color.white)
table.cell(performanceTable, 1, 2, str.tostring(successCount), text_color=color.green)
table.cell(performanceTable, 0, 3, "Price Fell Below 'B' Low (7 bars)", text_color=color.white)
table.cell(performanceTable, 1, 3, str.tostring(failureCount), text_color=color.red)