python

Dois IDEs que gosto e dois que odeio

No princípio você descobre o Dev-C++ começa a programar e os bugs te atormentam. Não lembro quais são eles mas me fez procurar alternativas e encontrei o caso de amor:

Code::Blocks – O profissional

Feito para ser uma alternativa ao Dev-C++ já deixou de ser alternativa e se tornou regra. Evoluiu muito e tem cada vez mais agregado funcionalidades úteis.

Captura de tela de 2016-07-01 19-47-20 - 1.png

Como se pode ver na figura os Templates são variados e nos ultimos releases há uma busca pelo desenvolvimento embarcado se aproveitando das diversas plataformas suportadas pelo GCC e o SDCC.

O Code::Blocks suporta desde o começo muitos compiladores. No Windows o download já vem embutido o Mingw ou TDM-GCC.

Eu uso ele profissionalmente para desenvolvimento C/C++ para as plataformas ARM (STM32 ou Kinetis) e AVR bem como x86. Deu um pouco de trabalho a configuração inicial dele para STM32 mas foi gratificante e muito instrutivo.

Captura de tela de 2016-07-01 19-59-01.png

O que mais gosto nele é facilidade de configuração e início médio. Eu odeio programas lentos como se verá nos que odeio. Mas ainda há uma opção veloz …

Geany – O pequeno poderoso

Eu adoro o Geany. É o IDE perfeito para testes rápidos e desenvolvimentos descompromissados. Diferente do Code:Blocks ele suporta diversas linguagens e tenho usado muito ultimante para Python.

Apesar de ter a opção de criar projetos o que me atrai nele é justamente você poder criar um arquivo, digitar o código e botar para rodar diretamente sem maiores burocracias. Por isso é perfeito para testes.E ao fechá-lo e abri-lo posteriormente as abas estarão lá abertas novamente.  Na verdade um projeto é nada mais que organizar seus arquivos em pastas que são navegáveis no painel “Aquivos” ao lado. Se o projeto cresceu então junte tudo em uma pasta e trabalhe com ela.

Captura de tela de 2016-07-01 20-03-43.png

E o inicio é rapido!

Como eu gosto disto! Clicou abriu! E o terminal embaixo? Quebra um galhão. Com um suporte a debug  ele pode até substituir o Code::Blocks.

linux_dark_1-24_weblinux_dark_1-24

As caras são muitas ao Geany para todos os gostos. Acho bonito programar em escuro mas não consigo me acostumar.

Os que odeio

Eclipse – Lerdeza

Pelo amor de Deus … como demora esta coisa para iniciar. Fiquei injuriado quando a Freescale mudou sua IDE para variantes Eclipse. Clicava em debug e aquela coisa ficava pensando … pensando … indexando. Que horror. Por isso fiz um esforço e aprendi a configurar o Code::Blocks para ARMs.

Essa tendência de se fazer IDEs baseadas no Eclipse para mim foi um desastre. A Texas fez isso, a Freescale e a ST esta indo no caminho. Sim, sim sei que o Eclipse é muito versátil mas convenhamos muito lento.  Certeira foi a Atmel que partiu para uma solução Visual Studio.

plc2-2015-your-own-ide-4-638

E aquela burocracia para se criar um projeto???? O sujeito que programa para sistemas embarcados em Eclipse se aprender diretamente nele se torna dependente do mesmo; porque não terá a menor noção de como se programa para uma plataforma: que comandos, que bibliotecas, que caminhos, como usar os comandos de debug. Tudo isso fica escondido em trezentos cliques que da medo e preguiça de mexer.

Se você usa o Eclipse e não tem a menor idéia de como as coisas funcionam por favor veja neste post como se programa “na mão”  um STM32.

Descobri neste site http://www.ihateeclipse.com  que não sou o único!

Vim/VI – O Geek

Fui atrás de um screenshot deles no Google e o que acho? Curiosamente mais destas imagens que do próprio em questão. Isto já diz tudo:

vi-vim-cheat-sheet

Ai vem aquele moleque que quer ser diferente e se acha o maior por usar um desses.

A primeira instalação que fazia em algum Linux novo  – antigamente pois depois do ArchLinux nunca mais fiz instalação nova – era o MCEdit para evitar ter que editar arquivos de configurações nesta !@#$!. Aliás como se sai mesmo dele?  Era algo como ESC-Q!.

Eu não odeio o Terminal. Eu adoro o modo texto! Uso demais o Guake (terminal suspenso), mas perder meu tempo aprendendo esses atalhos se posso usar um IDE mais robusto não é comigo.

Fazer um esforço para aprender estes comandos para mim é uma perda de tempo se posso aprender muitas outras coisas mais úteis. De fato no momento estou fazendo um esforço para escrever robôs investidores em Forex e Bolsa e estou adorando o tema em torno de processos estocásticos. O Geany e o Metatrader estão sendo perfeitos para isso.

main-qimg-cf12b776c0e69ec6d30a47b0d90792d9

Geração dodói

Se você programa nestas coisas parabéns te admiro, mas não me pertube.

 

 

 

Script MQL5 para exportar preços históricos de um ativo em CSV

Inaugurando assuntos na área de finanças segue um script que fiz para exportar informações de algum ativo no Metatrader5 para o formato CSV.
Uso isto para em seguida importar no python e fazer estudos estatísticos.
O script é um INDICADOR, logo você terá que adicionar ele à janela do ativo escolhido como indicador.
Esse script é muito simples. A cada tick ele será executado, assim é bom usar ele poucas vezes para não sobrecarregar o metatrader.
O nome de saída será ATIVO-xxxxx.csv e normalmente encontra-se no diretório MQL5/Files.
O arquivo deverá ser colocado em MQL5/Indicators para que o Metatrader reconheça como um indicador adicionável.

