Socket between MetaTrader 5 and Python

72 Views Asked by At

I have these two codes, but Metatrader 5 is giving me error 4014. I'm using a Mac M1, what could it be? Why don't I have access?

The network firewall is turned off; I don't know if it has anything to do with Metatrader 5 being simulated on Windows. I need to connect the two with a socket to receive stock data because the Metatrader 5 Python library only works on Windows

import socket

def main():
    host = '127.0.0.1'  # Endereço IP do servidor
    port = 12345  # Porta que o servidor está ouvindo

    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.bind((host, port))
    server_socket.listen(1)
    print("Servidor ouvindo em {}:{}".format(host, port))

    conn, addr = server_socket.accept()
    print("Conexão de: " + str(addr))

    while True:
        data = conn.recv(1024).decode('utf-8')
        if not data:
            break
        print("Do MT5: " + data)
        conn.send(data.encode('utf-8'))  # Ecoando os dados recebidos

    conn.close()


if __name__ == '__main__':
    main()

MT5

    //+------------------------------------------------------------------+
    //|                                                     MT5Client.mq5 |
    //|                        Copyright (c) MetaQuotes Software Corp.   |
    //|                                        https://www.mql5.com      |
    //+------------------------------------------------------------------+
    #property script_show_inputs

    input string server_ip   = "127.0.0.1";  // Endereço IP do servidor
    input int    server_port = 12345;        // Porta do servidor

    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
     int socket = SocketCreate();
    if(socket == INVALID_HANDLE)
     {
      Print("Erro ao criar o socket: ", GetLastError());
      return;
     }

   if(!SocketConnect(socket, server_ip, server_port, 10000))  // Timeout em 10 segundos
     {
      Print("Erro ao conectar ao servidor: ", GetLastError());
      SocketClose(socket);
      return;
     }

   string message = "Olá, servidor!";
   uchar send_data[];
   StringToCharArray(message, send_data);

   if(!SocketSend(socket, send_data, ArraySize(send_data)))
     {
      Print("Erro ao enviar dados: ", GetLastError());
      SocketClose(socket);
      return;
     }

   uchar receive_data[1024];
   int received = SocketRead(socket, receive_data, 0, ArraySize(receive_data));

   if(received > 0)
     {
      string received_message = CharArrayToString(receive_data, 0, received);
      Print("Do servidor: ", received_message);
     }
   else if(received < 0)
     {
      Print("Erro ao ler dados: ", GetLastError());
     }

   SocketClose(socket);
  }
  //+------------------------------------------------------------------+
0

There are 0 best solutions below