Esta estratégia é chamada de
O núcleo desta estratégia é usar o indicador Supertrend para determinar a tendência atual de preços. O Supertrend combina médias móveis e ATR, o que é eficaz para julgar a direção das tendências de preços.
Especificamente, esta estratégia primeiro calcula a direção da Supertrend, RSI e ADX. Quando a Supertrend desce e o RSI mostra que a tendência de alta está desaparecendo, ele faz entrada curta. Quando a Supertrend aparece novamente, ele fecha a posição curta.
A maior vantagem desta estratégia é que pode identificar automaticamente as tendências de preços e fazer entradas e saídas com base nas tendências, sem julgamento manual.
O maior risco é que o Supertrend em si não seja altamente preciso no julgamento das tendências de preços, o que pode gerar sinais incorretos.
A otimização pode ser feita ajustando os parâmetros da Supertrend e adicionando stop loss para reduzir os riscos.
Vários aspectos desta estratégia podem ser otimizados:
Otimizar os parâmetros da Supertrend para melhorar a precisão
Adicionar perda de parada de trail para o controle por perda de negociação
Adicionar mais filtros como Bollinger Bands, KDJ para melhorar a lucratividade
Desenvolver regras de entrada e saída de longo prazo semelhantes para completar a estratégia
Em conclusão, esta é uma estratégia de negociação automatizada que julga tendências com base na Supertrend. A vantagem é o alto grau de automação e detecção automática de tendências. A desvantagem é a baixa precisão da própria Supertrend e nenhum stop loss.
/*backtest start: 2023-01-16 00:00:00 end: 2024-01-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Supertrend Strategy", overlay=true) atrPeriod = input(10, "ATR Length") factor = input.float(3.0, "Factor", step = 0.01) [_, direction] = ta.supertrend(factor, atrPeriod) adxlen = input(7, title="ADX Smoothing") dilen = input(7, title="DI Length") dirmov(len) => up = ta.change(high) down = -ta.change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) truerange = ta.rma(ta.tr, len) plus = fixnan(100 * ta.rma(plusDM, len) / truerange) minus = fixnan(100 * ta.rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) adx sig = adx(dilen, adxlen) if ta.change(direction) < 0 and ta.rsi(close, 21) < 66 and ta.rsi(close, 3) > 80 and ta.rsi(close, 28) > 49 and sig > 20 strategy.entry("My Long Entry Id", strategy.long) if ta.change(direction) > 0 strategy.close("My Long Entry Id") //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)