A imagem do post é um histograma dos valores de minima do candle posterior no caso de alta e vice versa feito com arquivo csv gerado por este script e importado em python. O ativo no caso é o Mini Indice. É interessante notar que na baixa os recuos (máxima do candle posterior) ocorrem com menos frequência e intensidade e que a maioria dos recuos ficam em torno de 50-100 nos candle de altas  10-50 pontos nos de baixa.

#include <Arrays\List.mqh>


int OnInit()
{

return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{


string S = Symbol() + "-" + Period() + ".csv";

int file_handle=FileOpen(S,FILE_READ|FILE_WRITE);
FileWrite(file_handle,"low,high,open,close");


for(int i = 1; i < rates_total; i++)
{


FileWrite(file_handle,low[i]+","+high[i]+","+open[i]+","+close[i]);

}

FileClose(file_handle);

return(rates_total);
}

Como exibir cotações de ações Ibovespa ou mundiais no Conky

conky-desktop

Exibir cotações de qualquer ativo ou moeda no Conky suportado pelo Yahoo Finance  ou para qualquer outro uso em Python é fácil através do módulo yahoo-finance.

Sem perda de tempo, instale o módulo yahoo-finance:


sudo pip install yahoo-finance

Faça alguns testes no terminal python:

>>> from yahoo_finance import Share
>>> VivaOMoro = Share('PETR4.SA')
>>> print VivaOMoro.get_open()
8.51

Se apareceu o preço então o módulo funciona. O seguinte script será usado para que o Conky exiba as informações sobre os ativos:

#!/usr/bin/python

from yahoo_finance import Share
from math import *

codigos = ['^BVSP', 'DOW', 'PETR4.SA', 'ETER3.SA']

for i in codigos:
	share = Share(i)
	percent = format ( 100 *  (  (  float(share.get_price())  / float (share.get_prev_close())   ) -1  ),'.2f')
	print (format(i,'10') +" " + format(float(share.get_price()),'10.2f')  + " " + percent + "%")

Salve em algum lugar e torne-o executável com chmod +x NOMEDOSCRIPT. E finalmente para  que o conky exiba as cotações usaremos o comando execpi no arquivo .conkyrc:


${font "Courier New"  MS:bold:size=8}${alignc}
${execpi  1 /CAMINHOPROSCRIPT/NOMEDOSCRIPT.py}

Veja que coloquei propositalmente a linha de formatação de fonte para lhe encorajar a usar fonte fixa ajudando, assim, no alinhamento, entretanto ainda não ficou excelente o alinhamento então sugestões serão bem vindas.

O numero 1 logo depois de execpi é o tempo de atualização em segundos. Muito baixo sem dúvida afinal se você estiver interessado em atualizações com menos de 12h provavelmente não esta interessado em ver cotações no Conky mas no MetaTrader por exemplo. É útil para Swing trade ou Position.

Para incorporar mais ativos acrescente o código correspondente na linha codigos = [‘^BVSP’, ‘DOW’, ‘PETR4.SA’, ‘ETER3.SA’] entre aspas simples com virgula. Veja que o Yahoo usa código levemente diferente do que estamos acostumados então vá ao site e pesquise pelos códigos.

Com algumas alterações no script é possível colocar o valor de uma carteira investida … e quem sabe um dia desses eu adapte o script Lua (que faz os círculos) para mostrar um gráfico …. um dia desses ….

E por falar em Conky …

Fica a dica que o Conky apesar de leve e consumir pouca memória diminui a durabilidade da bateria do notebook pois ‘acorda’ frequentemente a CPU. Uma sugestão é ou diminuir o tempo de refresh quando em modo bateria ou matar o processo de vez. Afinal é só um processo ‘cosmético’.

Cores no terminal serial pelo Arduino/STM32 no linux

Poucos sabem mas as cores em um terminal serial é possível devido a emulação VT-100 nos terminais que aceitam códigos de escape com certas ações e dessa forma pode-se fazer saídas intuitivas e bonitas como da imagem destacada do programa WeeChat.

Esses códigos não somente estabelecem cores mas fornecem comandos úteis para montar telas estáticas (não rolantes) como as que se consegue com a biblioteca ncurses (e antiga conio.h), inclusive com o uso dos recursos de janelas da tabela ASCII a ncurses torna-se desnecessária.

Veja, então, exemplos já embutidos em printf para aprender como utilizar estes códigos. Qualquer outra função serial que envie uma string entre aspas funcionará também.

Todos os códigos iniciam com o ESC em octal 033.

printf("\033[2J"); // Apaga todo o terminal
printf("\033[H"); // Manda o cursor para o começo da tela
printf("\033[?25l"); // Esconde o cursor
printf("\033[48;5;4m"); // Estabelece a cor Azul
printf("\033[0m"); // Reseta as formatações estabelecidas

Também funciona em Python como no exemplo:

print("\033[2;0f") # Coloca o cursor na linha 2

Na internet há muito mais códigos disponíveis como em http://ascii-table.com/ansi-escape-sequences-vt-100.php entretanto você poderá ver algumas diferenças entre os sites no código de escape utilizado pois VT-100 é uma tecnologia antiga e foi utilizada em várias plataformas diferentes mudando alguns aspectos.

Neste site (http://misc.flogisoft.com/bash/tip_colors_and_formatting) há uma lista útil para códigos de escape de cores. O site foi feito com exemplos para o comando echo do terminal porém basta substituir o \e por \033 e funcionará da mesma forma.

No Windows utilize o famoso Putty para poder visualizar as cores.

Esses recursos são úteis para se livrar do velho conceito de tela rolante e podermos fazer telas avançadas para visualização de controle de informações bonitas e funcionais.