Estratégia de negociação multi-time frame baseada em indicadores Supertrend e CCI


Data de criação: 2024-01-18 15:09:33 última modificação: 2024-01-18 15:09:33
cópia: 2 Cliques: 855
1
focar em
1617
Seguidores

Estratégia de negociação multi-time frame baseada em indicadores Supertrend e CCI

Visão geral

Esta estratégia combina o indicador de tendências super e o indicador de canais de commodities (CCI) para realizar o rastreamento de tendências e a geração de sinais de negociação em um período de tempo múltiplo. A principal idéia da estratégia é usar o indicador de tendências CCI para determinar a direção de tendências de curto prazo, enquanto a combinação do indicador de tendências super para determinar a direção de tendências de médio e longo prazo.

Princípio da estratégia

Indicadores do CCI avaliam tendências de curto prazo

O indicador CCI pode determinar o fenômeno de sobrevenda, quando o indicador CCI atravessa o eixo 0 de baixo para cima, é um sinal múltiplo, ao contrário, é um sinal em branco. Esta estratégia usa essa característica para determinar a direção da tendência de curto prazo.

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 e a posição do eixo central do indicador CCI.

TrendUp := cci[1] > ML ? max(Up,TrendUp[1]) : Up 
TrendDown := cci[1]< ML ? min(Dn,TrendDown[1]) : Dn

Esta parte do código determina se a curva cc atravessa o eixo 0, se sim, atualize o trajeto superior da tendência super, e o trajeto inferior atualize o trajeto inferior.

Indicadores de super tendências para avaliar tendências de médio e longo prazo

O indicador de super tendência combina o indicador ATR com o preço para determinar a direção da tendência de médio e longo prazo. Quando o preço quebra a super tendência, o sinal de ascensão é um sinal múltiplo e o sinal de descensão é um sinal sem cabeça.

A fórmula para o cálculo do indicador de super-tendência nesta estratégia é a seguinte:

Up=hl2-(Factor*atr(Pd)) 
Dn=hl2+(Factor*atr(Pd))

Factor e Pd são os parâmetros ajustáveis.

As variáveis de tendência determinam a direção atual da tendência:

Trend := cci > ML ? 1: cci < ML ? -1: nz(Trend[1],1)

Integração da CCI com a Supertrend

Através da integração dos indicadores CCI e Supertrend, esta estratégia permite a determinação de tendências em múltiplos quadros temporais. O indicador CCI capta tendências de curto prazo, enquanto o indicador Supertrend determina tendências de médio e longo prazo.

Quando as duas direções coincidem, o sinal de negociação é mais confiável.

isLong  = st_trend == 1
isShort = st_trend == -1

O tempo de entrada é convergente em curto e médio prazo, e o tempo de saída é invertido em curto e médio prazo.

Vantagens estratégicas

Julgamento de quadros de tempo múltiplos

A estratégia integra indicadores de avaliação de tendências de curto e médio prazos, tornando os sinais de negociação mais confiáveis.

Parâmetros ajustáveis

Os parâmetros do factor no indicador de tendência super e o cic_period no indicador CCI podem ser ajustados de acordo com o mercado, permitindo maior flexibilidade na estratégia.

Simples e claro

A estrutura da estratégia é simples e clara, fácil de entender e implementar, ideal para iniciantes em negociação quantitativa.

Aplicação ampla

Pode ser aplicado em mercados como ações, divisas e criptomoedas, ou pode ser ajustado para diferentes variedades de acordo com os parâmetros.

Riscos estratégicos e soluções

Os preços estão em alta.

Muitos sinais falsos aparecem quando os preços flutuam fortemente. O Factor de Supertrend pode ser amplificado de forma apropriada, reduzindo a frequência de negociação da estratégia.

Não é muito forte.

A super tendência, por si só, não é suficiente para acompanhar a força, pode ser considerada em combinação com um indicador de dinâmica para acompanhar a tendência durante a fase de aceleração da tendência.

Estratégia de paralisação

Esta estratégia não tem um stop loss, mas pode ser configurada com o tamanho do indicador ATR trails stop.

Direção de otimização da estratégia

Relevância do mercado

Adaptar os parâmetros de supertrends e CCIs de acordo com as características de diferentes mercados, aumentando a estabilidade da estratégia.

Combinação de indicadores de dinâmica

Em combinação com MACD, KDJ e outros indicadores de dinâmica, pode-se obter um maior rendimento seguindo a tendência durante a fase de aceleração da tendência.

Aprendizagem integrada

Parâmetros de estratégia e regras de negociação são otimizados usando métodos de aprendizado de máquina e aprendizado integrado.

Resumir

Esta estratégia combina com sucesso a super tendência e o indicador CCI, permitindo a determinação de tendências em múltiplos quadros temporais. A estratégia é simples e fácil de entender, os parâmetros são ajustáveis e o potencial de ganho é grande. Pode ser otimizada ainda mais por meio de modulação, stop loss e aprendizagem integrada, tornando-se uma estratégia de negociação confiável, estável e eficiente.

Código-fonte da estratégia
/*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 )