Esta estratégia integra o indicador Supertrend e o Índice do Canal de Commodities (CCI) para realizar um rastreamento de tendências de vários prazos e geração de sinais comerciais. A ideia principal é usar o indicador CCI para julgar a direção da tendência de curto prazo, combinando o indicador Supertrend para determinar a direção da tendência de médio a longo prazo.
O indicador CCI pode identificar cenários de sobrecompra e sobrevenda. Um cruzamento ascendente da linha 0 é um sinal de alta, enquanto um descendente é um sinal de baixa.
cci_period = input(28, "CCI Period")
cci = cci(source, cci_period)
ML = input(0, "CCI Mid Line pivot")
O código acima define o período do CCI e a posição da linha média.
TrendUp := cci[1] > ML ? max(Up,TrendUp[1]) : Up
TrendDown := cci[1]< ML ? min(Dn,TrendDown[1]) : Dn
Este código verifica se o cci atravessa acima/abaixo da linha 0 para atualizar a faixa superior/inferior da Supertrend.
O indicador Supertrend combina o ATR com o preço para determinar tendências de médio a longo prazo.
Supertrend é calculado como:
Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
Onde Fator e Pd são parâmetros ajustáveis.
A variável tendência determina a direção actual da Supertendência:
Trend := cci > ML ? 1: cci < ML ? -1: nz(Trend[1],1)
Ao integrar o CCI e o Supertrend, esta estratégia realiza o julgamento da tendência de vários prazos.
Quando as direcções concordam, são gerados sinais comerciais mais confiáveis.
isLong = st_trend == 1
isShort = st_trend == -1
Entrar quando o curto e médio prazo se alinham, sair quando as direcções discordam.
Integra indicadores de curto e médio prazo para sinais mais fiáveis.
O Fator Supertrend e o Período CCI podem ser ajustados às condições do mercado.
Lógica simples e fácil de entender, ótimo para iniciantes.
Aplicável a ações, forex, criptomoedas por ajuste de parâmetros.
Muitos sinais falsos podem ocorrer quando os preços flutuam violentamente.
Combine indicadores de impulso para rastrear tendências aceleradas.
Para efeitos de controlo do risco, adicionar o stop loss baseado no ATR.
Ajustar parâmetros para diferentes mercados.
Combine com MACD, KDJ etc. para captar fortes movimentos de ímpeto.
Utilize métodos de IA e conjunto para otimizar parâmetros e regras.
Esta estratégia combina com sucesso Supertrend e CCI para rastreamento de tendências em vários prazos. Lógica simples, bom potencial de recompensa e personalização. Pode melhorar ainda mais através de ajuste de parâmetros, stop loss e aprendizado de máquina para se tornar um sistema de negociação sólido.
/*backtest start: 2024-01-10 00:00:00 end: 2024-01-17 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //@author=Daveatt StrategyName = "Best Supertrend CCI Strategy" ShortStrategyName = "Best Supertrend CCI Strategy" strategy(title=StrategyName, shorttitle=ShortStrategyName, overlay=true ) ////////////////////////// //* COLOR CONSTANTS *// ////////////////////////// AQUA = #00FFFFFF BLUE = #0000FFFF RED = #FF0000FF LIME = #00FF00FF GRAY = #808080FF DARKRED = #8B0000FF DARKGREEN = #006400FF GOLD = #FFD700 WHITE = color.white // Plots GREEN_LIGHT = color.new(color.green, 40) RED_LIGHT = color.new(color.red, 40) BLUE_LIGHT = color.new(color.aqua, 40) PURPLE_LIGHT = color.new(color.purple, 40) source = input(close) /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////// CCI ///////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// cci_period = input(28, "CCI Period") cci = cci(source, cci_period) //UL = input(80, "Upper level") //LL = input(20, "Lower Level") ML = input(0, "CCI Mid Line pivot") /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// ///////////////////////////// SUPERTREND ///////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// Factor=input(3,title="[ST] Factor", minval=1,maxval = 100, type=input.float) Pd=input(3, title="[ST] PD", minval=1,maxval = 100) /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// /////////////////////// SUPERTREND DETECTION ////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// f_supertrend(Factor, Pd) => Up=hl2-(Factor*atr(Pd)) Dn=hl2+(Factor*atr(Pd)) TrendUp = 0.0 TrendUp := cci[1] > ML ? max(Up,TrendUp[1]) : Up TrendDown = 0.0 TrendDown := cci[1]< ML ? min(Dn,TrendDown[1]) : Dn Trend = 0.0 Trend := cci > ML ? 1: cci < ML ? -1: nz(Trend[1],1) Tsl = Trend==1? TrendUp: TrendDown [Trend, Tsl] [st_trend, st_tsl] = f_supertrend(Factor, Pd) // Plot the ST linecolor = close >= st_tsl ? color.green : color.red plot(st_tsl, color = linecolor , linewidth = 3,title = "SuperTrend", transp=0) isLong = st_trend == 1 isShort = st_trend == -1 longClose = isLong[1] and isShort shortClose = isShort[1] and isLong strategy.entry("Long", 1, when=isLong) strategy.close("Long", when=longClose ) strategy.entry("Short", 0, when=isShort) strategy.close("Short", when=shortClose )