Bolsonaro quer mais mortes no trânsito?

Aproveitando o título do canal do Youtube do “Mamãe Falei“, resolvi compartilhar minha visão sobre o assunto. Já faz algum tempo que pretendo escrever e fico adiando. Vou aproveitar o momento polêmico que surgiu com algumas medidas propostas pelo atual governo.

Dentre algumas alterações como “10 anos para renovação da CNH, alteração no limite de pontos para perda da carteira (de 20 para 40 pontos) e eliminação da multa pela falta da cadeirinha“, a única medida que discordo é referente à isenção do exame toxicológico para motoristas profissionais.

Acredito que existam pontos muito mais sérios que ninguém demonstra um grande esforço para resolver. Se avaliarmos os problemas atuais, não acho pertinente nem a multa da cadeirinha.

Parece inimaginável que alguém pegue o carro depois de ingerir álcool, não é mesmo? Pois é, pode parecer inacreditável, mas ainda há muita gente dirigindo embriagada dentro da cidade e nas rodovias brasileiras também.

E quanto aos acidentes envolvendo motos? No sistema de saúde, já virou caso de calamidade pública. Passem uma noite em um hospital no setor de ortopedia (entrarão em pânico) – impossível não ficar horrorizado. Imagine se você precisar de atendimento porque quebrou um dedo e precisar esperar pelos casos com maior urgência…

E a qualidade do asfalto de nossas estradas?

É fácil ficar brincando de primeiro mundo, desprezando o básico. Não sejamos hipócritas, perde-se muito tempo com questões menores e empurram os grandes problemas com a barriga (deixando sem solução)!

Armas de fogo aumentam ou diminuem a violência?

Resolvi escrever sobre o assunto após conferir alguns comentários quando compartilhei, em nossa fanpage, o resultado da pesquisa Datafolha que apontou que 51% dos brasileiros têm medo da polícia e apenas 47% confiam nos policiais.

Caso esse pessoal precise de ajuda, recorrerão ao Batman?

Na verdade não existe um consenso claro sobre o assunto…

É possível levantar pesquisas que comprovam que países com liberação de armas são mais seguros e, se quisermos, também encontramos material colocando em dúvida.

O problema é que tudo isto varia de acordo com a realidade de cada região. Não poderíamos usar o Japão como exemplo, pois os aspectos culturais, sociais e econômicos são MUITO diferentes. Quanto menos desenvolvido o país e mais desigual economicamente, mais frequentes serão os conflitos violentos – com ou sem arma de fogo.

– Se quiser reforçar a tese da liberação:
https://www.tercalivre.com.br
https://dellacellasouzaadvogados.jusbrasil.com.br

– E se quisermos refutar a tese:
http://mercadopopular.org

– Meio termo (considero o mais sensato):
https://veja.abril.com.br

O problema é que o Brasil é um país que carece em infraestrutura, saúde e segurança. Vi muitos questionamentos quanto a atuação da polícia – se, com a polícia existem problemas, sem ela vira um caos.

É fácil perceber que se trata de um assunto complexo. A defesa de cada tese acaba dependendo do viés que cada um prefere defender!”

FCL: Analisando Fluxo de Caixa Livre

Analisar o balanço para identificar boas empresas é uma etapa mandatória para selecionar mais adequadamente a empresa em que desejamos nos tornar sócios (visão de Holders).

https://media.treasy.com.br/media/2018/08/Fluxo-de-Caixa-livre.jpg

De acordo com o portal Treasy, “a definição mais simples para entender o que é Fluxo de Caixa Livre é dizer que se trata da quantidade de dinheiro restante em uma empresa. Em outras palavras, é o montante de caixa (fluxo de caixa operacional) que permanece em um negócio após todos os gastos (dívidas, despesas com aluguel, salários etc.) terem sido pagos.”

Confiram uma leitura praticamente obrigatória para Holders:
https://www.treasy.com.br/blog/fluxo-de-caixa-livre/

Resumindo: “Se encontramos uma empresa com lucro líquido consistente, dívida saudável (ou descrescente, de preferência), margem bruta estável e FCL consistente e crescente, estamos diante de uma empresa com características sólidas para investimento“.

Para a análise descrita anteriormente, recomendo o site:
https://www.oceans14.com.br/acoes/

Aliás, foi usando estes critérios que decidi manter uma pequena posição em CRFB3 (Carrefour).

Um Brasil do lado de lá do espelho

Recebi um texto, em nome de Marcelo Rates Quaranta (autor), achei a sequência de argumentos fantástica e resolvi compartilhá-lo. O texto é longo, mas vale a penas separar alguns minutinhos para leitura!

