Estratégia de teste de retrocesso AC do indicador Williams

Autora:ChaoZhang, Data: 2023-12-18 12:03:38
Tags:

img

Resumo

Esta estratégia é baseada no Awesome Oscillator (AO) no Indicador Williams projetado pelo famoso comerciante Bill Williams. Calculando a diferença entre as SMAs médias de preços de diferentes períodos, ele forma um indicador oscilante para diagnosticar tendências e impulso do mercado e projeta sinais de negociação correspondentes para orientar longo e curto.

Princípio

O indicador central desta estratégia é o Awesome Oscillator (AO), que é calculado como: AO = SMA ((Preço médio, 5 dias) - SMA ((Preço médio, 34 dias) Quando o preço médio é definido como (Preço mais alto + Preço mais baixo) / 2. Esta fórmula extrai informações de impulso de preço de duas SMAs do preço médio em períodos diferentes.

Para filtrar sinais errados, esta estratégia também aplica uma operação SMA de 5 dias em AO. Um modo reverso é fornecido onde a reversão dos sinais longos / curtos realiza diferentes direções de negociação. Quando o AO é maior que o valor anterior, ele é considerado uma oportunidade de compra e marcado como uma barra azul. Quando o AO não é maior que o valor anterior, ele é considerado uma oportunidade de venda e marcado como uma barra vermelha.

Vantagens

  1. A utilização do preço médio em vez do preço de fechamento reduz o impacto das falsas rupturas na SMA e melhora a estabilidade
  2. A combinação de SMA rápida e lenta capta sensivelmente as alterações do mercado
  3. Filtragem dupla SMA elimina ruído de alta frequência e melhora a qualidade do sinal
  4. Ajuste flexível dos parâmetros adapta-se aos diferentes ambientes de mercado
  5. Display de barra intuitivo dos pontos de negociação para facilitar o julgamento das operações

Riscos e soluções

  1. Avaliação da frequência da volatilidade do mercado com cuidado para evitar o excesso de ajustamento através do ajuste dos parâmetros
  2. Relaxar adequadamente a faixa de stop loss ou reduzir a escala da posição
  3. Os dados de backtest não confiáveis, o desempenho real pode diferir da simulação.

Orientações de otimização

  1. Aumentar os filtros como o volume de negociação para melhorar a qualidade do sinal
  2. Incorporar estratégias de stop loss para controlar as perdas individuais de operação
  3. Otimizar a gestão de posições, adicionar ou reduzir posições de acordo com a volatilidade do mercado
  4. Combinar outros indicadores para determinar a direção da tendência para evitar inversões de oscilação

Conclusão

Esta estratégia utiliza o Awesome Oscillator projetado com estrutura de SMA de preço médio rápido e lento para diagnosticar mudanças no momento do mercado, com sinais de negociação intuitivos e claros.


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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 28/12/2016
//    This indicator plots the oscillator as a histogram where blue denotes 
//    periods suited for buying and red . for selling. If the current value 
//    of AO (Awesome Oscillator) is above previous, the period is considered 
//    suited for buying and the period is marked blue. If the AO value is not 
//    above previous, the period is considered suited for selling and the 
//    indicator marks it as red.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy("Bill Williams. Awesome Oscillator (AC)")
nLengthSlow = input(34, minval=1, title="Length Slow")
nLengthFast = input(5, minval=1, title="Length Fast")
reverse = input(false, title="Trade reverse")
xSMA1_hl2 = sma(hl2, nLengthFast)
xSMA2_hl2 = sma(hl2, nLengthSlow)
xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
xSMA_hl2 = sma(xSMA1_SMA2, nLengthFast)
nRes =  xSMA1_SMA2 - xSMA_hl2
cClr = nRes > nRes[1] ? blue : red
pos = iff(nRes > nRes[1], 1,
	   iff(nRes < nRes[1], -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(nRes, style=histogram, linewidth=1, color=cClr)

Mais.