Estratégia de reversão de tendência


Data de criação: 2024-01-03 16:34:28 última modificação: 2024-01-03 16:34:28
cópia: 0 Cliques: 654
1
focar em
1621
Seguidores

Estratégia de reversão de tendência

Visão geral

A estratégia de reversão de rastreamento de tendências é uma estratégia de negociação de tendências baseada em médias móveis e extremos de preço. A estratégia usa duas médias móveis para rastrear a tendência de preços e abrir posições de reversão quando a tendência se reverte.

Princípio da estratégia

A estratégia usa uma média móvel hma e lma com um máximo e um mínimo de 3 para acompanhar a tendência dos preços. Interpretar como positivo quando o preço atravessa hma; Interpretar como negativo quando o preço atravessa lma.

A estratégia também calcula os algarismos uplevel e dnlevel para o canal de preços com base nos preços mais altos e mais baixos da linha K da raiz barras mais recente. O uplevel adiciona um coeficiente de correção corr para cima com base no preço mais alto da linha K da raiz barras mais recente; o dnlevel subtrai um coeficiente de correção corr para baixo com base no preço mais baixo da linha K da raiz barras mais recente.

Ao abrir um pacote de pedidos, o preço de parada é o canal de cima; ao abrir um pacote vazio, o preço de parada é o canal de baixo. Isso pode controlar efetivamente o risco de perda causado pela reversão de preços.

Quando um sinal de reversão aparece, a estratégia imediatamente reverte a posição e segue a nova tendência de preços. Isso é o princípio de rastreamento de reversão.

Vantagens estratégicas

  • A estratégia aproveita as vantagens de uma média móvel de acompanhamento de tendências para capturar rapidamente as tendências de preços.
  • A aplicação de corredores de preços e a abertura de posições reversíveis para controlar o risco e efetivamente bloquear os lucros;
  • A lógica da estratégia é simples, clara, fácil de entender e de implementar.
  • Parâmetros personalizáveis, como a duração da tendência, o coeficiente de retorno, etc., adaptados a diferentes variedades;
  • A partir de agora, os investidores poderão investir em ações de alto risco, como o Bitcoin e o Ethereum, para capturar oportunidades de tendências.

Risco estratégico

  • A tendência é para que os preços sejam mais baixos e os preços mais baixos.
  • A reversão da tendência não necessariamente desencadeia um stop loss, e os maiores prejuízos não são controlados.
  • A configuração incorreta dos parâmetros pode resultar em hipersensibilidade ou inatividade;
  • A melhor forma de obter resultados é escolhendo a variedade e o período adequados.

Métodos de otimização:

  1. Filtragem de sinais de invalidez em combinação com outros indicadores;
  2. Aumentar o stop loss móvel para bloquear o lucro e reduzir a retirada máxima;
  3. Teste e otimização de parâmetros para diferentes variedades e ciclos.

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

A estratégia ainda tem espaço para ser melhorada:

  1. Pode-se introduzir outras combinações de indicadores filtrate para eliminar alguns sinais inválidos. Por exemplo, MACD, KD, etc.

  2. Pode ser adicionada uma lógica de stop-loss adaptativa, como stop-loss móvel, stop-loss de saldo, etc., para controlar ainda mais o risco.

  3. Pode-se testar o impacto de diferentes parâmetros sobre a eficácia da estratégia, otimizar a combinação de parâmetros, como a duração do ciclo MA, o tamanho do coeficiente de retorno, etc.

  4. A estratégia atualmente é para negociação em intervalos horários e pode ser adaptada para negociação em todo o dia. Isso pode exigir outras regras de filtragem.

Resumir

A estratégia, em geral, é uma estratégia de negociação de reversão de tendência que utiliza um canal de preço combinado com uma média móvel. Através do acompanhamento de tendências e da abertura de posições de reversão em tempo hábil, é possível acompanhar efetivamente a movimentação dos preços.

Código-fonte da estratégia
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=3
strategy(title = "Noro's 3Bars Strategy by Larry Williams", shorttitle = "3Bars", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
corr = input(0.0, title = "Correction, %")
bars = input(1, minval = 1)
revers = input(false, defval = false, title = "revers")
showll = input(true, defval = true, title = "Show Levels")
showos = input(true, defval = true, title = "Show Levels one side")
showcl = input(false, defval = false, title = "Show Levels continuous line")
showbg = input(false, defval = false, title = "Show Background")
showar = input(false, defval = false, title = "Show Arrows")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

len = input(3)

hma = sma(high, len)
lma = sma(low, len)
plot(hma)
plot(lma)

//Levels
hbar = 0
hbar := high > high[1] ? 1 : high < high[1] ? -1 : 0
lbar = 0
lbar := low > low[1] ? 1 : low < low[1] ? -1 : 0
uplevel = 0.0
dnlevel = 0.0
hh = highest(high, bars + 1)
ll = lowest(low, bars + 1)
uplevel := hbar == -1 and sma(hbar, bars)[1] == 1 ? hh + ((hh / 100) * corr) : uplevel[1]
dnlevel := lbar == 1 and sma(lbar, bars)[1] == -1 ? ll - ((ll / 100) * corr) : dnlevel[1]

//Background
size = strategy.position_size
trend = 0
trend := size > 0 ? 1 : size < 0 ? -1 : high >= uplevel ? 1 : low <= dnlevel ? -1 : trend[1]
col = showbg == false ? na : trend == 1 ? lime : trend == -1 ? red : na
bgcolor(col)

//Lines
upcol = na
upcol := showll == false ? na : uplevel != uplevel[1] and showcl == false ? na : showos and trend[1] == 1 ? na : lime
plot(uplevel, color = upcol, linewidth = 2)
dncol = na
dncol := showll == false ? na : dnlevel != dnlevel[1] and showcl == false ? na : showos and trend[1] == -1 ? na : red
plot(dnlevel, color = dncol, linewidth = 2)

//Arrows
longsignal = false
shortsignal = false
longsignal := size > size[1]
shortsignal := size < size[1]
plotarrow(longsignal and showar and needlong ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(shortsignal and showar and needshort ? -1 : na, colorup = blue, colordown = blue, transp = 0)

//Trading
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if uplevel > 0 and dnlevel > 0 and revers == false
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = uplevel)
    strategy.entry("Long stop", strategy.short, 0, stop = lma)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnlevel)
    strategy.entry("Short stop", strategy.long, 0, stop = hma)
    
// if time > timestamp(toyear, tomonth, today, 23, 59)
//     strategy.close_all()