*Um Brasil do lado de lá do espelho*

Pablo Vittar é cotado como “mulher” mais sexy, Thammy Gretchen é cotada como “homem” mais sexy e agora só falta o Tiririca ganhar um assento na Academia Brasileira de Letras e a Jojo Todynho ganhar o concurso de Miss Brasil. Isso não é nada para um país que tem um presidiário analfabeto como Doutor Honoris Causa e um Presidente da Suprema Corte que nunca foi Juiz.

Vivemos no país do espelho, onde as imagens são invertidas pela grande mídia comprometida com a esquerda. Uma parcela do povo idolatra e pede a liberdade de um corrupto que não só roubou dinheiro, mas também os sonhos das pessoas, e ainda chamam de “criminoso” o Juiz que o condenou pelos crimes.

Mulheres escrevem cartas de amor para um ex-goleiro matador de mulher; gays idolatram Che Guevara que matava gays e ativistas negros endeusam um líder de quilombo que mantinha escravos negros, mas esquecem de todos os brancos abolicionistas que lutaram pela liberdade dos escravos, sobretudo daquela que a assinou.

Que maravilha de país! Guerrilheiros recebem pensão como prêmio por assaltos, assassinatos e sequestros e um fuzil nas mãos de um bandido não representa qualquer ameaça.

Enquanto isso nossos policiais são mortos aos borbotões. Mas o que esperar de uma gente que transformou Marielle em heroína, mas esqueceu da professorinha que morreu queimada depois de salvar várias crianças de um incêndio criminoso? Isso fora os que acharam um absurdo uma policial matar um bandido que ameaçava mães na porta de uma escola.

Invasores de terras matam gado, destroem laboratórios e queimam casas em nome da “justiça social”, e manifestantes queimam carros, depredam patrimônio público e saqueiam lojas pedindo “ordem”. Tempos atrás foi por causa de um aumento de vinte centavos nas passagens, mas são os mesmos que clamam pela liberdade de quem lhes roubou bilhões de reais, e quando roubou, ficaram calados.

Nas universidades, que deveriam ensinar os alunos a serem produtivos, doutrinam com base nas filosofias de um vagabundo improdutivo chamado Marx, e que viveu a vida inteira às custas da mulher, rica. Mulheres gritam contra o feminicídio, mas defendem a morte de inocentes no ventre.

Aqui os militantes que pregam a paz são os que praticam o ódio e os políticos que falam em liberdade são os que aprisionam os humildes na ignorância. Até o que veio pedir o fim das “fake news” foi o que mais se utilizou de mentiras em sua campanha.

Aqui, meu filho, comunistas falam em igualdade morando em mansões, voando de primeira classe, comendo em restaurantes caros e com rolex no pulso. Lutam contra o capitalismo tirando férias na Disney ou Nova York, e fazendo discursos tomando um scotch 20 anos no baixo Leblon. É lá que fazem defesas apaixonadas da “democracia” de Cuba, onde não tem eleições desde 1959 e nem é permitido existir oposição. É onde empunham suas bandeiras contra a ditadura e defendem a liberdade de expressão, mas reverenciam Maduro, que condena seus opositores às masmorras, retira toda a liberdade de expressão e pune com a morte os manifestantes. Puxa… Que romântico!

Esse foi o legado deixado pela esquerda depois de longos 14 anos.

*Só espero, sinceramente, que estejamos entrando numa nova fase, e que o Brasil comece a sair dessa inversão maldita, passando a trilhar por uma estrada reta e decente, porque nunca antes se viu um país pegando um atalho tão curto para a decadência.*

_Marcelo Rates Quaranta_

Algoritmos: Programação de robôs de trade (videoaula)

Sei que o intervalo de tempo entre um vídeo e outro está longo, mas não estou com muita disponibilidade de tempo livre e, infelizmente, no final de semana passado o HD (disco rígido) principal do meu computador danificou definitivamente. Logo, precisei refazer a instalação do sistema operacional e recuperar o backup de minhas aplicações e projetos. Isto sem falar que ainda estou codificando e otimizando meu robô de trade.

Antes de tratar sobre a codificação de indicadores ou robôs propriamente, começaremos falando sobre lógica de programação (algoritmos). Para quem pretende criar seu próprio indicador ou EA no Metatrader, este conhecimento é fundamental.

Para melhor compreensão, é importante entender primeiro o conceito de entrada (INPUT) e saída (OUTPUT).

Entrada: Recebimento de dados para processamento (associação direta, leitura de um arquivo ou dados fornecidos pelo teclado)

