Sistema de negociação de média móvel adaptativa de Donchian

Autora:ChaoZhang, Data: 2024-02-21 15:08:27
Tags:

img

Resumo

O sistema de negociação de média móvel adaptativa de Donchian é uma estratégia quantitativa de negociação que rastreia as tendências de preços.

Princípio da estratégia

A estratégia primeiro calcula a faixa de volatilidade verdadeira. A faixa de volatilidade verdadeira refere-se à faixa de movimento do preço do preço de fechamento do candelabro anterior até os preços mais altos e mais baixos do candelabro atual. Em seguida, calcula a média móvel simples da faixa de volatilidade verdadeira como a largura de banda do canal de Donchian. Combinada com médias móveis de dois períodos de tempo, ele julga a tendência do preço. As regras específicas de julgamento são as seguintes:

Quando o preço atravessa a média móvel de longo prazo mais a largura de banda e a média móvel de curto prazo mais a largura de banda, vá longo; quando o preço cai abaixo da média móvel de longo prazo menos a largura de banda e a média móvel de curto prazo menos a largura de banda, vá curto.

Assim, ajustando dinamicamente a largura de banda do canal Donchain com base na volatilidade real e filtrando com médias móveis duplas, a estratégia pode efetivamente acompanhar as tendências de preços a médio e longo prazo, reduzir os falsos sinais e obter oportunidades de negociação estáveis a longo prazo.

Análise dos pontos fortes

Esta estratégia tem as seguintes vantagens:

  1. A utilização da verdadeira volatilidade para ajustar dinamicamente a largura de banda do canal evita parâmetros estáticos e adapta-se melhor às alterações do mercado.

  2. A combinação de médias móveis duplas pode filtrar eficazmente o ruído e reduzir os falsos sinais.

  3. O acompanhamento das tendências a médio e longo prazo pode reduzir a repetição das operações e reduzir a frequência das operações para obter oportunidades de lucro a longo prazo.

  4. A lógica da estratégia é simples e clara, fácil de implementar, tolerante a falhas e adequada para negociação algorítmica automatizada.

Risco e otimização

A estratégia apresenta também alguns riscos:

  1. Os indicadores de volatilidade podem ajudar a avaliar situações de curto prazo e a otimizar as entradas.

  2. Os parâmetros precisam de otimização para diferentes setores e ações individuais.

  3. Os pontos de stop loss precisam ser adequadamente afrouxados contra mudanças significativas de tendência de emergências.

Resumo

Em resumo, o sistema de negociação de média móvel adaptativa de Donchian é uma estratégia quantitativa geral estável, simples e fácil de implementar. Ao utilizar canais dinâmicos e filtragem dupla de média móvel, ele pode rastrear efetivamente as tendências de mercado de médio a longo prazo, reduzir a frequência de negociação e obter lucros sustentados a longo prazo. Enquanto isso, a otimização de configurações de parâmetros, prevenção de riscos e stop loss adequados também devem ser observados para se adaptar a emergências.


/*backtest
start: 2023-02-14 00:00:00
end: 2024-02-20 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/
// © dongyun

//@version=4
strategy("唐齐安移动平均交易系统", overlay=true)

longperiod = input(20,'长线')
shortperiod = input(5,'短线')
bandfactor = input(1.0,'')

TrueHigh = 0.0
TrueLow = 0.0
TrueRange = 0.0

TrueHigh := close[1] > high ? close[1] : high
TrueLow := close[1] < low ? close[1] : low
TrueRange := TrueHigh - TrueLow
AvgTrueRange = sma(TrueRange,longperiod)

MAlong = sma(close,longperiod)
MAshort = sma(close,shortperiod)
band =  AvgTrueRange * bandfactor

if close > MAlong[1] + band[1] and close >  MAshort[1] + band[1]
	strategy.entry("Long", strategy.long, when=strategy.position_size < 1)
else
	if close < MAlong[1] - band[1] and close < MAshort[1] - band[1]
		strategy.entry("Short", strategy.short, when=strategy.position_size > -1)

if close < MAlong[1] - band[1] or close < MAshort[1] - band[1]
	strategy.close("Long", when=strategy.position_size > 0)
else
	if close > MAlong[1] + band[1] or close > MAshort[1] + band[1]
		strategy.close("Short", when=strategy.position_size < 0)

Mais.