Estratégia clássica de rastreamento de tendências duplas

Autora:ChaoZhang, Data: 2023-11-01 16:54:29
Tags:

img

Resumo

Esta estratégia rastreia tendências duplas de ações, calculadora dos pontos pivô clássicos e usando o indicador RSI para determinar a direção da tendência atual.

Princípios de estratégia

A estratégia segue essencialmente as seguintes etapas para alcançar um duplo acompanhamento das tendências:

  1. Calcular Pontos de Pivot clássicos, incluindo Pivot, S1, R1, S2, R2 etc.

  2. Use o indicador RSI para determinar a direção da tendência do preço. RSI acima de 80 é zona de sobrecompra e abaixo de 20 é zona de sobrevenda.

  3. Se o preço de fechamento for maior do que o R2 do dia anterior, é uma tendência forte.

  4. Tomar as decisões de negociação de hoje com base na direcção da tendência diária, combinando Pivot Points e indicador RSI.

    • Se a tendência diária for forte (cerca de > R2), procure pontos de compra de retração em Pivot ou compra abaixo de S1.

    • Se a tendência diária for fraca (cerca de < S2), procure pontos de venda de retração acima do Pivot ou venda acima de R1.

  5. Defina pontos de stop loss. Para uma tendência forte, o stop loss é o S1 do dia anterior.

A estratégia julga a tendência de médio e longo prazo com Pivot Points e usa RSI etc para determinar tendência de curto prazo e pontos de entrada.

Análise das vantagens

As principais vantagens desta estratégia são:

  1. Capaz de acompanhar a tendência a médio e longo prazo e a tendência a curto prazo, adaptando-se de forma flexível às alterações do mercado.

  2. Os Pivot Points têm alguma capacidade de julgar tendências e podem determinar efetivamente a tendência a médio e longo prazo.

  3. O RSI etc. pode avaliar os níveis de sobrecompra/supervenda a curto prazo, ajudando a determinar pontos de entrada específicos.

  4. As regras da estratégia são claras e simples, fáceis de entender.

  5. O controlo do risco está em vigor com pontos de stop loss claros.

Análise de riscos

Os principais riscos desta estratégia são:

  1. Os Pivot Points podem falhar na previsão da tendência a médio e longo prazo, o que pode ser melhorado ajustando parâmetros ou combinando com outros indicadores.

  2. Os parâmetros podem ser ajustados ou utilizados em conjunto com outros indicadores.

  3. Os pontos de stop loss podem ser muito arbitrários, incapazes de evitar completamente que a stop loss seja atingida.

  4. A estratégia pode ser maior, necessitar de preparação psicológica e apoio de capital suficiente.

  5. O risco de excesso de negociação existe e as condições de abertura podem ser ajustadas para evitar excesso de negociação.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes domínios:

  1. Tente diferentes combinações de parâmetros, como ajustar os parâmetros do RSI, otimizar cálculos de Pivot Point, etc. para encontrar parâmetros ideais.

  2. Adicionar ou combinar outros indicadores como KDJ, MACD etc para tornar os sinais mais precisos e confiáveis.

  3. Otimizar as estratégias de stop loss, por exemplo, trailing stop loss, exit stop loss, etc., para reduzir o risco de que o stop loss seja atingido.

  4. Otimizar o dimensionamento das posições para limitar o impacto das perdas de uma única posição.

  5. Otimizar as condições de entrada para evitar o excesso de negociação.

  6. Teste a eficácia em diferentes produtos e ajuste os parâmetros.

  7. Adicionar estratégias de lucro automático para bloquear os lucros.

Resumo

Esta estratégia julga a tendência de médio e longo prazo com Pivot Points e usa o RSI etc para ajudar a determinar a tendência de curto prazo e os pontos de entrada, alcançando o rastreamento de tendência dupla dos preços. A lógica geral é clara e razoável, funcionando bem para a negociação de médio prazo.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="swing trade", shorttitle="vinay_swing", overlay=true)
pf = input(false,title="Show Filtered Pivots")
sd = input(true, title="Show Daily Pivots?")

