O ambiente de desenvolvimento do MetaTrader permite integrar programas e dados externos, nomeadamente obtidos da Internet via WebRequest. O formato de dados mais universal e usado na Web é HTML. Quando um serviço público não fornece uma API aberta para solicitações ou a API em si mesma, seu protocolo é difícil de implementar em MQL, e é nesse...
Existem diferentes abordagens para estudar e analisar o mercado, mas, há dois principais, nomeadamente a técnica e a fundamental. No primeiro caso, acontece a coleta, o processamento e o estudo de quaisquer dados numéricos e de características relacionadas ao mercado: preços, volumes e assim por diante. No segundo caso, acorre a análise de...
Quando um programador cria um EA que recebe sinais de indicadores, ele sempre defronta a questão sobre se usar o indicador ou se transferir o código do indicador para o EA. As razões para isso podem ser diferentes: o desejo de manter em segredo os indicadores e a estratégia usados, a necessidade de distribuir o EA num único arquivo, o desejo de...
Olá
Trader_Patinhas, solução:
ter um outro VPS padrão para espelhar os logs por socket ;-)
Falando sério agora, sem dúvida isso não faria lógica, e realmente até onde eu também saiba, o acesso é apenas através dos logs do
terminal e expert.
Entretanto esse seu problema me parece similar ao de qualquer empresa com sistemas mais pesados, rodando em servidor blade e com alta
performance e nesse caso me parece o mais apropriado os seus robôs fazerem tudo de forma autônoma, e você utilizar o socket apenas
para gerar alarmes e os logs (também por socket) apenas para exibir resultados específicos ou relacionados.
Tenho alguns cases de clientes e alguns sistemas bem pesados na cloud processando bigdata e utilizando vários módulos e
arquiteturas, como por exemplo baseadas em hadoop, com vários robôs analisando dados em tempo real e cruzando informações em
paralelo, onde faço justamente isso, mantendo eles com autonomia em 100% das análises e operações, e onde as pessoas fazem apenas o
reconhecimento de alarmes e análise de logs específicos, requisitados por socket.
Note que essa arquitetura também é muito usada para RPA Cognitivo, principalmente quando envolve análise de dados não
estruturados como imagens ou até mesmo streaming, o que é bem mais pesado, pelo menos em termos de performance de redes neurais
artificiais, que a "simplicidade" de analisar "apenas" preços, volumes, fitas, books, etc., com dados estruturados e
limitados.
Na prática, acredito que essa é a tendência, ou seja, as máquinas fazendo tudo cada vez mais com o mínimo de supervisão (como
processar logs em tempo real), mas com o máximo de visibilidade, também em tempo real, apenas sobre alarmes e não conformidades.
Mas essa é minha visão e respeito qualquer outra arquitetura, principalmente se gerar roi alpha, que ao fim e ao cabo é o objetivo
principal de investir em uma estrutura assim.
Sds., Rogério Figurelli
Olá
marciomichailu, essa é uma possibilidade de robôs
relativamente simples que pode ser criada em um robô, uma vez que você pode endereçar qualquer ativo. A questão é a eficiência de uma
varredura assim, tanto em termos de estratégia como de performance, principalmente se você for otimizar seu robô usando
backtesting, uma vez que o histórico de todos ativos da lista devem ser processados.
Sds., Rogério Figurelli
Fiquei preocupado com esta frase que vc escreveu, pois me faz imaginar que há uma coisa importante que talvez vc ainda não tenha captado:
"Não
tenho o hábito de declarar variáveis como 'static', justamente para não ter complicações com valores antigos."
Saiba que nas variáveis não-estáticas os valores NÃO são inicializados. Ou seja, elas podem conter inicialmente QUALQUER VALOR,
pois elas ocupam endereços físicos na pilha do sistema, que podem ser compartilhados com outras variáveis locais de outras
funções do seu programa, ou mesmo com variáveis usadas dentro das chamadas ao sistema operacional feitas pelo seu programa.
Portanto, se nas variáveis estáticas vc tem "complicações com valores antigos", nas não-estáticas vc tem as mesmas complicações com
valores que podem ter sido deixados lá por outras funções do programa, ou até pelo sistema operacional.
No caso das estáticas, pelo menos vc sabe quais valores estão lá e pode deixar quietos os que ainda lhe servem. Já no caso das
não-estáticas, NÃO DÁ PRA SABER O QUE ESTÁ LÁ e por essa razão vc TEM QUE INICIALIZAR TODOS OS CAMPOS.
No caso de variáveis locais declaradas dentro de um loop, se não houver nenhuma chamada de sistema operacional dentro do loop
(imprimir na tela, ler arquivo, etc.), o conteúdo das variáveis declaradas dentro do loop geralmente não será alterado entre uma
iteração e outra, e por essa razão, às vezes uma lógica de programação que se baseia na falsa premissa de que a variável nasce com
determinado valor pode até funcionar .... mas note que eu disse "GERALMENTE" ... se o programa tiver threads concorrentes
compartilhando a pilha, uma outra thread pode usar aquele mesmo endereço físico e alterar o valor armazenado ali ... o próprio
compilador às vezes pode modificar a estrutura do seu loop para otimizar tempo de processamento ou memória e essas otimizações
podem acabar fazendo com que o mesmo endereço físico fique sendo utilizado alternadamente por duas variáveis locais distintas
... enfim, em uma variável local não-estática declarada dentro de um loop, não é garantido que na iteração seguinte do loop vc
encontrará lá o mesmo valor que deixou na iteração anterior.
Olá, como fazer meu EA realizar saída parcial em conta hedge? Tendo em consideração que uma saída parcial é uma nova operação em sentido contrário, como a corretora irá entender?
Aryel Marques: Olá, como fazer meu EA
realizar saída parcial em conta hedge? Tendo em consideração que uma saída parcial é uma nova operação em sentido contrário, como a
corretora irá entender?
Primeiramente, observe as regras desta thread e as respeite. Este eh o caminho para se obter ajuda.
Em resposta a sua pergunta, não existe "a corretora entender". Se o código estiver adequado, a operação sera executada
sem problemas. Caso tenha mais duvidas, abra uma nova thread e seja mais objetivo e especifico.
Decidi criar esse tópico para concentrar tudo (perguntas, respostas, cases, informações, etc.) sobre Arquitetura de Robôs em
geral, com questões relevantes sobre arquitetura de software, estratégias, táticas, técnicas, etc. para o
desenvolvimento/projeto de tecnologias ou produtos utilizando o MT4/MT5.
Algumas regras básicas:
1. Por favor não faça perguntas sobre outros assuntos aqui.
2. Se você já criou ou vai criar um tópico especificamente com sua pergunta coloque aqui apenas uma referência para ele para evitar
redundância.
3. Por favor siga as regras do fórum (https://www.mql5.com/pt/about/rules)
Obrigado e boa discussão sobre Arquitetura de Robôs a todos!
Primeiramente, observe as regras desta thread e as respeite. Este eh o caminho para se obter ajuda.
Em resposta a sua pergunta, não existe "a corretora entender". Se o código estiver adequado, a operação sera
executada sem problemas. Caso tenha mais duvidas, abra uma nova thread e seja mais objetivo e especifico.
Reformulada;
Alguém pode me ajudar com o trecho do código onde o EA faz saída parcial em conta HEDGE?
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação
Serviço MQL5 VPS lançado em São Paulo!
Rogerio Figurelli, 2019.07.28 20:23
Olá Trader_Patinhas, solução: ter um outro VPS padrão para espelhar os logs por socket ;-)
Falando sério agora, sem dúvida isso não faria lógica, e realmente até onde eu também saiba, o acesso é apenas através dos logs do terminal e expert.
Entretanto esse seu problema me parece similar ao de qualquer empresa com sistemas mais pesados, rodando em servidor blade e com alta performance e nesse caso me parece o mais apropriado os seus robôs fazerem tudo de forma autônoma, e você utilizar o socket apenas para gerar alarmes e os logs (também por socket) apenas para exibir resultados específicos ou relacionados.
Tenho alguns cases de clientes e alguns sistemas bem pesados na cloud processando bigdata e utilizando vários módulos e arquiteturas, como por exemplo baseadas em hadoop, com vários robôs analisando dados em tempo real e cruzando informações em paralelo, onde faço justamente isso, mantendo eles com autonomia em 100% das análises e operações, e onde as pessoas fazem apenas o reconhecimento de alarmes e análise de logs específicos, requisitados por socket.
Note que essa arquitetura também é muito usada para RPA Cognitivo, principalmente quando envolve análise de dados não estruturados como imagens ou até mesmo streaming, o que é bem mais pesado, pelo menos em termos de performance de redes neurais artificiais, que a "simplicidade" de analisar "apenas" preços, volumes, fitas, books, etc., com dados estruturados e limitados.
Na prática, acredito que essa é a tendência, ou seja, as máquinas fazendo tudo cada vez mais com o mínimo de supervisão (como processar logs em tempo real), mas com o máximo de visibilidade, também em tempo real, apenas sobre alarmes e não conformidades.
Mas essa é minha visão e respeito qualquer outra arquitetura, principalmente se gerar roi alpha, que ao fim e ao cabo é o objetivo principal de investir em uma estrutura assim.
Sds.,
Rogério Figurelli
Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação
Robo que analisa todas as ações do IBOV.
Rogerio Figurelli, 2019.07.31 09:07
Olá marciomichailu, essa é uma possibilidade de robôs relativamente simples que pode ser criada em um robô, uma vez que você pode endereçar qualquer ativo. A questão é a eficiência de uma varredura assim, tanto em termos de estratégia como de performance, principalmente se você for otimizar seu robô usando backtesting, uma vez que o histórico de todos ativos da lista devem ser processados.
Sds.,
Rogério Figurelli
Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação
AJUDA - E.A. Bandas de Bollinger
Joscelino Celso de Oliveira, 2019.08.08 01:42
Existem alguns exemplos no CodeBase que voce poderia comparar, e, evidentemente, adequar para a B3. Veja abaixo:
Exemplo 1:
https://www.mql5.com/pt/code/166
Exemplo 2:
https://www.mql5.com/pt/code/17992
Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação
Dúvida sobre a função ZeroMemory()
Trader_Patinhas, 2019.08.08 04:15
Fiquei preocupado com esta frase que vc escreveu, pois me faz imaginar que há uma coisa importante que talvez vc ainda não tenha captado:
"Não tenho o hábito de declarar variáveis como 'static', justamente para não ter complicações com valores antigos."
Saiba que nas variáveis não-estáticas os valores NÃO são inicializados. Ou seja, elas podem conter inicialmente QUALQUER VALOR, pois elas ocupam endereços físicos na pilha do sistema, que podem ser compartilhados com outras variáveis locais de outras funções do seu programa, ou mesmo com variáveis usadas dentro das chamadas ao sistema operacional feitas pelo seu programa.
Portanto, se nas variáveis estáticas vc tem "complicações com valores antigos", nas não-estáticas vc tem as mesmas complicações com valores que podem ter sido deixados lá por outras funções do programa, ou até pelo sistema operacional.
No caso das estáticas, pelo menos vc sabe quais valores estão lá e pode deixar quietos os que ainda lhe servem. Já no caso das não-estáticas, NÃO DÁ PRA SABER O QUE ESTÁ LÁ e por essa razão vc TEM QUE INICIALIZAR TODOS OS CAMPOS.
No caso de variáveis locais declaradas dentro de um loop, se não houver nenhuma chamada de sistema operacional dentro do loop (imprimir na tela, ler arquivo, etc.), o conteúdo das variáveis declaradas dentro do loop geralmente não será alterado entre uma iteração e outra, e por essa razão, às vezes uma lógica de programação que se baseia na falsa premissa de que a variável nasce com determinado valor pode até funcionar .... mas note que eu disse "GERALMENTE" ... se o programa tiver threads concorrentes compartilhando a pilha, uma outra thread pode usar aquele mesmo endereço físico e alterar o valor armazenado ali ... o próprio compilador às vezes pode modificar a estrutura do seu loop para otimizar tempo de processamento ou memória e essas otimizações podem acabar fazendo com que o mesmo endereço físico fique sendo utilizado alternadamente por duas variáveis locais distintas ... enfim, em uma variável local não-estática declarada dentro de um loop, não é garantido que na iteração seguinte do loop vc encontrará lá o mesmo valor que deixou na iteração anterior.
Olá, como fazer meu EA realizar saída parcial em conta hedge? Tendo em consideração que uma saída parcial é uma nova operação em sentido contrário, como a corretora irá entender?
Primeiramente, observe as regras desta thread e as respeite. Este eh o caminho para se obter ajuda.
Em resposta a sua pergunta, não existe "a corretora entender". Se o código estiver adequado, a operação sera executada sem problemas. Caso tenha mais duvidas, abra uma nova thread e seja mais objetivo e especifico.
Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação
Tudo sobre Arquitetura de Robôs
Rogerio Figurelli, 2019.04.06 13:29
Primeiramente, observe as regras desta thread e as respeite. Este eh o caminho para se obter ajuda.
Em resposta a sua pergunta, não existe "a corretora entender". Se o código estiver adequado, a operação sera executada sem problemas. Caso tenha mais duvidas, abra uma nova thread e seja mais objetivo e especifico.
Reformulada;
Alguém pode me ajudar com o trecho do código onde o EA faz saída parcial em conta HEDGE?