Analisando ações da Bovespa no Linux com QtStalker

Creio que muitos dos leitores aqui tenham interesse em Mercado de Ações. Com certeza, muitos compram e vendem ações, e uma pequena porcentagem destes deve fazer análise técnica antes de opera-las

Como este é um assunto que me interessa bastante, estava à procura de um software que me ajudasse na construção dos gráficos. E encontrei o QtStalker.

Instalação

A instalação do software é feita, nas distribuições debian’s like, da seguinte forma:

sudo apt-get install qtstalker

Ou se preferir, pode puxar a última versão aqui.

Primeira impressões do Software

O programa pare ser em si bastante completo.

ScreenShot QtStalker

Não chega a ser um home broker profissional, mas para o pequeno e médio investidor, creio que está ótimo.

Potêncial do Programa: No que ele me ajuda?

O QtStalker possui uma série de opções afim de ajudar o investidor no controle de suas ações. Além do software fazer a sincronização online dos dados das ações (valor de abertura, fechamento, volume, máximo, mínimo, entre outros), ele mostra sempre o gráfico histórico de preços das ações. As opções mais interessantes de gráfico são:

  1. Gráfico de Linhas
  2. Gráfico de Barras
  3. Candle Stick

CandleStick

(gráfico CandleStick e outras opções)

A sincronização dos valores das ações pode ser feito de várias formas, mas no caso da Bovespa (Bolsa de São Paulo) precisamos usar a API do Yahoo (A única forma que encontrei foi esta). O que acarreta em um atraso de 15 minutos na atualização. Mas para quem não faz DayTrade, creio que não seja muito.

Outra ferramenta bastante interessante do QtStalker é o BackTester:

Com esta ferramenta é possível criar regras de negócio para compra e venda de ações baseada nos sinais dos indicadores (Veremos o que são indicadores em breve). Após criar estas regras, você pode fazer simulações do tipo “E se X acontecer?” Ai o sistema vai te retornar informações sobre este cenário e como suas regras sairíam.

Bovespa: E como analizar as ações na bovespa com o QtStalker?

Eu me bati um pouco para descobrir como fazer isto, até que através de um link no google descobri como fazer: Basta por .SA no fim do nome da ação. Então vamos lá!

Primeiramente vá no meu Tools/Quotes

Selecione como Quote Plugins o Yahoo e clique no ícone de configurações ao lado.

Atualizando para Bovespa

Clique em New Symbol, e adicione as ações que você deseja observar. Lembre-se de que elas devem estar separadas por espaço, e ao fim delas deve conter o símbolo “.SA”. Por exemplo, se você deseja observar os valores da VALE e da Petrobrás, adicione a seguinte string: VALE3.SA PETR4.SA
Selecione também o method “Auto-History”, e dê um OK.

Clique agora em Update!

Você deverá receber uma confirmação da seguinte forma:

Quotes-Confirmação

Se tudo correu bem, suas ações deverão estar listadas à direita.

Adicionando Indicadores.

Não vou aqui dar um curso sobre bolsa de valores nem sobre indicadores. Mas vou explicar resumidamente que indicadores são fórmulas calculadas para tentar descobrir a tendência do movimento de uma ação. Cada trader usa os indicadores que mais lhe agradam. Os indicadores que eu costumo usar são:

  1. Force Index
  2. MACD
  3. Médias Móveis
  4. OBV
  5. Estocástico
  6. Suporte/Resistência

Todos estes indicadores podem ser retornados de forma fácil pelo QtStalker. Apenas o suporte e resistência que não tem, mas de qualquer forma prefiro calcular eu mesmo. Abaixo segue uma ScreenShot do gráfico MACD da Saraiva:

MACD-Saraiva

O QtStalker possui uma série muito grande de indicadores. A lista completa pode ser encontrada aqui.

Considerações Finais.

Bom, nem tudo é perfeito né.

O primeiro problema é que é necessário que os valores sejam pegos do site do yahoo. O fato do download não ser feito diretamente da Bovespa me incomoda um pouco pois os valores podem ser manipulados.

