Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
... afirmando o óbvio, se você quisesse fazer o acima descrito em um EA em vez de um roteiro [...]
Versão revisada, que pode ser usada para criar um EA em vez de um script simplesmente des-comentando o #define COMPILE_AS_EA. O código então tem OnTimer (e OnTick) em vez de OnStart.
A única outra mudança é que o código agora coloca os soquetes no modo sem bloqueios. Ele ainda pesquisa a disponibilidade de novos eventos de soquetes usando select(), mas agora evita o perigo de entrar em um estado de bloqueio se o select() estiver de alguma forma errado.
Versão revisada que [...]
Estou certo de que todos estão ansiosos por uma atualização sobre este [...
No contexto de uma EA - que agora é o padrão no código - acontece que é possível usar o WSAAsyncSelect() para fazer o manuseio da atividade do soquete por eventos. Isto pode muitas vezes empurrar a latência entre o envio e a recepção de mensagens abaixo do nível de milissegundos. A velocidade exata varia dependendo do que mais o MT4 está fazendo, mas é em média muito mais rápido, e nunca pior, do que apenas usar o timer.
Não é possível conseguir que a WSAAsyncSelect() acione OnTimer() ou OnTick() no EA. Por exemplo, WSAAsyncSelect() pode ser dito para disparar mensagens WM_TIMER, mas MT4 as ignora porque o ID do timer wparam do WSAAsyncSelect() não corresponde ao ID do timer que espera do EventSetMillisecondTimer().
No entanto, dizer à WSAAsyncSelect() para enviar WM_KEYDOWN faz disparar com sucesso OnChartEvent() no EA. Veja os comentários no código para detalhes completos de como esta adição funciona.
Para um pouco de diversão...
Lol. Incrível. Parabéns. Eu não pensei que fosse possível codificar estas funcionalidades no MQL.
Lol. Incrível. Parabéns. Eu não pensei que fosse possível codificar estas funcionalidades no MQL.
Meu instinto é sempre de fazer soquetes de servidor usando multi-tarefas, mas não consigo pensar em uma razão pela qual este código não seria viável e seguro para uso na vida real.
Há uma coisa na versão mais recente, acima, que não é a ideal. Em vez de colocar mais um grande bloco de código, vou descrevê-lo em seu lugar:
É uma pequena mudança no código, mas não quero colocar mais um grande bloco neste fórum quando apenas você estiver interessado.
Em vez de postar outro grande bloco de código [...]
Em segundos pensamentos...
Mais uma versão, com as seguintes alterações:
Em vez de publicar contribuições SRC tão longas, considere apenas anexar o arquivo em si. Eu sugeriria que você EDITAR suas contribuições mais longas, apagando as seções do SRC e apenas anexando o arquivo fonte.
Em vez de publicar contribuições SRC tão longas, considere apenas anexar o arquivo em si. Eu sugeriria que você EDITAR seus posts mais longos, apagando as seções do SRC e apenas anexando o arquivo fonte em seu lugar.
Muito obrigado por sua contribuição.
Mas, entre as muitas razões pelas quais não vou fazer isso está o fato de que o código acima funciona tanto no MT4 quanto no MT5. Se eu o carregasse como um anexo, ele teria que ser marcado erroneamente como .mq4 ou .mq5, quando na verdade funciona como ambos.
Mas, entre as muitas razões [...]
Outra das principais razões é o seguinte cenário, que poderia ter se aplicado ao PO:
Tanto quanto sei, nem os motores de busca nem a busca neste site podem procurar dentro de anexos. Assim, afixar o código como anexo torná-lo-ia invisível para uma busca como "mql4 bind listen htons".
Você diz regularmente às pessoas que elas deveriam ter feito uma busca ou consultado a documentação; estou tentando ajudar exatamente com isso.
(Como acontece, "mql4 bind listen htons" não encontra este tópico porque o Google não rasteja a página desde 14 de setembro. Mas deve começar a aparecer no Google em breve).
Muito obrigado por sua contribuição.
Mas, entre as muitas razões pelas quais não vou fazer isto está o fato de que o código acima funciona tanto no MT4 quanto no MT5. Se eu o carregasse como um anexo, ele teria que ser marcado erroneamente como .mq4 ou .mq5, quando na verdade ele funciona como ambos.
Pensando melhor...
Mais uma versão, com as seguintes mudanças:
OBRIGADO novamente jjc,
Neste momento estou com pressa e não tenho tempo para testá-lo, mas o farei na próxima semana e lhe falarei sobre isso. Acho que não terei nenhum problema para executá-lo, mas talvez eu lhe faça algumas perguntas. BTW: Por favor, não edite nenhum post; todos eles são perfeitos como são (sinto-me como em StackOverflow =)).