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);
}
//+------------------------------------------------------------------+