from MetaTrader5 import *
from datetime import date
import pandas as pd
import matplotlib.pyplot as plt
# Initializing MT5 connection
MT5Initialize()
MT5WaitForTerminal()
print(MT5TerminalInfo())
print(MT5Version())
它说
Traceback (most recent call last):
File "C:/Programs/PycharmProjects/nc/main.py", line 8, in <module>
MT5Initialize()
NameError: name 'MT5Initialize' is not defined
Process finished with exit code 1
你好 马克西姆
我的 Python 知识有点高深,但我找不到关于从 Python 和第三方程序(例如,用 MQL5 编写的相同 Expert Advisor)联合访问 csv 文件的详细信息。简单地说,Python 代码会定期向 csv 文件写入信息,而MQL5 Expert Advisor 会从中读取信息并执行我需要的命令。这种双方联合访问是否可行?
敬上,弗拉基米尔。
不可能,但如果文件未被其他程序占用,两个程序都可以尝试打开文件。读/写完成后,它们都应关闭文件。
不是,但如果文件未被其他程序占用,这两个程序都可以尝试打开文件。并且在读取/写入后应关闭文件。
谢谢你的解释,特别是关于读/写后 关闭文件 的解释。这是我需要理解的一点。
再见,弗拉基米尔
不是,但如果文件未被其他程序占用,这两个程序都可以尝试打开文件。并且在读取/写入后应关闭文件。
你好,马克西姆,我已经考虑到了这一点。请再帮我弄明白一点,即使用 Python 创建的 csv 文件中的文本编码以及随后在 MQL5 中创建的 Expert Advisor 对这些文本的读取。我查看了 MQL5 网站和其他互联网资源上的大量信息,但没有找到明确的解释。一般来说,使用 Python 语言创建的程序代码会打开一个新的 csv 文件,并将我需要的信息写入其中。为简化调整,在写入一个俄语单词时,实际上是从网站上拼写出来的。我可以顺利读取打开的 csv 文件中的单词,但 Expert Advisor 无法理解这个单词的编码。这是肯定的,因为在编写 EA 时(顺便说一下,我成功地编写了第一个独立代码!),我使用了一个同名的 csv 文件,并在 A1 单元格中写入了相同的单词,但只能用键盘输入。我尝试更改两个代码中的所有内容(我指的是 Python 和 MQL5),但都没有成功。
您能告诉我 Python 代码使用什么编码 (encoding=?) 吗?
以及 MQL5 代码使用什么编码(encoding=?)
使它们成为 "朋友"?我已经改变这些编码好几天了,但我不知道下一步该怎么做。而阻碍正常工作的只有一点。
也许我还没有找到 Python 的所有编码,但最有趣的 是,当 MQL5 代码使用FILE_ANSI 编码(即上面一行给出的编码)时,当我在 csv 文件中用键盘输入单词 "buy"(买入)时,保存此文件后,Expert Advisor 可以完美地读取并运行。
有时我在想:也许这根本不是编码的问题!那到底是什么原因呢?
请帮我找出原因!
敬上,弗拉基米尔。
附注:我终于找到了至少一个合理的解释:"在 Python 3 中,默认编码是 UTF-8"。
因此,为避免出现问题,最好先写入二进制文件,然后将输出转换为字符。在本文中,我认为使用套接字的示例就是这样做的。也就是说,FILE_BIN 标志
因此,为避免出现问题,最好先写入二进制文件,然后将输出转换为字符。在本文中,我认为使用套接字的示例就是这样做的。也就是说,FILE_BIN 标志
你好,马克西姆,感谢你的提示,我在互联网上找到了这些信息:"二进制文件与文本文件不同,它以一组字节的形式存储信息。要在 Python 中处理它们,您需要使用内置的pickle 模块"。
换句话说,如果我们使用已安装的pickle 模块将 Pyhon 程序代码中的任何单词写成一组字节,将"w " 改为"wb" 。
然后在用 MQL5 编写的 Expert Advisor 中设置 FILE_BIN 标志,而不是 FILE_ANSI 标志 ,一切都能正常工作吗?也许您不应该写入 csv 文件,而应该写入 dat 文件。
非常感谢 Maxim 的提示,我今晚就试试!
你好,马克西姆,多亏你的帮助,我在互联网上找到了这些信息:"与文本文件不同,二进制文件以字节集的形式存储信息。要在 Python 中处理它们,需要使用内置的pickle 模块"。
换句话说,如果我们使用已安装的pickle 模块将 Pyhon 程序代码中的任何单词写成一组字节,将"w " 改为"wb" 。
然后在用 MQL5 编写的 Expert Advisor 中设置 FILE_BIN 标志,而不是 FILE_ANSI 标志 ,一切都能正常工作吗?也许您不应该写入 csv 文件,而应该写入 dat 文件。
非常感谢 Maxim 的提示,今晚我就试试!
不一定,您可以选择编码
st = b 'hello world'
或
helloworld'.encode('ascii')
并将其写入文件。然后尝试在 mt5 中读取
您不必这样做,只需选择编码即可
st = b 'hello world
或
helloworld'.encode('ascii')
并将其写入文件。然后尝试在 mt5 中读取
马克西姆,我再次向你表示衷心 的感谢,上帝保佑你长命百岁!
对我来说,最重要的是您告诉了我问题的本质,让我更轻松地找到了解决方案。在测试 csv 文件时,我保留了 Expert Advisor 中的所有内容,A1 单元格中的单词是用电脑键盘输入的。但对于用 Python 编写的程序代码,我在互联网上找到了这个提示:
with open(save_file, 'w', encoding='cp1251', errors='replace', newline='') as save:我用红色标出了缺少的内容!我希望这一行也能对用 Python 编写代码的人有所帮助!
弗拉基米尔
下午好。
我有一个问题要在 matplotlib/plotly 中用 python 解决:
1.主窗口中有一个用于渲染的 OHLC
2.子窗口中有要绘制的数据。
如何编写简单绘图的代码? 给我一个简单的 python 代码
我在处理这个代码时遇到了麻烦:
它说
我还是 python 的新手。你能告诉我问题出在哪里吗?
我对这段代码有意见:
它说
我还是 python 的新手。你能告诉我问题出在哪里吗?