Estratégia de acompanhamento da tendência baseada na média móvel e na faixa real da média

Autora:ChaoZhang, Data: 2024-01-12 11:14:01
Tags:

img

Resumo

Esta estratégia utiliza a média móvel e o intervalo verdadeiro médio para determinar a direção da tendência do mercado para a negociação de rastreamento de tendências.

Princípios

Esta estratégia utiliza a média móvel m de períodos e 2 vezes a média do intervalo real atr de períodos para determinar a tendência do mercado.

Quando a baixa é maior que a média móvel mais a faixa média verdadeira (baixa > ma + atr), é julgada como uma tendência ascendente. Quando o máximo é inferior à média móvel menos a média do intervalo verdadeiro (alto < ma - atr), é julgado como uma tendência descendente.

Em outros casos, o acórdão anterior é mantido.

Quando uma tendência ascendente for determinada, vá longos em uma certa porcentagem quando for permitido ir longos. Quando for determinada uma tendência descendente, vá curto em uma certa percentagem quando for permitido.

A condição final é atingir a data de encerramento da negociação especificada.

Análise das vantagens

As vantagens desta estratégia são as seguintes:

  1. Utilize a média móvel para determinar a direção geral da tendência e evitar ser enganado pelas flutuações de curto prazo do mercado.
  2. Utilize o intervalo médio verdadeiro para definir o stop loss dinâmico, o que favorece o controlo do risco.
  3. Pode captar oportunidades de tendência em tempo útil, seguindo a tendência, com alto potencial de lucro.
  4. Regras simples e fáceis de operar.

Análise de riscos

Os principais riscos que esta estratégia enfrenta são os seguintes:

  1. É propenso a perdas múltiplas num mercado fortemente flutuante.
  2. Não sendo possível determinar eficazmente os pontos de reversão da tendência, existe o risco de perseguir altas e matar baixas.
  3. A configuração inadequada dos parâmetros de intervalo verdadeiro médio pode resultar em pontos de saída demasiado largos ou demasiado rigorosos.

Soluções:

  1. Ajustar adequadamente os parâmetros da média móvel para utilizar parâmetros mais estáveis.
  2. Confirme os sinais com outros indicadores para evitar perseguir altos e matar baixos.
  3. Otimizar e testar os parâmetros médios do intervalo verdadeiro para definir os parâmetros adequados.

Orientações de otimização

A estratégia pode ser otimizada a partir dos seguintes aspectos:

  1. Teste diferentes sistemas de médias móveis para encontrar combinações de parâmetros mais estáveis.
  2. Adicionar outros indicadores auxiliares para avaliar a fiabilidade dos sinais.
  3. Teste os parâmetros médios do intervalo verdadeiro para encontrar os parâmetros ideais.
  4. Otimizar a utilização do capital através da alavancagem para aumentar o rendimento do capital.
  5. Combinar aprendizado de máquina e outros métodos para obter otimização de parâmetros dinâmicos.

Resumo

A ideia geral desta estratégia é clara e fácil de entender. Ela usa médias móveis para determinar a direção da tendência e usa a faixa média verdadeira para definir paradas. Ela pode efetivamente rastrear tendências. Mas há certos riscos, e é necessária uma otimização adicional das configurações de parâmetros e adição de outros indicadores de julgamento. Em geral, esta estratégia fornece uma abordagem viável para a negociação de rastreamento de tendências.


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

//2019
//Noro

//@version=4
strategy(title = "Noro's MA+ATR Strategy", shorttitle = "MA+ATR str", 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, %")
len = input(30, minval = 2, title = "MA Length")
src = input(ohlc4, title = "MA Source")
limitmode = input(false)
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")

//MA + BG
atr = sma(tr, len) * 2
ma = sma(src, len)
plot(ma, color = color.blue, linewidth = 4)
trend = 0
trend := low > ma + atr ? 1 : high < ma - atr ? -1 : trend[1]
col = trend == 1 ? color.lime : color.red
bgcolor(col, transp = 70)

//Trading
lot = 0.0
lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]
if trend == 1 and limitmode == false
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
if trend == -1 and limitmode == false
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
if trend == 1 and limitmode
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
if trend == -1 and limitmode
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
// if time > timestamp(toyear, tomonth, today, 23, 59)
//     strategy.close_all()

Mais.