
Esta estratégia é uma estratégia de negociação de linha curta baseada em um sistema de avaliação de confirmação e classificação de vários indicadores. Ela avalia a força do sinal de negociação analisando o tamanho do gráfico, a mudança de volume de negociação e o indicador RSI, dividindo os sinais em três níveis A, B e C, onde o sinal de nível A é o mais forte e o sinal de nível C é o mais fraco.
A estratégia baseia-se em uma combinação de elementos-chave:
Julgar tendências: Use a EMA de 200 como principal ferramenta de determinação de tendências. Preços acima da EMA de 200 procurando oportunidades de fazer mais, abaixo da EMA de 200 procurando oportunidades de fazer menos.
Sinais de cruzamento de equilíbrioA estratégia usa EMA e SMA de 20 ciclos, que produzem um sinal inicial quando os dois equilíbrios se cruzam. Para fazer mais sinais, é necessário atravessar o SMA na EMA, e para fazer um sinal de vazio, é necessário atravessar o SMA na EMA.
RSI confirmado: Use o indicador RSI de 9 ciclos, exija RSI maior do que 50 quando estiver em pluto, exija RSI menor do que 50 quando estiver em vazio.
Avaliação do tamanho do corpo: Análise estratégica do tamanho do barril comparado com o volume médio dos últimos 20 barris, para avaliar a dinâmica dos preços atuais.
Confirmação de transaçãoRequer que o volume de transações atuais seja maior do que o volume de transações do período anterior, garantindo a participação suficiente no mercado.
Sistema de classificação de sinais:
Gestão de Riscos: Contém níveis de stop () padrão de 0,5% e stop () padrão de 0,3% ajustáveis em percentagem do preço de entrada.
A estratégia utiliza essas condições de confirmação múltipla para garantir que as entradas de negociação sejam feitas apenas com a confirmação de tendências e dinâmicas de mercado suficientes, reduzindo assim os falsos sinais.
Sistema de classificaçãoA maior vantagem reside no seu exclusivo sistema de classificação de sinais, permitindo que os comerciantes escolham apenas os sinais de maior intensidade para negociar (Classe A) ou que incluam mais oportunidades de negociação (Classes B e C) de acordo com suas preferências de risco.
Mecanismo de confirmação múltipla: Combinação de vários indicadores técnicos (RSI, linha média), comportamento de preços (tamanho do corpo) e participação de mercado (volume de transação) para reduzir a probabilidade de falsos sinais.
Gestão de riscos internaA configuração automática de stop-loss garante que o risco de cada transação seja controlado, evitando que uma única transação cause perdas excessivas.
Sistema de feedback visualO indicador de negociação é automaticamente marcado no gráfico quando o sinal de negociação é acionado, mostrando claramente a direção da negociação e a intensidade do sinal, para facilitar a identificação rápida do comerciante.
Função de alertaO sistema de alerta do TradingView foi integrado para alertar os traders através de uma janela de pop-up, e-mail ou notificação por telefone.
Adaptação a diferentes condições de mercado: A estratégia pode manter um desempenho relativamente estável em diferentes ambientes de volatilidade através da classificação de sinais e confirmação de múltiplos indicadores.
Personalização: Oferece opções personalizadas para vários parâmetros-chave, incluindo o comprimento do RSI, o ciclo da linha média, o índice de stop-loss e o nível de sinal a ser negociado, permitindo que a estratégia seja ajustada de acordo com as preferências pessoais e as condições do mercado.
Tendências seguidas e dinâmicaA estratégia combina efetivamente o seguimento de tendências (linea média) e a confirmação de dinâmica (RSI, tamanho de pivot), formando um sistema de negociação mais completo.
Filtragem excessivaO mecanismo de confirmação múltipla pode levar à perda de oportunidades de negociação válidas, especialmente quando se negocia apenas com sinais de nível A, o que pode reduzir significativamente a frequência de negociação.
Sensibilidade do parâmetroA estratégia usa vários indicadores e parâmetros técnicos, cujas pequenas variações podem levar a grandes diferenças de desempenho. Por exemplo, o comprimento do RSI, o ciclo da linha média e o tamanho do casco podem precisar de ajustes de acordo com as diferentes condições do mercado.
Percentagem fixa de stop lossA estratégia usa um stop loss de porcentagem fixa, que pode não ser adequado para todas as condições de mercado. Em ambientes de alta volatilidade, o nível de stop loss fixo pode ser muito pequeno, enquanto em ambientes de baixa volatilidade, pode ser muito grande.
Efeitos do ruído no mercadoNo período de 1 minuto, o ruído do mercado é maior, o que pode levar a mais falsos sinais, especialmente em períodos de baixa volatilidade.
Risco de liquidezA qualidade dos sinais de negociação pode diminuir durante os períodos de não negociação ou de baixa liquidez, aumentando o risco de deslizamento.
Risco de perdas contínuasMesmo com o uso de um sistema de classificação, pode haver perdas contínuas em situações de mudanças bruscas no mercado, o que requer uma estratégia de gestão de fundos adequada.
Risco de contra-trendA estratégia baseia-se principalmente no cruzamento da linha média de curto prazo e na confirmação do RSI, o que pode gerar sinais errôneos em situações de forte contra-tendência.
Os métodos para mitigar esses riscos incluem: uso de condições de filtragem em um período de tempo mais longo, ajuste dinâmico dos níveis de stop loss, negociação em períodos de mercado específicos (como períodos de grande volatilidade ou de alta liquidez), avaliação e otimização periódica dos parâmetros e controle rigoroso da margem de risco de cada transação.
atr = ta.atr(14)
longSL = close - atr * slMultiplier
longTP = close + atr * tpMultiplier
timeFilter = (hour >= 14 and hour < 16) or (hour >= 9 and hour < 11)
higherTimeframeTrend = request.security(syminfo.ticker, "15", close > ta.ema(close, 200))
longCondition = longBase and higherTimeframeTrend
consecutiveLongSignals = longBase and longBase[1]
adaptiveLength = math.round(ta.atr(14) / ta.atr(14)[20] * baseLength)
adaptiveRsi = ta.rsi(close, math.max(2, adaptiveLength))
if setupGrade == "A"
tpMultiplier = 2.0
else if setupGrade == "B"
tpMultiplier = 1.5
else
tpMultiplier = 1.0
volatilityFilter = ta.atr(14) > ta.sma(ta.atr(14), 20) * 0.8
if (strategy.position_size > 0 and close > entryPrice * (1 + partialTpPerc/100))
strategy.exit("Partial", "Long", qty_percent=50)
Essas orientações de otimização visam principalmente resolver o problema da adaptabilidade da estratégia em diferentes condições de mercado, melhorar a qualidade do sinal e gerenciar melhor o risco, mantendo a lógica central da estratégia inalterada.
A estratégia de reconhecimento de tendências e gerenciamento de risco do US30 é um sistema de negociação de linha curta que combina vários indicadores técnicos, reconhecimento de tendências e análise de dinâmica. Sua característica é a avaliação de qualidade do sinal de negociação usando um sistema de avaliação de grau (níveis A, B e C), permitindo que o comerciante escolha a qualidade do sinal de acordo com suas próprias preferências de risco. A estratégia aumenta a confiabilidade do sinal por meio da análise multidimensional de cruzamentos de linha uniforme, confirmação de RSI, tamanho do bloco e variação do volume de negociação.
A função de gerenciamento de risco embutida e o feedback visual claro tornam-na um sistema de negociação relativamente completo. No entanto, a estratégia pode enfrentar desafios como o ruído do mercado, a sensibilidade dos parâmetros e a falta de flexibilidade dos stop-loss fixos quando executada em um período de tempo curto. A estratégia tem o potencial de aumentar ainda mais a adaptabilidade e a estabilidade em diferentes ambientes de mercado, ao integrar direções de otimização como gerenciamento de risco dinâmico, análise de múltiplos períodos de tempo e filtragem de condições de mercado.
O sistema oferece um bom ponto de partida para os comerciantes que preferem estratégias de negociação de linha curta com regras claras e com risco controlado, que podem ser personalizadas de acordo com o estilo de negociação individual e as características do mercado-alvo, através de um maior feedback e otimização.
/*backtest
start: 2025-02-01 00:00:00
end: 2025-03-31 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("US30 1-min Strategy with TP/SL, Grades, Alerts", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === Inputs ===
rsiLength = input.int(9, title="RSI Length")
maLength = input.int(20, title="MA Length (SMA & EMA)")
ema200Length = input.int(200, title="200 EMA Length")
tpPerc = input.float(0.5, title="Take Profit %", step=0.1)
slPerc = input.float(0.3, title="Stop Loss %", step=0.1)
// Grade filters
allowA = input.bool(true, title="Trade A-Grade Setups")
allowB = input.bool(true, title="Trade B-Grade Setups")
allowC = input.bool(false, title="Trade C-Grade Setups")
// === Indicators ===
rsi = ta.rsi(close, rsiLength)
sma = ta.sma(close, maLength)
ema = ta.ema(close, maLength)
ema200 = ta.ema(close, ema200Length)
volumeRising = volume > volume[1]
// === Candle Size Helpers ===
avgBody = ta.sma(math.abs(close - open), 20)
candleBody = math.abs(close - open)
candleLarge = candleBody > avgBody
candleVeryLarge = candleBody > avgBody * 2
// === Setup Grade Conditions ===
gradeA = candleVeryLarge and volumeRising and rsi > 55 or rsi < 45
gradeB = candleLarge and volumeRising
gradeC = candleLarge
// === Setup Conditions ===
// --- Long ---
longBase = close > ema200 and ta.crossover(ema, sma) and rsi > 50 and close > ema and close > sma
// --- Short ---
shortBase = close < ema200 and ta.crossunder(ema, sma) and rsi < 50 and close < ema and close < sma
// === Determine Grade ===
setupGrade = ""
isTrade = false
if longBase
if gradeA and allowA
setupGrade := "A"
isTrade := true
else if gradeB and allowB
setupGrade := "B"
isTrade := true
else if gradeC and allowC
setupGrade := "C"
isTrade := true
if shortBase
if gradeA and allowA
setupGrade := "A"
isTrade := true
else if gradeB and allowB
setupGrade := "B"
isTrade := true
else if gradeC and allowC
setupGrade := "C"
isTrade := true
// === Entry & TP/SL ===
longTP = close * (1 + tpPerc / 100)
longSL = close * (1 - slPerc / 100)
shortTP = close * (1 - tpPerc / 100)
shortSL = close * (1 + slPerc / 100)
// Entry
if longBase and isTrade and (setupGrade == "A" or setupGrade == "B" or setupGrade == "C")
strategy.entry("Long " + setupGrade, strategy.long)
strategy.exit("TP/SL", "Long " + setupGrade, limit=longTP, stop=longSL)
label.new(bar_index, high, "Long " + setupGrade, style=label.style_label_up, color=color.green, textcolor=color.white)
alert("LONG " + setupGrade + " setup triggered!", alert.freq_once_per_bar)
if shortBase and isTrade and (setupGrade == "A" or setupGrade == "B" or setupGrade == "C")
strategy.entry("Short " + setupGrade, strategy.short)
strategy.exit("TP/SL", "Short " + setupGrade, limit=shortTP, stop=shortSL)
label.new(bar_index, low, "Short " + setupGrade, style=label.style_label_down, color=color.red, textcolor=color.white)
alert("SHORT " + setupGrade + " setup triggered!", alert.freq_once_per_bar)
// === Plotting MAs ===
plot(ema, title="20 EMA", color=color.red)
plot(sma, title="20 SMA", color=color.blue)
plot(ema200, title="200 EMA", color=color.green)