//moving average
len = input(50, minval=1, title="Length")
src = input(close, title="Source")
out = ema(src, len)

//RSI INPUT
length = input( 7 )
overSold = input( 20 )
overBought = input( 80 )
price = close
vrsi = rsi(price, length)


// Classic Pivot
pivot = (high + low + close ) / 3.0
// Filter Cr
bull= pivot > (pivot + pivot[1]) / 2 + .0025
bear= pivot < (pivot + pivot[1]) / 2 - .0025
// Classic Pivots
r1 = pf and bear ? pivot + (pivot - low) : pf and bull ? pivot + (high - low) : pivot + (pivot - low)
s1 = pf and bull ? pivot - (high - pivot) : pf and bear ? pivot - (high - low) : pivot - (high - pivot)
r2 = pf ? na : pivot + (high - low)
s2 = pf ? na : pivot - (high - low)
BC = (high + low) / 2.0
TC = (pivot - BC) + pivot

//Pivot Average Calculation
smaP = sma(pivot, 3)

//Daily Pivots 
dtime_pivot = request.security(syminfo.tickerid, 'D', pivot[1])
dtime_pivotAvg = request.security(syminfo.tickerid, 'D', smaP[1])
dtime_r1 = request.security(syminfo.tickerid, 'D', r1[1]) 
dtime_s1 = request.security(syminfo.tickerid, 'D', s1[1]) 
dtime_r2 = request.security(syminfo.tickerid, 'D', r2[1]) 
dtime_s2 = request.security(syminfo.tickerid, 'D', s2[1])
dtime_BC = request.security(syminfo.tickerid, 'D', BC[1])
dtime_TC = request.security(syminfo.tickerid, 'D', TC[1])

offs_daily = 0
plot(sd and dtime_pivot ? dtime_pivot : na, title="Daily Pivot",style=circles, color=fuchsia,linewidth=1) 
plot(sd and dtime_r1 ? dtime_r1 : na, title="Daily R1",style=circles, color=#DC143C,linewidth=1) 
plot(sd and dtime_s1 ? dtime_s1 : na, title="Daily S1",style=circles, color=lime,linewidth=1) 
plot(sd and dtime_r2 ? dtime_r2 : na, title="Daily R2",style=circles, color=maroon,linewidth=1) 
plot(sd and dtime_s2 ? dtime_s2 : na, title="Daily S2",style=circles, color=#228B22,linewidth=1)
plot(sd and dtime_BC ? dtime_BC : na, title="Daily BC",style=circles, color=black,linewidth=1)
plot(sd and dtime_TC ? dtime_TC : na, title="Daily TC",style=circles, color=black,linewidth=1)

bull1=  (close > dtime_r2)
bull2= (low < dtime_pivot) or (low < dtime_s1) 
bull3= dtime_pivot > dtime_pivot[1]
bullishenglufing=bull2 and bull3
bullishenglufing1=bull1 and (close > out) and (crossover(vrsi, overBought))
longCondition = bull1[1] and ((low < dtime_TC) or (low < dtime_BC) or (low < dtime_s1))

bear1=  (close < dtime_s2)
bear2= (high > dtime_pivot) or (high < dtime_r1) 
bear3= dtime_pivot < dtime_pivot[1]
bearishenglufing=bear2 and bear3
bearishenglufing1=bear1 and (close < out) and (crossunder(vrsi, overSold))
shortCondition = bear1[1] and ((high > dtime_BC) or (high > dtime_TC) or (high > dtime_r1))

plotshape(bullishenglufing, style = shape.triangleup, location = location.belowbar, color = green, size = size.tiny)
plotshape(bearishenglufing, style = shape.triangledown, location = location.abovebar, color = red, size = size.tiny)

if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)


Mais.