O programa é feito em QT e se encontra em sua versão 0.33, mas o desenvolvedor está meio sem tempo para continuar contribuindo. Procurei alguma coisa feita em GTK+ (com python tudo seria muito mais portável), mas infelizmente não encontrei nenhuma… =(

Mas mesmo com todos estes problemas, creio que é um exelente programa. Estou com eles a alguns dias, e estou bastante contente com os resultados.

Segue abaixo alguns links que acho importante para quem deseja conhecer mais sobre análise técnica ou o QTStalker.

  1. Folhainvest em Ação
  2. InfoMoney
  3. Curso de Introducao ao Investimento na Bovespa
  4. Tutorial do QtStalker
  5. Aprendendo com gráficos
  6. Nelogica - Tecnologia e Informação para o Mercado Financeiro

Estes 2 últimos muito bons para quem está iniciando.

É isso ai! Aguardo comentários!

[]’s, bons negócios e um bom Feriado!

Notebook e Gnome, está tendo problemas com som?

Este é apenas um POST rápido sobre um pequeno problema que eu estava tendo com o Gnome.

Em meu HP Pavillon DV4000, o Ubuntu (tanto o 6.XX como o 7.04) funcionava corretamente. Mas eu estava enfrentando alguns problemas com o controle de volume. O problema era o seguinte:

- Quando aumentava o volume pelos botões multimedia ou pelo controle remoto, tudo funcionava perfeitamente. Mas não funcionava quando eu estava ligado a uma caixa de som ou um fone de ouvido. Isto acontecia porque a faixa “mestre” não controla (ou não tem efeito) sobre a faixa headphone como podem ver na imagem abaixo:

Controlador de som do Gnome

Qual a solução para isto?

No menu Sistema/Preferência/Som é possível escolher qual o dispositivo que será controlado pelo teclado-multimedia/controle remoto. É útil saber que a faixa “PCM” controla tanto o som da saída de fone de ouvido quando do próprio computador. Então é só mudar para PCM que tudo irá funcionar corretamente.

Caixa de preferências de som do Gnome

Você ainda usa a “tabela admin”? Você pode estar correndo riscos…

Creio que seja “procedimento padrão” dos programadores PHP, ao desenvolver sistemas de login, criar uma tabela admin com um campo username e outro campo password, e quando o usuário realiza o login, o sistema executa uma query mais ou menos do tipo:

$sql = ‘SELECT * FROM admin WHERE user=’ . $user . ‘ AND password = “‘ . $password . ‘”;

Claro, pode haver variações de segurança como “escapestring” e md5 na senha. Mas a idéia é basicamente esta. Vejamos agora porque eu acho este tipo de procedimento inseguro.

1 - Todos os “usuários” do sistema executam com o mesmo usuário no banco de dados. Como o sistema deve ter um “super-usuário” que poderá fazer tudo no sgdb, todos os usuários do sistema poderão fazer tudo. O que quero dizer é que, em qualquer brecha mínima no sistema, um usuário comum (mas mal intencionado) poderá fazer drop em uma tabela inteira.

2 - A senha do usuário do banco de dados deverá ficar em um arquivo .php legível. Há um tempo atrás, eu utilizava um servidorzinho destes de 9,90 por mês para hospedar meu site. Um dia tive a curiosidade de saber o que tinha no /tmp do servidor. Então fiz uma página que recebia uma string, que se esta fosse um arquivo executava um system(”cat $valor”), e se esta fosse um diretório, executava um system(”ls -ls $valor”). O que eu percebi: Todos os usuários do servidor executavam na web com o mesmo usuário (normalmente o www). Logo o www deverá ter permissão para ler todos os arquivos. Então tive a curiosidade de listar o /home. E depois o /etc/.alias do apache. Indo desta forma, consegui observar o arquivo de configuração de banco de dados de um dos usuários. E depois disto, entrar no php MyAdmin.
Com isto, vocês já imaginam o tamanho potencial da catástrofe né?
Deixei este servidor e migrei para a dreamhost pois após enviar um e-mail alertando os administradores do servidor sobre falha, fui respondido com algo como: “Estamos cientes, mas você tem alguma dica de como resolver?”.

Tá tá, realmente a falha 1 pode ser resolvida se você for um programador extremamente observador e não deixar passar absolutamente nada. Sinceramente, acho isto quase impossível. E também se você gostar de re-inventar a roda, re-desenvolvendo todo um sistema de segurança em cima da aplicação, quando poderia ser usado o que “já vem pronto” do banco de dados.

Solução: Por a lógica de segurança em cima do banco de dados. Porquê? Porque ela já está implementada e tende a ser mais segura.

Explicação:

A idéia toda é, ao invés de fazer o “login” usando seleção você atrela o usuário ao banco de dados. Ao invés de “criar um usuário” na tabela admin, você cria um usuário no banco de dados e loga-se com ele. Entendeu?

No PHP ficaria algo assim:

mysql_connect($usuario,$senha,$database);

Após isto, em banco de dados de verdade (digo PostGress, Oracle e afins), basta você gerenciar as permissões (select, insert, drop´s, etc…) dos usuário em tabelas específicas. Por exemplo: Não faz sentido um usuário comum ter acesso à tabela de configuração, ou o mesmo poder dar drop em uma tabela qualquer.

Também utilizar Stored Procedures e Views ajudam bastante. Exige um pouco de conhecimento de DBA, mas deixa sua aplicação mais robusta, além de ser um procedimento muito mais seguro.

Sei que aplicações comerciais de grande porte trabalham desta forma. Mas a grande maioria dos programadores (principalmente web) nunca viram ou trabalharam com este tipo de abordagem. A intenção deste post é apenas dar uma idéia de uma forma diferente, e mais segura, de trabalhar.

Espero que este post incite uma discussão sobre esta e outras abordagem. E você, leitor, como trabalha?

Comentem!

[]’s e Feliz Páscoa.