Saída: Resultado final do processamento (escrita em disco ou exibição em tela).

Com este entendimento, fica mais simples compreender o que é um algoritmo e como escrever o nosso próprio código.

Um algoritmo nada mais é que uma sequência lógica de instruções (código) que determinam como dados recebidos (entrada) serão tratados pelo computador.

Resumindo, o algoritmo é uma sequência lógica de instruções que utilizaremos para solucionar determinado problema. A sequência lógica pode ser apresentado em diagrama (fluxograma) ou por um bloco de código (prévia para codificação).

https://www.lucidchart.com/pages/pt/modelos-e-exemplos-de-fluxogram

Como o nosso objetivo principal é a codificação de indicadores ou assistentes especializados (robôs), o foco deste artigo será voltado aos blocos de código. A figura anterior (fluxograma), foi utilizada como reforço para demonstrar como funciona a lógica de programação.

Porém, é através do algoritmo que aprendemos a programar… 😉

http://aprendizfinanceiro.com.br/awrp/wp-content/uploads/2019/03/Algoritmo-videoaula.doc

O primeiro passo, será identificar as “variáveis” necessárias para nosso programa.

As variáveis representam áreas de memória que identificam um dado específico (onde guardaremos o dado recebido para posterior referência – seja por arquivo, teclado ou associação direta).

Por exemplo (associação direta – atribuindo valores):

candle_maior=10
candle_abertura=5
candle_fechamento=8
candle_menor=3

Foram utilizadas 4 variáveis para guardar o valor do “último negócio” realizado no MT5, onde candle_abertura representa o preço de abertura da barra e candle_maior a máxima da barra. As demais variáveis são autoexplicativas.

“Aliás, sempre utilize nomes sugestivos para associar rapidamente a finalidade da variável

O exemplo anterior foi de variáveis simples, mas podemos trabalhar com vetores (array) para armazenar múltiplos valores na mesma variável – permite ter acesso a informações passadas a qualquer momento (histórico).

Caso precisássemos armazenar os preços negociados nas últimas 100 barras, por exemplo:

candle_maior[0]=10
candle_abertura[0]=5
candle_fechamento[0]=8
candle_menor[0]=3

candle_maior[n]=…
candle_abertura[n]=…
candle_fechamento[n]=…
candle_menor[n]=…

candle_maior[99]=6
candle_abertura[99]=5
candle_fechamento[99]=3
candle_menor[99]=2

O valor que aparece entre colchetes (“n”) é um índice que identificará cada barra. Como, no MQL5, o primeiro índice começa em 0, o último (em 100 barras) será 99.

Também precisamos identificar o tipo de dado:
1. lógico: boleano (verdadeiro ou falso)
2. data_hora: formato data e hora
3. numérico: inteiro ou flutuante
4. textual: caractere ou string

Por exemplo:

inteiro i = 0
boleano candle_alta = verdadeiro
flutuante maior_preco = 0.0
flutuante candle_fechamento[]

Neste artigo, para receber dados por teclado, convencionaremos que a instrução será “leia“. E, para exibir os dados, convencionaremos “exiba“.

Entendida a declaração das variáveis, podemos começar a definir a lógica de processamento – “99% do sucesso de todo código (instruções) depende desta definição (onde as comparações serão feitas)”.

Estruturas condicionais:

São blocos de código onde validaremos se o conteúdo das variáveis atendem nossas necessidades: “se condição_verdadeira; faça

– Qual seria o algoritmo necessário para descobrir se um candle é de alta ou baixa?

flutuante candle_abertura=0.0, candle_fechamento=0.0
boleano candle_alta = falso
leia candle_abertura
leia candle_fechamento

se candle_abertura < candle_fechamento; então
candle_alta = verdadeiro
exiba “fechamento”+candle_fechamento+“ alta”
senão
candle_alta = falso
exiba “fechamento”+candle_fechamento+“ baixa”
fim-se

Na realidade, defini candle_fechamento como boleano de propósito, pois no MQL5 poderia ter feito a comparação pela própria variável.

flutuante candle_abertura=0.0, candle_fechamento=0.0
leia candle_abertura
leia candle_fechamento

boleano candle_alta = (candle_abertura < candle_fechamento)

se candle_alta == verdadeiro; então
exiba “fechamento ”+candle_fechamento+“ de alta”
senao
exiba “fechamento ”+candle_fechamento+“ de baixa”
fim-se

Caso pareça muito confuso, respire fundo e leia novamente!

Não é obrigatório dominar tudo que foi demonstrado, mas saiba que é o básico para que possamos otimizar o código para as nossas necessidades. Do contrário, a contratação de um programador será a única alternativa.

