Discussão do artigo "Integração da MetaTrader 5 e Python: recebendo e enviando dados" - página 9
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
Olá, Maxim!
Estou um pouco avançado em meu conhecimento de Python, mas não consigo encontrar informações detalhadas sobre o acesso conjunto ao arquivo csv do Python e de um programa de terceiros, por exemplo, o mesmo Expert Advisor escrito em MQL5. Simplificando, o código Python grava periodicamente informações no arquivo csv, e o Expert Advisor MQL5 lê as informações dele e executa os comandos de que preciso. Esse acesso conjunto de ambos os lados é possível?
Atenciosamente, Vladimir.
Não, mas ambos os programas podem tentar abrir o arquivo se ele não estiver ocupado por outro programa. E eles devem fechá-lo após a leitura/gravação.
Não, mas ambos os programas podem tentar abrir um arquivo se ele não estiver ocupado por outro programa. E devem fechá-lo após a leitura/gravação.
Obrigado, Maxim, pela explicação, especialmente sobre o fechamento do arquivo após a leitura/gravação. Esse é o ponto que eu precisava entender.
Saudações, Vladimir.
Não, mas ambos os programas podem tentar abrir um arquivo se ele não estiver ocupado por outro programa. E devem fechá-lo após a leitura/gravação.
Olá, Maxim, levei esse ponto em consideração. Por favor, ajude-me a entender mais um ponto, a saber, a codificação de texto em um arquivo csv criado usando Python e a leitura subsequente desse texto por um Expert Advisor criado em MQL5. Analisei muitas informações no site da MQL5 e em outros recursos da Internet, mas não encontrei uma explicação clara. Em geral, o código do programa criado usando a linguagem Python abre um novo arquivo csv e grava nele as informações de que preciso. Para simplificar o ajuste, é escrita apenas uma palavra em russo, que na verdade foi extraída do site. A palavra no arquivo csv aberto é lida sem problemas, mas o Expert Advisor não entende a codificação dessa palavra. Isso é certo porque, ao escrever o EA (a propósito, consegui escrever o primeiro código independente!), usei um arquivo csv com o mesmo nome e escrevi a mesma palavra na célula A1, mas somente a partir do teclado. Tentei alterar tudo em ambos os códigos (quero dizer, no Python e no MQL5), mas nada funciona ainda.
Você pode me dizer qual codificação (encoding=?) usar no código Python:
e qual codificação (encoding=?) usar para o código MQL5:
para torná-los "amigos"? Estou mudando essas codificações há vários dias e não consigo pensar no que fazer em seguida. E há apenas um único ponto que impede o trabalho normal.
Talvez eu ainda não tenha encontrado todas as codificações para Python, mas o mais interessante é que, quando o código MQL5 tem a codificação FILE_ANSI, que é dada na linha acima, e quando eu escrevo a palavra, por exemplo, "buy" no teclado em um arquivo csv, então, depois de salvar esse arquivo, o Expert Advisor lê e funciona perfeitamente.
Às vezes eu penso: talvez não seja a codificação! Então, o que é?
Por favor, me ajude a entender qual é o motivo!
Atenciosamente, Vladimir.
P.S. Finalmente encontrei pelo menos uma explicação razoável: "No Python 3, a codificação padrão é UTF-8".
Para evitar problemas, é melhor gravar em um arquivo binário e converter a saída de volta para caracteres. Neste artigo, em minha opinião, isso é o que é feito no exemplo com soquetes. Ou seja, o sinalizador FILE_BIN
Para evitar problemas, é melhor gravar em um arquivo binário e converter a saída de volta para caracteres. Neste artigo, em minha opinião, isso é o que é feito no exemplo com soquetes. Ou seja, o sinalizador FILE_BIN
Oi Maxim, graças às suas dicas, encontrei essas informações na Internet: "Os arquivos binários, ao contrário dos arquivos de texto, armazenam informações como um conjunto de bytes. Para trabalhar com eles no Python, você precisa do módulo pickle incorporado ".
Em outras palavras, se escrevermos qualquer palavra no código do programa Python como um conjunto de bytes usando o módulo pickle instalado , alterando 'w' para 'wb' .
e, em seguida, em um Expert Advisor escrito em MQL5, definir o sinalizador FILE_BIN em vez do sinalizador FILE_ANSI , tudo deverá funcionar? Provavelmente, você não deve gravar em um arquivo csv, mas em um arquivo dat.
Muito obrigado, Maxim, pela dica, vou tentar hoje à noite!
Atenciosamente, Vladimir.Oi Maxim, graças à sua ajuda, encontrei essas informações na Internet: "Ao contrário dos arquivos de texto, os arquivos binários armazenam informações como um conjunto de bytes. Para trabalhar com eles no Python, você precisa do módulo pickle incorporado ".
Em outras palavras, se escrevermos qualquer palavra no código do programa Python como um conjunto de bytes usando o módulo pickle instalado , alterando 'w' para 'wb' .
e, em seguida, em um Expert Advisor escrito em MQL5, definir o sinalizador FILE_BIN em vez do sinalizador FILE_ANSI , tudo deverá funcionar? Provavelmente, você não deve gravar em um arquivo csv, mas em um arquivo dat.
Muito obrigado, Maxim, pela dica, vou tentar hoje à noite!
Atenciosamente, Vladimir.Não necessariamente, você pode simplesmente selecionar a codificação
st = b 'hello world'
ou
'helloworld '.encode('ascii')
e gravá-lo em um arquivo. Em seguida, tente lê-lo no mt5
Não é necessário, você pode simplesmente selecionar a codificação
st = b 'hello world
ou
'helloworld '.encode('ascii')
e gravá-lo em um arquivo. Em seguida, tente lê-lo no mt5
Mais uma vez, eu digo e não me cansarei de dizer um ENORME OBRIGADO, Maxim, e que Deus lhe conceda muitos anos de vida!
O mais importante para mim é que você me disse qual é a essência do problema, e achei a solução ainda mais fácil. Deixei tudo no Expert Advisor como estava ao testar o arquivo csv com a palavra na célula A1 inserida pelo teclado do computador. Mas para o código do programa escrito em Python, encontrei essa dica na Internet:
with open(save_file, 'w', encoding='cp1251', errors='replace', newline='') as save:Destaquei em vermelho o que estava faltando! Espero que essa linha também seja útil para alguém que esteja escrevendo código em Python!
Saudações, Vladimir.
Boa tarde.
Tenho um problema para resolver em python no matplotlib/plotly:
1. Há um OHLC para renderização na janela principal
2. Há dados para desenhar na subjanela
Como codificar para ter um desenho simples? me dê um código python simples
Estou tendo problemas com esse código:
Ele diz
Ainda sou novato em python. Você pode me dizer o que está errado?
E tenho um problema com esse código:
ele diz
Ainda sou novato em python. Você pode me dizer o que está errado?