Estratégia de captura de tendências

Autora:ChaoZhang, Data: 2024-04-26 11:48:28
Tags:MASMA

img

Resumo

A estratégia de captura de tendências é uma estratégia que detecta formações de tendências usando seu próprio método exclusivo e abre posições na direção da tendência. Ela calcula um valor percentual chamado limit dividindo a diferença entre os preços mais altos e mais baixos em um determinado intervalo pela soma dos comprimentos das velas nesse intervalo. Quanto mais próximo este valor estiver de 100, mais forte será a tendência. Quando esse valor exceder um limite definido e a média móvel estiver subindo, a estratégia abre uma posição longa; quando esse valor exceder um limite definido e a média móvel estiver caindo, a estratégia abre uma posição curta. Após abrir uma posição, a estratégia fecha uma parte da posição quando o preço atinge um certo nível e move a posição restante para um ponto onde acredita que a tendência acabou.

Princípio da estratégia

  1. Calcule a diferença entre os preços mais altos e mais baixos em um determinado intervalo, bem como a soma dos comprimentos de todas as velas nesse intervalo.
  2. Divida a diferença pela soma dos comprimentos das velas e multiplique por 100 para obter um valor percentual chamado limit.
  3. Quando o limite exceder um valor definido e a média móvel estiver a subir, abrir uma posição longa; quando o limite exceder um valor definido e a média móvel estiver a cair, abrir uma posição curta.
  4. Após a abertura de uma posição, fechar uma parte da posição quando o preço atingir o nível de take profit e mover a posição restante para o nível de stop loss.
  5. Quando a média móvel cruzar para baixo, fechar a posição longa; quando a média móvel cruzar para cima, fechar a posição curta.

Vantagens da estratégia

  1. A estratégia utiliza um método exclusivo para detectar formações de tendência. Calculando o valor limite para determinar a força da tendência, ajuda a abrir posições no início da tendência.
  2. Após a abertura de uma posição, a estratégia controla o risco fechando uma parte da posição e movendo o nível de stop loss da posição restante.
  3. A estratégia utiliza as cruzamentos ascendentes e descendentes da média móvel para determinar o fim da tendência, o que ajuda a fechar as posições em tempo útil.

Riscos estratégicos

  1. A estratégia abre posições no início da tendência. Se a tendência não puder ser mantida, pode causar perdas.
  2. A estratégia utiliza níveis fixos de take profit e stop loss, que podem não ser suficientemente flexíveis em alguns casos.
  3. A estratégia utiliza apenas a média móvel para determinar tendências, que podem perder algumas oportunidades de tendência.

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

  1. Considere a utilização de outros indicadores, como o MACD e o RSI, para ajudar a determinar tendências e melhorar a precisão das posições de abertura.
  2. Ajustar dinamicamente os níveis de tomada de lucro e de stop loss com base na volatilidade do mercado para melhor controlar o risco.
  3. Considerar a abertura de posições apenas após a confirmação da tendência para reduzir os riscos no início da tendência.

Resumo

A estratégia de captura de tendências usa um método exclusivo para detectar formações de tendência e abrir posições na direção da tendência. Ele calcula o valor limite para determinar a força da tendência e usa a travessia da média móvel para determinar o fim da tendência. A estratégia controla o risco fechando uma parte da posição e movendo o nível de stop loss após a abertura de uma posição. No entanto, a estratégia pode enfrentar certos riscos ao abrir posições no início da tendência, usando níveis fixos de lucro e stop loss pode não ser suficientemente flexível, e apenas usando a média móvel para determinar tendências pode perder algumas oportunidades. No futuro, podemos considerar a introdução de outros indicadores, ajustando dinamicamente os níveis de take profit e stop loss e abrindo posições apenas após a tendência ser confirmada para otimizar a estratégia.


/*backtest
start: 2023-04-20 00:00:00
end: 2024-04-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © faytterro

//@version=5
strategy("Trend Catcher Strategy", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
len = input.int(10)
tp = input.float(2.5, step = 0.1)
sl = input.float(2.5, step = 0.1)
malen = input.int(5)
limit = input.int(50)
ma = ta.sma(close,malen)
sum = 0.0
for i = 0 to len-1
    sum := sum + high[i]-low[i]
frs = 100*(ta.highest(high,len)-ta.lowest(low,len))/sum
//hline(50)
//plot(frs, color = color.white)
l = ta.crossover(frs,limit) and ma>ma[1]
s = ta.crossover(frs,limit) and ma<ma[1]
cl = ma<ma[1]
cs = ma>ma[1]
qty_balance=input.int(50, maxval = 100)
if (l)
    strategy.entry("My Long Entry Id", strategy.long)
    strategy.exit("exit long", "My Long Entry Id", qty_percent = qty_balance, limit = close*(100+tp)/100, stop = close*(100-sl)/100)

if (s)
    strategy.entry("My Short Entry Id", strategy.short)
    strategy.exit("exit short", "My Short Entry Id", qty_percent = qty_balance, limit = close*(100-tp)/100, stop = close*(100+sl)/100)

if (cl)
    strategy.close("My Long Entry Id")
if (cs)
    strategy.close("My Short Entry Id")

l:= l and strategy.opentrades<1
s:= s and strategy.opentrades<1
transp = strategy.opentrades>0? 0 : 100
pma=plot(ma, color = ma<ma[1]? color.rgb(255, 82, 82, transp) : color.rgb(76, 175, 79, transp))
price = open/2+close/2
pprice = plot(price, display = display.none)
fill(pma,pprice, color = ma<ma[1]? color.rgb(255, 82, 82, transp+90) : color.rgb(76, 175, 79, transp+90))

spm=plot(ta.valuewhen(s,close,0), color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.white : color.rgb(1,1,1,100), offset=1)
lpm=plot(ta.valuewhen(l,close,0), color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.white : color.rgb(1,1,1,100), offset=1)

ltp=plot(ta.valuewhen(l,close,0)*(100+ta.valuewhen(l,tp,0))/100,  color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.green : color.rgb(1,1,1,100), offset=1)
lsl=plot(ta.valuewhen(l,close,0)*(100-ta.valuewhen(l,sl,0))/100,  color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.red : color.rgb(1,1,1,100), offset=1)

stp=plot(ta.valuewhen(s,close,0)*(100-ta.valuewhen(s,tp,0))/100, color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.green : color.rgb(1,1,1,100), offset=1)
ssl=plot(ta.valuewhen(s,close,0)*(100+ta.valuewhen(s,sl,0))/100, color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.red : color.rgb(1,1,1,100), offset=1)
fill(stp,spm, color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.rgb(76, 175, 79, 90) : color.rgb(1,1,1,100))
fill(ssl,spm, color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.rgb(255, 82, 82, 90) : color.rgb(1,1,1,100))
fill(ltp,lpm, color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.rgb(76, 175, 79, 90) : color.rgb(1,1,1,100))
fill(lsl,lpm, color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.rgb(255, 82, 82, 90) : color.rgb(1,1,1,100))

Relacionados

Mais.