Discussão do artigo "Trabalhando Com Soquetes em MQL, ou como se tornar um provedor de sinal" - página 2
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
Este é um fórum para programação de rede de baixo nível? )))
Quem quiser aprender e usar tecnologias cliente-servidor em
- copiadoras
- boletins informativos
- distribuição de sinais
- troca de informações de negociação
ele toma nota e usa.
mas não no seu caso, você está apenas fora do circuito,
portanto, sinta-se à vontade para passar por aqui.
Vou excluir o flud.
o artigo revela novas possibilidades, não faz um teste de seus conhecimentos.
Quem quiser aprender e usar tecnologias cliente-servidor em
- copiadoras
- boletins informativos
- distribuição de sinais
- troca de informações de negociação
ele toma nota e usa.
mas não no seu caso, você está apenas fora do circuito,
portanto, sinta-se à vontade para passar por aqui.
Flooding será excluído.
muito bem feito, limpo, sem pressa,
o mapeamento dessas estúpidas estruturas de soquete para a base MQL.
é muito claro e claro. aqui https://www.mql5.com/pt/articles/1361.
também sobre o mesmo tópico de soquete, mas talvez muito complicado,
para tarefas simples, a abordagem proposta pelo autor é preferível...
obrigado ao autor, para mim, por exemplo, é muito relevante para o projeto atual, vou usá-lo...
Existe alguma maneira de fazer o mesmo no mql4 sem usar dlls de terceiros?
Sim. Todos os códigos fornecidos no artigo são reproduzidos de forma semelhante no mql4, mas você ainda precisa usar uma dll do Windows.
Não entendo por que há tanto ceticismo em massa quando uma pessoa compartilha um assunto tão sério. Será que é inveja pelo fato de alguém saber e outra pessoa nem sequer saber do que se trata?
Especialmente porque agora todos têm a oportunidade de entender o assunto.
Não entendo por que há tanto ceticismo em massa quando uma pessoa compartilha um assunto tão sério. Será que é inveja pelo fato de alguém saber e outra pessoa nem sequer saber do que se trata?
Especialmente porque agora todos têm a oportunidade de entender o assunto.
O código do artigo está errado. Você não leva em conta os alinhamentos nas estruturas de forma alguma.
O tamanho de uma estrutura no x64 é um cálculo teórico com base na suposição de que os alinhamentos de ponteiros == 8 (8 é o mais provável. Mas, por exemplo, alignof(double) em estruturas == 4 e fora == 8. É por isso que não tenho 100% de certeza). Mas mesmo que seja 4, o tamanho da estrutura em x64 será 404 em vez de 408. De qualquer forma, você estourou o buffer em WSData tanto em x86 quanto em x64. Antes de escrever um artigo, você deve fazer as medições mais simples de sizeof() e especificar explicitamente a quantidade de bits do sistema para o qual o código foi escrito (já que você duplicou as estruturas do sistema). Não estou falando do endereço inicial não alinhado da estrutura. Não verifiquei o código inteiro, talvez haja problemas com outras estruturas também.A propósito, se alguém da equipe de MKL vir a mensagem: todos os seus endereços estão desalinhados, por quê? Os processadores modernos são inteligentes o suficiente e todos os modelos serão capazes de ler os dados? Uma pequena taxa na forma de perda de desempenho, mas nada além disso (nada como um travamento).
Mas não estou muito certo. Em MQL, o tamanho de WSData será muito maior do que o necessário (lpVendorInfo[] é uma matriz dinâmica com tamanho em torno de 50, não um ponteiro). Portanto, o código deve funcionar corretamente. Mas isso é um acidente, você teve sorte, e não suposições teóricas corretas. A estrutura em si no MKL não é válida; é melhor criar uma matriz de tamanho suficiente e não declarar nada. Se você tivesse escrito:
você teria recebido um erro.sim, em MQL as estruturas são alinhadas https://www.mql5.com/pt/docs/basis/types/classes
A julgar pelo conteúdo do WinSock2.h, a estrutura WSAData está sem o #pragma pack(1), portanto, seu tamanho, como você disse, pode ser maior que µl.
Mas posso dizer que ou algo está errado ou esses dados não eliminam a pilha, mas todo o software mcl com esses soquetes funciona de forma estável e sem perdas por meses sem recarregar o terminal.
Seria bom descobrir tudo até o fim.
E não se preocupe com o alinhamento ou com o local onde o compilador coloca os bytes extras. De qualquer forma, você não está acessando nenhum campo, então qual é o motivo dessa dor de cabeça de tentar declarar uma estrutura?