Discussão do artigo "WebSocket para MetaTrader 5" - página 3

 
Renat Fatkhullin:

Não tenho tempo agora, mas devo criar um conjunto de implementações de CSocketRaw, CSocketTLS e CSocketHTTP na biblioteca MQL5 padrão.

Se eu tiver 8 horas de tempo livre, farei isso.

Obrigado, estou aguardando!

 
Renat Fatkhullin:

Não tenho tempo agora, mas devo criar um conjunto de implementações de CSocketRaw, CSocketTLS e CSocketHTTP na biblioteca MQL5 padrão.

Se eu tiver 8 horas de tempo livre, farei isso.

É desejável começar com algo simples, mas que realmente funcione, por exemplo, para obter uma resposta de wss://echo.websocket.org.

 
Você conseguiu se conectar via WSS?
 

Bom trabalho @Francis Dube, obrigado!

É possível criar um serviço MQL5 que atue como servidor WebSocket? Você tem alguns exemplos?

 
Renat Fatkhullin:


A pergunta não está relacionada ao artigo, mas sim à função de leitura de rede.

Medi a execução da função SocketTlsReadAvailable()

double avgDelay = 0.0;
double it = 0.0;

//-----------------------------------------------------------------------------
void Recv()
{
   ulong start = GetMicrosecondCount();
     
   int qtyByte = SocketTlsReadAvailable(socket, buf, len);     
         
   double delay = (GetMicrosecondCount()-start)/1000.0;
         

   avgDelay += delay;
   PrintFormat("Bytes received %d   Total time: %.3f ms   Avg time: %.3f ms", qtyByte, delay, avgDelay/++it);
      
}
2021.08.21 17:34:35.110 Test    Bytes received 142   Total time: 2.860 ms   Avg time: 11.824 ms
2021.08.21 17:34:35.111 Test    Bytes received 852   Total time: 1.131 ms   Avg time: 11.819 ms
2021.08.21 17:34:35.113 Test    Bytes received 710   Total time: 1.874 ms   Avg time: 11.815 ms
2021.08.21 17:34:35.114 Test    Bytes received 142   Total time: 0.668 ms   Avg time: 11.810 ms
2021.08.21 17:34:35.117 Test    Bytes received 142   Total time: 2.551 ms   Avg time: 11.805 ms
2021.08.21 17:34:35.132 Test    Bytes received 0     Total time: 15.564 ms  Avg time: 11.807 ms
2021.08.21 17:34:35.148 Test    Bytes received 0     Total time: 15.616 ms  Avg time: 11.809 ms
2021.08.21 17:34:35.149 Test    Bytes received 0     Total time: 1.383 ms   Avg time: 11.804 ms
2021.08.21 17:34:35.151 Test    Bytes received 710   Total time: 1.855 ms   Avg time: 11.799 ms
2021.08.21 17:34:35.164 Test    Bytes received 142   Total time: 12.117 ms  Avg time: 11.800 ms
2021.08.21 17:34:35.179 Test    Bytes received 0     Total time: 15.530 ms  Avg time: 11.801 ms
2021.08.21 17:34:35.195 Test    Bytes received 0     Total time: 15.542 ms  Avg time: 11.803 ms
2021.08.21 17:34:35.210 Test    Bytes received 0     Total time: 15.570 ms  Avg time: 11.805 ms
2021.08.21 17:34:35.218 Test    Bytes received 0     Total time: 7.363 ms   Avg time: 11.803 ms
2021.08.21 17:34:35.226 Test    Bytes received 142   Total time: 8.143 ms   Avg time: 11.801 ms
2021.08.21 17:34:35.242 Test    Bytes received 0     Total time: 15.549 ms  Avg time: 11.803 ms
2021.08.21 17:34:35.257 Test    Bytes received 0     Total time: 15.554 ms  Avg time: 11.804 ms
2021.08.21 17:34:35.273 Test    Bytes received 0     Total time: 15.351 ms  Avg time: 11.806 ms
***
***
***


Por que o tempo de execução da função é tão grande?
É possível otimizar a função de leitura do seu lado?

 

Olá, ótimo trabalho,

Acabei de testar seu EA e ele se conectou ao meu servidor websocket em C#, porém, depois de se conectar e enviar a mensagem, a guia do diário apresenta este erro

2022.02.08 07:33:36.176 Websocketclient_test (XAUUSD,M15) [MQL error ID: 5270][Is Socket Readable ][Line: 238][Function: CSocket::Readable]


Alguma ideia de como posso consertar isso? Além disso, enviar de volta para o Mt4 parece não ter funcionado

 

@Francis Dube Obrigado por essa biblioteca. Tive que fazer uma pequena alteração para que ela funcionasse com URLs após /, por exemplo, /ws/.

No entanto, acho que ela não é estável e nem sempre funciona, enquanto sua versão WinAPI funciona muito melhor.

Como essa é uma biblioteca nativa, você tem uma versão aprimorada com os problemas de estabilidade corrigidos?

Muito obrigado

 
Renat Fatkhullin biblioteca padrão MQL5.

Haverá 8 horas de tempo livre, eu farei isso.

Já se passaram dois anos e ainda não obtive resposta.

 

Essa função não pode ser usada como arquivos de mapeamento de memória?

Para que não tenhamos que reescrever o código e usar uma solução pronta.

É claro que isso é fantástico, mas essa função deveria ser assim: gravar informações fora do terminal.

 
Racheal Samson #:

Já se passaram dois anos e ainda não obtivemos resposta.

Portanto, os prometidos 3 anos de espera... Não é muito tempo agora - um ano de espera ))