在不同终端中运行的两个EA之间交换数据 - 页 2 12345678 新评论 kombat 2009.04.28 21:27 #11 由于EA在逐点的基础上处理事件,我已经确定了这个方向。 写一个和读另一个的区别,从理论上讲,在下一个刻度上... Andres 2009.05.13 22:34 #12 我想到了一个想法,通过注册表来交换数据 如何?创建一个密钥,删除一个密钥,所有相关的API似乎都在那里。我不知道它有多慢,但似乎被应用程序访问的部分可以一直在RAM中。 有没有人想过这个问题?只有对同一台机器上的终端才有效。 我将朝着这个方向挖掘:-)。 Иван 2009.05.14 20:59 #13 Andres писал(а)>> 我想到了一个想法,通过注册表来交换数据如何?创建一个密钥,删除一个密钥,所有相关的API似乎都在那里。我不知道它有多慢,但似乎被应用程序访问的部分可以一直在RAM中。 有没有人想过这个问题?只有对同一台机器上的终端才有效。 我将朝着这个方向挖掘:-)。 请给我一个与注册处合作的API的链接。 到目前为止,我正在考虑基于通过磁盘上的文件进行信息交流的变体。当然,这两个终端都在同一台电脑上工作。 我做了一些测试,在我看来,其速度足以在1秒内完成终端之间的数据交换,我认为这足以管理两个账户(买入和卖出账户)。 虽然,我最近工作很忙,所以我有几个星期没有处理这个问题了。 虽然我以前问过一个程序员朋友,但他警告我不要掺杂注册表来解决这个问题。他强烈建议我使用硬盘上的文件共享。 这就是我暂时停止的地方。一旦我有足够的空闲时间,我将尝试用文件实现这个变体。 BabyBear 2009.05.14 21:42 #14 http://yandex.ru/yandsearch?text=CreateFileMapping&stpar2=%2Fh0%2Ftm123%2Fs1&stpar4=%2Fs1 方便之处在于,在dll中实际上有一个对共享内存的引用。 这个地址可以作为一个结构地址。此外,你的想象力是唯一的限制 :) Ilnur Iksanov 2009.05.15 03:15 #15 solandr >> : 请给我一个与注册表合作的API的链接。 从注册表读取 的例子。 Andres 2009.05.15 14:40 #16 我已经写了一个小库,我的EA已经在通过注册表改变信息。事实上,它们是通过RAM改变的,没有读写到磁盘,我没有观察到。在MSDN中写到,最好不要把超过几百Kb的数据塞进注册表。 库的配置方式是,所有的键和参数都是在临时注册表区域创建的,不会写入永久注册表。重新启动后,这些钥匙就不见了。 一个BUT,该库只适用于字符串参数,长度不超过255个字符(MQL的限制)。但这已经很足够了。一般来说,注册表中的参数可以是不同的类型,而不仅仅是字符串,但在我看来,现在还不需要其他类型。现在我有两个通过注册表交换的EA,但可能需要更多:-)。另一个好处是,在Win API中,它可以连接到网络注册表。如果有人需要在同一网络中不同计算机上运行的EA之间交换信息,他们可以朝这个方向看。在我看来,它是快速、简单和可靠的,而且没有任何dlls和文件。你输入一个字符串,你得到一个字符串。 #include "RegLib.mqh" int hKey; int init() { // инициализируем дефайны InitRegDefines(); // создаём тестовый ключ hKey = CreateKey( HKEY_CURRENT_USER, "!MT4TestKey" ); // создаём поля по умолчанию SetStringValue( hKey, "Bid", "0.0" ); SetStringValue( hKey, "Ask", "0.0" ); return( 0 ); } int start() { // записываем цены в реестр SetStringValue( hKey, "Bid", DoubleToStr( Bid, Digits ) ); SetStringValue( hKey, "Ask", DoubleToStr( Ask, Digits ) ); // получаем цены в виде строк из реестра string BidStr = GetStringValue( hKey, "Bid" ); string AskStr = GetStringValue( hKey, "Ask" ); // выводим цены из реестра Print( "Bid = ", BidStr, " ", "Ask = ", AskStr ); } int deinit() { // закрываем ключ CloseKey( hKey ); return( 0 ); } 附加的文件: reglib.zip 4 kb Dmitry Fedoseev 2009.05.15 14:55 #17 Andres писал(а)>> 我想到了一个想法,通过注册表来交换数据如何?创建一个密钥,删除一个密钥,所有相关的API似乎都在那里。我不知道它有多慢,但似乎被应用程序访问的部分可以一直在RAM中。 有没有人想过这个问题?只有对同一台机器上的终端才有效。 我将朝着这个方向挖掘:-)。 你也可以尝试用灯泡来敲打钉子。这对一些人来说是有效的。 Виктор 2009.05.15 15:01 #18 Integer >> : 你也可以尝试用灯泡敲击钉子。有些人可以做到这一点。 但它很美,你不觉得吗?你也可以尝试使用操作系统的变量。 Dmitry Fedoseev 2009.05.16 06:54 #19 granit77 писал(а)>> 但它很美,你不同意吗?你也可以尝试使用操作系统的变量。 你也可以尝试设置系统时间。 BabyBear 2009.05.16 07:07 #20 :)))))))))))))) 12345678 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
由于EA在逐点的基础上处理事件,我已经确定了这个方向。
写一个和读另一个的区别,从理论上讲,在下一个刻度上...
我想到了一个想法,通过注册表来交换数据 如何?创建一个密钥,删除一个密钥,所有相关的API似乎都在那里。我不知道它有多慢,但似乎被应用程序访问的部分可以一直在RAM中。
有没有人想过这个问题?只有对同一台机器上的终端才有效。
我将朝着这个方向挖掘:-)。
我想到了一个想法,通过注册表来交换数据如何?创建一个密钥,删除一个密钥,所有相关的API似乎都在那里。我不知道它有多慢,但似乎被应用程序访问的部分可以一直在RAM中。
有没有人想过这个问题?只有对同一台机器上的终端才有效。
我将朝着这个方向挖掘:-)。
请给我一个与注册处合作的API的链接。
到目前为止,我正在考虑基于通过磁盘上的文件进行信息交流的变体。当然,这两个终端都在同一台电脑上工作。
我做了一些测试,在我看来,其速度足以在1秒内完成终端之间的数据交换,我认为这足以管理两个账户(买入和卖出账户)。
虽然,我最近工作很忙,所以我有几个星期没有处理这个问题了。
虽然我以前问过一个程序员朋友,但他警告我不要掺杂注册表来解决这个问题。他强烈建议我使用硬盘上的文件共享。
这就是我暂时停止的地方。一旦我有足够的空闲时间,我将尝试用文件实现这个变体。
http://yandex.ru/yandsearch?text=CreateFileMapping&stpar2=%2Fh0%2Ftm123%2Fs1&stpar4=%2Fs1
方便之处在于,在dll中实际上有一个对共享内存的引用。
这个地址可以作为一个结构地址。此外,你的想象力是唯一的限制 :)
请给我一个与注册表合作的API的链接。
从注册表读取 的例子。
我已经写了一个小库,我的EA已经在通过注册表改变信息。事实上,它们是通过RAM改变的,没有读写到磁盘,我没有观察到。在MSDN中写到,最好不要把超过几百Kb的数据塞进注册表。
库的配置方式是,所有的键和参数都是在临时注册表区域创建的,不会写入永久注册表。重新启动后,这些钥匙就不见了。
一个BUT,该库只适用于字符串参数,长度不超过255个字符(MQL的限制)。但这已经很足够了。一般来说,注册表中的参数可以是不同的类型,而不仅仅是字符串,但在我看来,现在还不需要其他类型。现在我有两个通过注册表交换的EA,但可能需要更多:-)。另一个好处是,在Win API中,它可以连接到网络注册表。如果有人需要在同一网络中不同计算机上运行的EA之间交换信息,他们可以朝这个方向看。在我看来,它是快速、简单和可靠的,而且没有任何dlls和文件。你输入一个字符串,你得到一个字符串。
我想到了一个想法,通过注册表来交换数据如何?创建一个密钥,删除一个密钥,所有相关的API似乎都在那里。我不知道它有多慢,但似乎被应用程序访问的部分可以一直在RAM中。
有没有人想过这个问题?只有对同一台机器上的终端才有效。
我将朝着这个方向挖掘:-)。
你也可以尝试用灯泡来敲打钉子。这对一些人来说是有效的。
你也可以尝试用灯泡敲击钉子。有些人可以做到这一点。
但它很美,你不觉得吗?你也可以尝试使用操作系统的变量。
但它很美,你不同意吗?你也可以尝试使用操作系统的变量。
你也可以尝试设置系统时间。