我试图用MQL5构建一个Maven顾问,它实际上有两个部分:
第一部分是一个c代码,它产生命令(买,卖)并将其写入文本文件。第二部分是MQL5代码,它旨在打开提到的文本文件,从中读取命令并执行它。我的问题是,由于他们必须几乎同时访问文本文件,有时其中一个试图打开文本文件,而另一个仍在使用它并且没有关闭它。在这些点上,程序返回错误,因为一个部分不能打开文本文件并且一切停止。
我的问题是如何解决这个问题?MQL5可以读取命令行吗?这样我就可以打印命令行中的命令并让MQL5读取它们?或者有什么方法可以解决这个同时访问的问题吗?
C程序会不断检查文本文件是否被编辑。一旦文本文件被编辑,它会打开它并从中读取数据。问题是,数据几乎每秒都会被不断写入文本文件。因此,在MQL程序试图在文本文件中写入新数据的过程中,C++程序仍会从文件中阅读旧数据。
1条答案
按热度按时间kd3sttzy1#
尽管我个人认为c++已经过时了,但我可能错了。
我个人要求C#和mql 5之间做些什么,也可以放到不同的mql 5 EA中一起交流。
对于EA之间的通信,GlobalVariables将非常好!
**回到你的问题:**你可以使用一个简单的技巧。创建一个文件来锁定你的Textfile.txt。
解释:C将检查是否存在一个名为myMQL5.lck的文件如果这个文件存在,C将每毫秒检查一次,直到它不存在为止.然后C创建一个名为myC ++ .lck的文件,C打开writer.
如果c写完了,它会删除文件myC ++ .lck。
MQL 5端也是如此...
这就是我的解决办法。但我永远不会每一秒钟都写...只是为了防止错误。
另一种工作方式是:从c创建出每次一个新的文件与时间戳结束。如果MQL 5读取一个文件可以直接删除这一个结束。
使用下一个文件执行下一个循环...
只是一些想法...如果我的答案给予你正确的方向,请标记为“已解决的答案”