You are on page 1of 6

Ferramentas da Análise Técnica

Abaixo você encontra os códigos das ferramentas explicadas no e-book para usar
nos backtests do Amibroker.

Sinta-se livre para mudar as variáveis (em negrito) como você bem entender, mas
fique longe do resto do código para não bagunçar o seu sistema.

Canais de Donchian
Como não existe essa ferramenta no Amibroker, você até consegue testar mas não
consegue ver a representação nos gráficos.

Para mudar isso, basta “escrever” a ferramenta criando um AFL com o código:

DonchianX = Ref(HHV(H,linhasuperior),-1);
DonchianY = Ref(LLV(L,linhainferior),-1);

Plot(DonchianX,"DU",colorBlue,styleLine);
Plot(DonchianY,"DL",colorBlue,styleLine);

Substitua “linhasuperior” e “linhainferior” pelos valores que você quer que sejam
mostrados no gráfico, salve o arquivo (i.e. “donchian.afl”) na pasta formula/custom
e reinicie o programa.

Após o reinício, entre na aba lateral Charts / Custom, clique com o botão direito do
mouse na ferramenta recém-criada e então, em Overlay.

Agora nós podemos ver os Canais de Donchian normalmente!

Para testá-los, o código que deve ser inserido no bom e velho “sisteminha.afl” é o
mesmo ensinado no e-book principal, ou seja:

Buy = H > Ref(HHV(H,linhasuperior),-1);


BuyPrice = Ref(HHV(H,linhasuperior),-1);
Sell = L < Ref(LLV(L,linhainferior),-1);
SellPrice = Ref(LLV(L,linhainferior),-1);

linhasuperior – Regula a distância da linha superior até os preços. Com um


valor mais alto, a linha fica bem acima dos preços. Com um valor mais baixo,
ela fica mais para baixo.

linhainferior – Quase a mesma coisa, mas na direção oposta. Com um valor


mais alto, a linha fica mais para baixo dos preços. Com um valor mais baixo,
ela fica mais próxima.

Copyright © 2013 Hugo R. Teixeira | Página 1


Médias Móveis Simples
Buy = Cross(MA(C,linharapida),MA(C,linhalenta));
Sell = Cross(MA(C,linhalenta),MA(C,linharapida));

linharapida – Define o período (i.e. candles) no qual a média móvel simples


será utilizada. Se o período for menor, a linha vai seguir os preços mais de
perto e se for maior, vai ficar mais para trás.

linhalenta – Mesma coisa. Também define o período no qual a média será


utilizada. Este valor precisa ser maior do que o da linharapida para que os
cruzamentos funcionem corretamente.

Médias Móveis Exponenciais


Buy = Cross(EMA(C,linharapida),EMA(C,linhalenta));
Sell = Cross(EMA(C,linhalenta),EMA(C,linharapida));

linharapida – Igual a linharapida das simples, só que essa é exponencial.

linhalenta – Idem.

Médias Móveis Simples Com Filtro


Buy = Cross(MA(C,rapida),MA(C,lenta)) AND MA(C,filtro) < MA(C,rapida);
Sell = Cross(MA(C,lenta),MA(C,rapida));

rapida – Mesmo conceito da linharapida. Tirei o linha para diminuir o código.

lenta – Mesma coisa.

filtro – Define o período no qual o filtro será calculado. Esse valor precisa
ser superior ao valor da média rápida para funcionar.

Médias Móveis Exponenciais Com Filtro


Buy = Cross(EMA(C,rapida),EMA(C,lenta)) AND EMA(C,filtro) < EMA(C,rapida);
Sell = Cross(EMA(C,lenta),EMA(C,rapida));

rapida – Agora a média é exponencial mas de resto, fica tudo igual.

lenta – Yep, tudo igual também.

filtro – Pra variar, define o período no qual o filtro será calculado. Mais uma
vez o valor deve ser superior ao da média rápida para funcionar.

Copyright © 2013 Hugo R. Teixeira | Página 2


Indicador MACD
Buy = Cross(MACD(rapida, lenta), Signal(rapida, lenta, cruzamento));
Sell = Cross(Signal(rapida, lenta, cruzamento),MACD(rapida, lenta));

