Tendência na sequência da estratégia SMA

Autora:ChaoZhang, Data: 2023-11-02 16:58:23
Tags:

img

Resumo

A estratégia de seguimento de tendência usa uma combinação de média móvel simples (SMA) e SMA rápida para determinar a direção da tendência do mercado e gerar sinais de negociação. Ele vai longo quando o preço cruza acima da SMA e FSMA e sai longo quando o preço cruza abaixo. Ele vai curto quando o preço cruza abaixo da SMA e FSMA e sai curto quando o preço cruza acima. A estratégia fornece sinais de negociação dinâmicos sem curva para capturar mudanças na tendência.

Estratégia lógica

A estratégia usa a função sma para calcular a SMA de 50 períodos e a fsma de SMA rápida. fsma é calculada com base na SMA mais 6 vezes o desvio padrão do preço em n períodos.

Duas variáveis booleanas longas e curtas são usadas para registrar posições longas e curtas. long é definido como 1 quando o preço cruza acima de sma e fsma para entrada longa, e -1 quando o preço cruza abaixo para saída. short segue a lógica semelhante para posição curta.

A variável de tendência é utilizada para a determinação da tendência. É definida em 1 quando o preço está acima fsma e sma para tendência de alta, e -1 quando o preço está abaixo fsma e sma para tendência de queda.

Os sinais de negociação de longo e curto são gerados com base na direção da tendência em tempo real. Quando a tendência muda de baixo para cima, se o preço estiver acima do fsma, vá longo. Quando a tendência muda de cima para baixo, se o preço estiver abaixo do sma, vá curto.

A estratégia combina métodos de seguimento de tendências e de ruptura para capturar oportunidades quando a tendência muda.

Vantagens

  1. Usando a confirmação dupla de dois MAs filtra fuga falsa.

  2. A combinação de seguir a tendência e de sair da tendência é um ponto de virada.

  3. Não há ajuste de curva ou otimização para sinais de negociação dinâmicos.

  4. Lógica simples e clara, fácil de entender e modificar.

  5. Parâmetros personalizáveis para comprimento, multiplicador para diferentes mercados.

Riscos

  1. Os cruzes de MA duplas podem causar trocas e reversões excessivas.

  2. O atraso MA pode perder a inversão inicial da tendência.

  3. Não existe um mecanismo de stop loss para controlar a perda de uma única transação.

  4. O ajuste inadequado dos parâmetros leva ao excesso de troca ou ao atraso.

  5. Para os riscos 1 e 2, prorrogar os períodos de MA, adicionar stop loss de retirada.

  6. Para o risco 3, adicionar percentagem ou ordem de stop loss.

  7. Para o risco 4, ajustar os parâmetros de forma dinâmica para diferentes mercados.

Reforço

  1. Adicionar filtro de tendência usando MACD, DMI para confirmar a tendência.

  2. O valor da posição em risco deve ser calculado em função do valor da posição em risco.

  3. Adicionar a perda de parada global, como parada de atraso, parada percentual.

  4. Adicionar módulo de dimensionamento de posição para ajuste dinâmico.

  5. Otimizar os parâmetros para se adaptarem a diferentes prazos.

  6. Introduzir aprendizado de máquina para ajuste automático de parâmetros.

  7. Construir estratégia composta com filtros adicionais.

  8. Utilize aprendizagem profunda para detectar padrões de tendência complexos.

Conclusão

A estratégia de seguimento de tendência do SMA é um sistema de negociação de tendência simples. Ele usa MAs rápidos e lentos para ajudar a direção da tendência e capturar a reversão da tendência. No entanto, existem riscos como Whipsaw e lag. Melhorias futuras incluem a adição de filtros, paradas, parâmetros dinâmicos, etc. No geral, ele serve como um bom começo de tendência após a estratégia, mas são necessárias otimizações para aplicações do mundo real para maximizar seu desempenho.


/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("SMA STRATEGY", shorttitle="SMA TREND", overlay=true, calc_on_order_fills=true)
length = input(title="Length", type=input.integer, defval=50)
src_=input(close, title="Source", type=input.source)
mult=input(6.0, title="Mult")
barc=input(true, title="Use barcolor?")
plots=input(false, title="Show plots?")
tri=input(false, title="Use triangles?")


r(src, n)=>
    s = 0.0
    for i = 0 to n-1
        s := s + ((n-(i*2+1))/2)*src[i]
    x=s/(n*(n+1))
    x

l=sma(low, length)
h=sma(high, length)
lr= l+mult*r(low, length)
hr= h+mult*r(high, length)

trend=0
trend:=src_ > lr and src_ > hr ? 1 : src_ < lr and src_ < hr ? -1 : trend[1]

strategy.close("Long", when=trend==-1)
strategy.close("Short", when=trend==1)
strategy.entry("Long", strategy.long, when=trend==1 and src_>h)
strategy.entry("Short", strategy.short, when=trend==-1 and src_<l)

long=0
short=0
long:= trend==1 and src_>h ? 1 : trend==-1 ? -1 : long[1]
short:= trend==-1 and src_<l ? 1 : trend==1 ? -1 : short[1]

barcolor(barc? (long>0? color.green : short>0? color.red : trend>0? color.orange: trend<0 ? color.white : color.blue) : na)
plotshape(tri? close : na, style= shape.diamond, color= long>0? color.green : short>0? color.red : trend>0? color.orange: trend<0 ? color.white : color.blue, location=location.top)

//shortenter=
a1=plot(plots? l : na, color=color.blue, linewidth=1)
//longenter=
a2=plot(plots? h : na, color=color.blue, linewidth=1)
fill(a1, a2, color=color.blue)
//stopshort=
b1=plot(plots? hr : na, color=color.navy, linewidth=1)
//stoplong=
b2=plot(plots? lr : na, color=color.navy, linewidth=1)
fill(b1, b2, color=color.navy)

Mais.