Em relação a programação, o que fiz, no exemplo anterior, pode gerar alertas de compilação ou resultado inesperado em algumas linguagens de programação. Percebam que, na exibição, fiz uma soma entre strings com um valor flutuante (são tipos diferentes).

Logo, o ideal é realizar a conversão para um tipo comum. Neste caso, o mais lógico, no momento da soma, seria converter candle_fechamento para string.

Este processo de conversão é conhecido como casting:

exiba “fechamento ”+(string) candle_fechamento+“ de alta”

A partir deste momento, a instrução exiba entenderá que está somando (concatenando) strings. Em algumas linguagens (não é o caso da MQL), ‘a+1’ é igual ‘b’!

Vale lembrar que tenho colocado verdadeiro ou falso em negrito porque representa um valor reservado para identificar o resultado lógico da variável boleana. Não se preocupe muito com isto agora, mas é fundamental que você saiba interpretar os exemplos dados (como está sendo processado).

É evidente que muitas vezes faremos mais de uma comparação na mesma expressão, obrigando que duas ou mais condições sejam atendidas (AND) ou apenas uma (OR).

-É aqui que entra a interpretação da tabela verdade:

se (a > b AND b > c): será processado quando ambas forem verdadeiras
se (a>b OR b>c): será processado se qualquer uma das condições for verdadeira.

Confiram uma videoaula específica sobre estruturas condicionais:

Estruturas de repetição (loop):

Uma estrutura de repetição é basicamente um bloco de instrução em que uma determinada operação deverá ser executada repetidas vezes até atingir o resultado esperado.

Poderíamos utilizar um loop para descobrir qual é o maior preço de fechamento das últimas 100 barras, por exemplo.

inteiro i=0
flutuante maior_preco=0.0
flutuante candle_fechamento[]
...
para (de i=0 até 99); faça
leia candle_fechamento[i]
se (candle_fechamento[i] > maior_preco); então
maior_preco = candle_fechamento[i]
fim-se
fim-para

exiba maior_preco

A variável maior_preco foi inicializada em 0 (menor preço possível) e será substituída no primeiro preço acima de 0. Nas comparações seguintes, ela será atualizada cada vez que o valor de candle_fechamento[i] for maior que o conteúdo de maior_preco.

Se não utilizássemos uma estrutura de repetição (loop) teríamos que escrever cada comparação individualmente – em muitos casos, seria inviável.

se (candle_fechamento[0] > maior_preco); então
maior_preco = candle_fechamento[0]
fim-se

se (candle_fechamento[1] > maior_preco); então

se (candle_fechamento[99] > maior_preco); então
maior_preco = candle_fechamento[99]
fim-se

Mais uma videoaula específica sobre estruturas de repetição (bastante didático):

Cuidado para não tornar os laços infinitos (no exemplo anterior, o limite foi fixado em 99 – repetição de 100x), pois, caso fique infinito, o processamento não terminará e causará o travamento da aplicação.”

Para finalizar, também podemos trabalhar com reaproveitamento de código e melhor organização estrutural disponibilizando funções.

Chamadas de funções:

Quando precisarmos executar uma mesma operação várias vezes em diferentes partes do código, ao invés de repetir o mesmo bloco de código várias vezes, podemos separar o código responsável por este processamento e chamá-lo sempre que for necessário (com uma única chamada, informando os dados necessários).

flutuante função calc_media (flutuante maxima, flutuante minima); início
flutuante resultado = (maxima + minima)/2
retorne resultado
fim-função

flutuante maxima=0.0, minima=0.0, media=0.0
leia maxima
leia minima
media=calc_media(maxima,minima)

exiba media

Percebam que cada função representa um bloco de código separado. Caso o processamento da função, ao final do seu processamento, ofereça algum retorno (resultado final), deveremos configurar o tipo de dado que será retornado (no exemplo foi flutuante).

Confiram uma videoaula específica sobre funções (bastante didático):

No MQL5, a posição da função, em relação a sua chamada, não importará. Não é algo muito comum porque a interpretação do código é sequencial e o compilador, teoricamente, precisa conhecer a função antes de uma chamada no bloco de código principal.

Espero que o conteúdo lhe auxilie no aprendizado!

– Quem não se familiarizar com lógica de programação, precisa contratar um programador para MQL5 – sua curva de aprendizado pode ser longa.

– Outra opção é buscar soluções comerciais onde você apenas alimenta as opções do robô de acordo com o tipo de lógica já programada – aqui Brasil, a Smartbot oferece este serviço.