rapida – Valor da média mais curta utilizada no cálculo do MACD.

lenta – Valor da média mais lenta utilizada no cálculo do MACD.

cruzamento – Valor da média utilizada no cálculo do sinal de venda ou de


compra do MACD.

*Saiba que a primeira linha do MACD é uma substração da lenta pela rápida. Já a
segunda linha é formada por esse valor do cruzamento.

Copyright © 2013 Hugo R. Teixeira | Página 3


Modelos da Gestão do Dinheiro
Aqui estão os códigos dos modelos da gestão apresentados no e-book.

A exceção é o terceiro modelo, o Porcentagem Relativa ao Stop, Mas Naquelas...


pois ele possui um elemento subjetivo e por isso, não podemos quantificá-lo para
os testes.

De qualquer forma, os códigos dos 3 modelos restantes são:

Bloquinho Por Operação


PositionSize = -100/bloquinhos;

bloquinhos – Número de bloquinhos (posições totais / ativos simultâneos)


que você pretende operar com esse sistema.

Porcentagem Relativa ao Stop (Donchian)


PositionSize = -risco / (BuyPrice - SellPrice) * BuyPrice;

risco – Quanto você deseja arriscar a cada operação. Pode ser 1 (para 1%),
2.5 (para 2,5%) e por aí vai.

Porcentagem Relativa a ATR


PositionSize = -risco * BuyPrice/(multiplicador*ATR(periodos));

risco – Mesma coisa, quanto você deseja arriscar por operação. Na maioria
dos casos, acima de 5% é suicídio e mesmo esse número só deve ser usado
com extremo cuidado.

multiplicador – Valor do multiplicador da ATR. Normalmente fica entre 2 a 5.

periodos – Quantos períodos (candles) o sistema vai levar em conta para o


cálculo da ATR. O padrão é 14 períodos mas de 10 a 20 também é comum.

Copyright © 2013 Hugo R. Teixeira | Página 4


Exemplos de Sistemas
Aqui estão alguns exemplos para você ter uma ideia de como unir as ferramentas
com os modelos ao fazer os backtests.

Os códigos desses sistemas (que você deve sempre testar antes de usar) são:

Médias Simples + Bloquinhos


Buy = Cross(MA(C,40),MA(C,100));
Sell = Cross(MA(C,100),MA(C,40));

PositionSize = -100/8;

Médias Exponenciais + Bloquinhos


Buy = Cross(EMA(C,40),EMA(C,100));
Sell = Cross(EMA(C,100),EMA(C,40));

PositionSize = -100/12;

Canais de Donchian + Porcentagem Relativa ao Stop


Buy = H > Ref(HHV(H,70),-1);
BuyPrice = Ref(HHV(H,70),-1);
Sell = L < Ref(LLV(L,30),-1);
SellPrice = Ref(LLV(L,30),-1);

PositionSize = -2.5 / (BuyPrice - SellPrice) * BuyPrice;

MACD + Bloquinhos
Buy = Cross(MACD(12, 26), Signal(12, 26, 9));
Sell = Cross(Signal(12, 26, 9),MACD(12, 26));

PositionSize = -100/6;

Médias Exponenciais Com Filtro + Porcentagem Relativa a ATR


Buy = Cross(EMA(C,10),EMA(C,50)) AND EMA(C,200) < EMA(C,10);
Sell = Cross(EMA(C,50),EMA(C,10));

PositionSize = -2.5 * BuyPrice/(2*ATR(14));

Copyright © 2013 Hugo R. Teixeira | Página 5


Outras Ferramentas e Modelos
Existem muitas outras variações dessas ferramentas e modelos. Para conhecê-las
ou aprender a modificá-las, basta fazer o seguinte:

Baixe gratuitamente o livro de introdução ao Amibroker do Howard B. Bandy


neste link aqui e o estude (em inglês);

Pesquise o que você quer fazer no Google (i.e. “amibroker moving averages
formula with MACD filter”);

Procure a resposta na base de dados do site do Amibroker nesse outro link


aqui (também em inglês).

Nela você encontra muitas informações úteis, inclusive sobre stops e saídas
ou entradas progressivas.

Copyright © 2013 Hugo R. Teixeira | Página 6