- Caro amigo Arrobas:
Obrigado pelo post.
Uma vez que colocas umas quantas dúvidas diferentes sobre como construir um oscilador “detrended” posso com todo o gosto dar umas pistas sobre essa matéria.
Quanto às regressões lineares existem milhares de citações e exemplos das suas aplicações na net, basicamente uma função deste tipo em econometria não é mais que a expetativa de encontrar uma solução do valor de y, conhecendo os valores de x que melhor se encaixam, com o menor erro aproximado possível através da abordagem dos mínimos quadrados através dum segmento de reta que envolva uma aparência de proximidade do conjunto dos dados de x.
Eu simpatizei bastante com esta abordagem das regressões lineares nos gráficos dos mercados financeiros porque filtram e reagem muito mais depressa que as médias móveis, que infelizmente sofrem dum atraso ou “lagging” que pode ser devastador nas sessões negativas de espera até que essa média mude de direção ou ultrapasse outra média até disparar o novo sinal.
De qualquer forma reconheço que a esmagadora maioria dos traders individuais usa e abusa das médias móveis, por vezes acompanhadas por outros indicadores mais ou menos conhecidos: MACD, RSI, Estocásticos e alguns outros.
Para me cingir ao que é praticado maioritariamente na comunidade dos sistemas de trading poderei adaptar aqui um exemplo prático duma operação de “detrend” a um sistema um pouco básico relacionado com as conhecidas médias móveis.
O fenómeno de “detrending” surgiu-me pela primeira vez ao estudar o método de negociação de um trader lendário chamado Al Gietzen, que chegou a ser campeão mundial de trading a que juntou mais tarde um 2º lugar na mesma competição, comprovando que dispõe de um método de negociação eficaz.
Ficou também muito conhecido por ter sido o autor dum método publicado na célebre revista “Stocks and Commodities” baseado num indicador que deu a conhecer chamado “Market Reactivity”.
Comprei há mais de 10 anos atrás um livro deste senhor chamado “Advanced Cycle Trading” da Mcgraw-hill que relata de forma muito curiosa como executava a sua forma de “destendência”, ficando o mercado ou o indicador reduzido a ciclos ascendentes e descendentes mais pequenos depois de tornar artificialmente os mercados “flats” ao sacar-lhes o respetivo efeito tendencial.
Ele usou este método com muito sucesso nessas competições, que lhe renderam sempre posições cimeiras e mais tarde tornou-se bastante rico, claramente milionário para os padrões portugueses, sendo um apaixonado pela aviação possuindo 3 aviões privados não comerciais.
-----
Vamos então ao exemplo prático do fenómeno de “detrending”.
Em primeiro lugar temos de imaginar um indicador de tendência, conforme sugeri mais acima podemos usar uma adaptação muito conhecida do método das médias móveis.
As regras são muito simples:
Em primeiro lugar construímos um indicador preliminar:
1) Um mercado é classificado em tendência ascendente, com compra tendencial, quando o seu fecho se encontra acima da sua média móvel de 100 dias e esta média móvel se encontra acima da média móvel de 200 dias.
2) Um mercado é classificado em tendência descendente, com venda tendencial, quando o seu fecho se encontra abaixo da sua média móvel de 100 dias e esta média móvel se encontra abaixo da média móvel de 200 dias.
3) Nas restantes condições mais ou menos indefinidas consideraremos o mercado na situação tendencial que ocorreu mais proximamente no passado.
Como regra geral a média móvel aplicada nestes casos é a média móvel simples, em que todas as sessões têm a mesma importância, ou seja, o valor de hoje tem na média de 200 dias o mesmo peso da sessão ocorrida há por exemplo 187 dias atrás.
Para mim e com a experiência que tenho em lidar com indicadores este método faz pouco sentido porque de forma quase instintiva sabemos que a sessão de hoje seguramente absorveu bastante mais informação do que as sessões cada vez mais longínquas do passado, como tal se tiver de usar médias gosto muito mais de usar médias ponderadas em que a sessão de hoje possui o maior peso na média, seguida da sessão de ontem e depois da de anteontem e assim sucessivamente. São chamadas as médias pesadas, em que no caso por exemplo duma média de fechos de 4 dias o seu valor seria dado por:
(Fecho de hoje x 4 + Fecho de ontem x 3 + Fecho de anteontem x 2 + Fecho de há 3 sessões atrás x 1) / (4+3+2+1)
Pelo que nas médias móveis uso as médias com estes pesos ponderados, vulgarmente denominados por “W” de “weight” em vez das médias “S” de “simple” na sua forma de ponderação. Em geral por cada 100 dias ganhamos 3 ou 4 sessões na antecipação do disparo dum sinal de entrada ou saída que podem fazer uma grande diferença no saldo final duma conta de trading no final do ano.
Em linguagem de programação Metastock podemos então definir o este sub-sistema através dum indicador tendencial que retorna o valor “+100” em caso de tendência ascendente e “-100” em tendências descendentes:
Nome do Indicador: Arrobas Trend
Programa:
mm100:=
Mov(Close,100,W) ;
mm200:=
Mov(Close,200,W) ;
arrobastrend:=
If(
Close > mm100
AND
mm100 > mm200 ,
100 ,
If(
Close < mm100
AND
mm100 < mm200 ,
-100 ,
PREV )) ;
arrobastrend ;
Chamemos por exemplo o gráfico simples do PSI-20 com o template “Black” modificado para velas do tipo "candlestick" e acrescentemos à sua área superior este indicador “Arrobas Trend”. Teríamos o gráfico abaixo:
- Sistema "Arrobas" - Gráfico Inicial do PSI
Uma vez que a tendência resulta duma conjugação das médias pesadas de 100 e 200 períodos, podemos estabelecer um indicador interno, a acrescentar ao programa acima, que represente a média de ambas:
mmtrend:=
(mm100+mm200) / 2 ;
E agora podemos introducir também no programa um conjunto de médias móveis mais rápidas que podem servir de base ao nosso oscilador. Para isso podemos recorrer também a médias pesadas de períodos muito usados pelos traders, por exemplo de 14 e 20 períodos:
mm14:=
Mov(Close,14,W) ;
mm20:=
Mov(Close,20,W) ;
mmosc:=
(mm14+mm20) / 2 ;
De seguida introduzimos na linguagem do programa a operação de “detrend” eliminando na média oscilatória a parte considerada tendencial:
mmoscdetrend:=
mmosc – mmtrend ;
Obrigando agora o programa a imprimir no ecran ou a visualizar o novo indicador “destendenciado”:
mmoscdetrend ;
O gráfico fica agora com este aspeto:
- Sistema "Arrobas" - Gráfico Intermédio do PSI
Volto a frisar, particularmente não simpatizo com estes indicadores de médias móveis porque na realidade atrasam-se cerca de 2 a 3 sessões nos sinais do tipo estocásticos em relação a outros indicadores mais rápidos a virar, como sejam o caso que indiquei das regressões lineares. No entanto este exemplo serve para descrever a metodologia do fenómeno de “detrending”.
Após o indicador “Arrobas Trend” ser dado por terminado, conforme o gráfico acima, podemos agora programar um novo indicador com os sinais do oscilador “mmoscdetrend” de cor castanha no gráfico anterior: se este estiver flat ou virado para cima devemos estar comprados com o indicador a assumir o valor de “+100”, se estiver descendente devemos vender, nesse caso o programa atribui ao indicador do sinal oscilatório um valor de “-100”.
Nome do Indicador: Arrobas Oscilador
Programa:
mmoscdetrend:=
FmlVar("Arrobas Trend","MMOSCDETREND") ;
signarrobasosc:=
If(
mmoscdetrend >= Ref(mmoscdetrend,-1) ,
100 ,
-100 ) ;
signarrobasosc ;
E temos um novo indicador terminado, agora é só puxá-lo para a zona superior do gráfico e...voilá:
- Sistema "Arrobas" - Gráfico Final do PSI
Como disse anteriormente este indicador com médias móveis não me convence devido ao efeito do “lagging”, ou atraso na resposta, pelo que sugiro que testes com outros indicadores alternativos mais rápidos nas reações às viragens de mercado como sugeri mais atrás.
Espero ter ajudado.
BN