为MT制作一个Python交易系统。 - 页 3 12345678910...17 新评论 Ivan Negreshniy 2018.08.01 19:20 #21 Yuriy Asaulenko:那是另一个话题)。 我不把一个团队放在一起。我自己走路,做我认为正确和有趣的事情,不做任何承诺。 如果有人想和我约会,也不反对,也不承诺。 我不是在谈论团队,而是在谈论EXE应用程序形式的引擎,将Python和R与MQL连接起来,这是我在那个主题中建议的。 Yuriy Asaulenko 2018.08.01 19:32 #22 Ivan Negreshniy: 我说的不是团队,而是EXE应用程序形式的引擎,将Python和R与MQL连接起来,这是我在那个主题中建议的。你会得到一个EXE--在Python中没有问题。如果这个垃圾场里有钻石,他们的搜索就有问题了。除非SanSanych告诉我)。 我主要与神经网络打交道,没有R就有足够的内容。 但是,实际上,这个交互方法计划是通用的,可能你也可以把它用于R。 Yuriy Asaulenko 2018.08.01 19:33 #23 现在我们有了一个预建的应用程序,是时候在终端和Python之间交换数据了。对于初学者,我们将选择最简单的一种交换方式--通过文件进行数据交换。现在很多人都会在他们的墨水瓶中嗤之以鼻,而且是徒劳的。所以让他们)。1.在应用程序的 构建和调试过程中,文件共享是最有效的,因为它不需要努力升级。而一旦应用程序建成,它就可以被其他东西取代。2.在大多数现成的TC中,文件交换速度是绰绰有余的。50-100毫秒。对你来说还不够吗?3.当通过RAM-磁盘交换文件时,交换率达到1.5GByte/s。根本不可能测量延迟。总而言之,把它吐出来,忘掉对手)。好吧,实际上,如果我们或这个话题不负众望,计划在最后阶段进行另一次交流)。我们将通过CSV文件与终端交换。到目前为止,有一种方式--从终端到应用程序。为了避免利益冲突,我们将使用信号文件。所以,让DataTS.csv作为数据文件,STS.s作为信号文件。终端将数据写入DataTS.csv,并在写入后,创建一个空的信号文件STS.s。应用程序检查STS.semaphore文件的存在,然后读取DataTS.csv文件,然后删除STS.semaphore文件。然后终端检测STS.s信号文件的消失,然后才将新的数据写入DataTS.csv文件中。可能的变化,取决于Phyton和MT文件功能--还没有看。然而,不是一下子就能完成的,首先我们需要与Python合作,并确定其能力。这就是我们要做的。 Aleksey Terentev 2018.08.02 07:52 #24 接口。https://blog.darwinex.com/zeromq-interface-python-r-metatrader4/ 数据。https://www.quandl.com/tools/python 指标,计算。https://mrjbq7.github.io/ta-lib/ 堆积的马拉。https://github.com/huanhock?tab=repositories 关于自行车的发明=)。https://ria.ru/entertainment/20130824/838259663.html Yuriy Asaulenko 2018.08.03 19:42 #25 自从我上次访问以来,有一些变化。该应用程序现在已全面运作--上一篇文章中描述的所有内容都已实现。所有的按钮现在都能工作,文件交换也已实现。- 清理按钮可以清除输出窗口。- 发送按钮将输入窗口的一行发送到输出窗口。- 开始 "按钮可开启文件交换。- 停止按钮停止文件交换。这很容易检查。我们创建C:\PyTS文件夹,放置数据文件--DFile.csv,放置信号文件--SFile.tx。我们的Python程序检测信号文件,读取数据文件,在输出窗口显示,并删除信号文件。现在你可以改变DFile.csv中的数据并创建一个新的semaphore文件,程序将读取并输出新的数据。你可以编写一个简单的MQL-程序,将我们程序中的读取文件夹改为MT写入的文件夹,然后你可以评估交换的速度,可能的数据差距和其他许多事情。唯一负责文件交换的函数是FileExchange()。它是在一个额外的线程中实现的--定时器线程。我们可以有几十个这样的线程和函数,它们不会以任何方式影响应用程序--也就是说,我们可以有几十个平行的、独立的数据交换通道供我们使用。现在,计时器被设置为10.0s--你可以把它设置为0.001s,见文档。好吧,如果你真的想测量速度和其他特性--删除交换路径中的debugprint()函数--它们大大降低了速度。Python程序代码在附件中。像往常一样,将其重命名为.py 附加的文件: PyTS_1.0.txt 3 kb Yuriy Asaulenko 2018.08.04 18:00 #26 我们谈到了交换CSV文件,但1.0版本(见上一篇文章)只是打开和读取文件。下一个版本--1.01,经过一些修改,可以读取CSV文件并将其存储在InData变量中。 实际上是所有的修改。 def FileExchange(): global Change if Change==True: if os.path.exists(SFile): print("SFile.txt is") if os.path.exists(DFile): print("DFile.csv is") InData = csv.reader(open(DFile, 'r')) data_read = [row for row in InData] print(data_read) os.remove(SFile) else: print("DFile.csv no") else: print("SFile.txt no") print('Вывод таймера') timer =threading.Timer(10.0,FileExchange) timer.start() 只改变了3行+csv库连接。 还可以控制InData变量的CSV内容的输出。 In [18]: [['04.08.2018 14:00', ' 1300', ' 1295', '1310', '1305', '100'], ['04.08.2018 14:10', ' 1307', ' 1297', '1320', '1315', '150']] 现在,行的值可以通过索引、类型--行、列来获得。 嗯,还有代码本身--见附件。 附加的文件: PyTS_1.01.txt 3 kb Grigoriy Chaunin 2018.08.05 04:57 #27 Yuriy Asaulenko:我们谈到了交换CSV文件,但1.0版本(见上一篇文章)只是打开和读取文件。下一个版本--1.01,经过一些修改,可以读取CSV文件并将其存储在InData变量中。 实际上是所有的修改。 只改变了3行+csv库连接。 还可以控制InData变量的CSV内容的输出。 现在,行的值可以通过索引、类型--行、列来获得。 嗯,还有代码本身--见附件。 使用文件共享并不是最好的解决方案。文件操作非常缓慢。你必须连接一个RAM磁盘来进行这样的交换。 Vladimir 2018.08.05 13:25 #28 Grigoriy Chaunin: 使用文件进行交换并不是最好的解决方案。文件操作非常缓慢。你必须连接一个RAM磁盘来进行这样的交换。 你能给出文件交换的性能特点(有什么)和所需的任务(需要什么)吗? 而我,会说,他们的速度非常快,而不是慢。如果没有数字特征,你和我的声明都是毫无根据的,因此在手头的任务中没有意义。你需要文件交换和问题的需求这两方面的特征,只有在比较之后,你才能得出有效的结论。既然Yuri Asaulenko决定文件是合适的,我想他更清楚计划的数据传输量和处理时间。 一般来说,磁盘文件比易失性存储器有很大的优势--它们存储在关闭的磁盘上,可以在一周或一年后被访问。要控制,要分析,要验证,只是要观察。 Yuriy Asaulenko 2018.08.05 19:07 #29 Grigoriy Chaunin: 使用文件来交换不是最好的解决方案。文件操作非常缓慢。你必须连接一个RAM磁盘来进行这样的交换。这个问题已经在这个主题中讨论过了,在以前的帖子中,包括必要时可能使用RAM-Disk。 关于交易、自动交易系统和测试交易策略的论坛 如何用Python制作MT的交易系统。 Yuriy Asaulenko, 2018.08.01 19:33 现在我们有了应用程序的蓝图,是时候用Python进行终端的数据交换了。首先,我们将选择最简单的交换类型--通过文件进行数据交换。现在,许多人将在他们的墨水瓶中窃笑,而且是徒劳的。所以让他们)。1.在应用程序的 构建和调试过程中,文件共享是最有效的,因为它不需要努力升级。而一旦应用程序建成,它就可以被其他东西取代。2.在大多数现成的TC中,文件交换速度是绰绰有余的。50-100毫秒。对你来说还不够吗?3.当通过RAM-磁盘交换文件时,交换率达到1.5GByte/s。根本不可能测量延迟。总而言之,把它吐出来,忘掉对手)。好吧,实际上,如果我们或这个话题不负众望,计划在最后阶段进行另一次交流)。 也是在该主题的第一个帖子中。 Yuriy Asaulenko 2018.08.05 19:17 #30 我提出了PyTS 1.02的新版本。这个版本在功能上等同于1.01版本,但从代码中删除了不必要的print() 控件,并开始实施类的方法(列宁写道--方法必须是基于类的)--CSV文件的处理被完全分配给类--cCSVJob。 在附件中的Zip-file中,你还可以找到该程序的所有以前的版本,以及在PyTS文件夹中的测试用源数据的必要文件。 附加的文件: PyTS.zip 6 kb 12345678910...17 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
那是另一个话题)。
我不把一个团队放在一起。我自己走路,做我认为正确和有趣的事情,不做任何承诺。
如果有人想和我约会,也不反对,也不承诺。
我说的不是团队,而是EXE应用程序形式的引擎,将Python和R与MQL连接起来,这是我在那个主题中建议的。
你会得到一个EXE--在Python中没有问题。如果这个垃圾场里有钻石,他们的搜索就有问题了。除非SanSanych告诉我)。
我主要与神经网络打交道,没有R就有足够的内容。
但是,实际上,这个交互方法计划是通用的,可能你也可以把它用于R。
https://blog.darwinex.com/zeromq-interface-python-r-metatrader4/
数据。
https://www.quandl.com/tools/python
指标,计算。
https://mrjbq7.github.io/ta-lib/
堆积的马拉。
https://github.com/huanhock?tab=repositories
关于自行车的发明=)。
https://ria.ru/entertainment/20130824/838259663.html
我们谈到了交换CSV文件,但1.0版本(见上一篇文章)只是打开和读取文件。下一个版本--1.01,经过一些修改,可以读取CSV文件并将其存储在InData变量中。
实际上是所有的修改。
只改变了3行+csv库连接。
还可以控制InData变量的CSV内容的输出。
现在,行的值可以通过索引、类型--行、列来获得。
嗯,还有代码本身--见附件。
我们谈到了交换CSV文件,但1.0版本(见上一篇文章)只是打开和读取文件。下一个版本--1.01,经过一些修改,可以读取CSV文件并将其存储在InData变量中。
实际上是所有的修改。
只改变了3行+csv库连接。
还可以控制InData变量的CSV内容的输出。
现在,行的值可以通过索引、类型--行、列来获得。
嗯,还有代码本身--见附件。
使用文件进行交换并不是最好的解决方案。文件操作非常缓慢。你必须连接一个RAM磁盘来进行这样的交换。
而我,会说,他们的速度非常快,而不是慢。如果没有数字特征,你和我的声明都是毫无根据的,因此在手头的任务中没有意义。你需要文件交换和问题的需求这两方面的特征,只有在比较之后,你才能得出有效的结论。既然Yuri Asaulenko决定文件是合适的,我想他更清楚计划的数据传输量和处理时间。
一般来说,磁盘文件比易失性存储器有很大的优势--它们存储在关闭的磁盘上,可以在一周或一年后被访问。要控制,要分析,要验证,只是要观察。
使用文件来交换不是最好的解决方案。文件操作非常缓慢。你必须连接一个RAM磁盘来进行这样的交换。
这个问题已经在这个主题中讨论过了,在以前的帖子中,包括必要时可能使用RAM-Disk。
关于交易、自动交易系统和测试交易策略的论坛
如何用Python制作MT的交易系统。
Yuriy Asaulenko, 2018.08.01 19:33
我提出了PyTS 1.02的新版本。这个版本在功能上等同于1.01版本,但从代码中删除了不必要的print() 控件,并开始实施类的方法(列宁写道--方法必须是基于类的)--CSV文件的处理被完全分配给类--cCSVJob。
在附件中的Zip-file中,你还可以找到该程序的所有以前的版本,以及在PyTS文件夹中的测试用源数据的必要文件。