将数据从一个MT4客户端传递到另一个客户端
1 页面的第 525 页 123 ... 上一个上一个
Results 1 to 10 of 41

Thread: 将数据从一个MT4客户端传递到另一个客户端

  1. #1
    我的目标是将数据从一个terminal.exe进程传输到另一个进程....

    我不想使用文本文件,因为可能发生冲突....

    我的第一个想法是创建一个具有共享内存空间的DLL,并将其导入每个MT4终端....然后从一个EX4读取并用另一个写入...


    对于任何使用过Terranin的MT4复印机的人来说,他已经找到了解决问题的方法......但他对PM的反应对我来说太复杂了。

    救命

  2. #2
    我也有同样的问题 - 首先我尝试命名管道,但无法让它们轻松工作;现在我使用ramdisk并只是共享文本文件。但是我想开始使用套接字 - 是否有人拥有使用套接字的dll的框架代码? PS:无论谁说他们没有视觉c 并且只能使用Dev C ...有一个VC 的免费版本叫做VC express我相信,google it ..

  3. #3
    您无法直接在DLL中创建共享内存空间。有几种方法可以让DLL相互通信。这取决于你是否想要双向com,以及他们需要交谈的频率。最简单的方法包括:1)在DLL中打开套接字,通过TCP或其他协议进行通信。 (可能最简单,如果MT4应用程序位于局域网上的不同计算机上或超过inet)2)有一个MT4使用创建“辅助”窗口(可见或不可见)的DLL,然后直接从MT4使用SendMessage实现WM_COPYDATA消息或来自另一个DLL。如果这超出了你的范围,那么你可以使用磁盘文件来传递数据,如果你没有过于频繁地传输,你只需要使用辅助文件作为信号量机制。再次,它真的取决于你如何尝试传播,但这应该在EA(不是一个indior)内部工作。 (但是你必须使用windows API文件函数,因为据我所知MT4不会在自己的目录结构之外写或读)'Datafile.txt'包含你的数据'app1lock.txt'...虚拟锁文件' app2lock.txt'...在启动任何一个MT4应用程序之前的虚拟锁文件确保没有文件存在App1 ...如果app2lock.txt不存在{create file app1lock.txt//此时可能两个应用程序都锁定了同时等待并再次检查睡眠(1000);/如果app2lock.txt不存在则等待一秒{createmodifyread'datafile.txt'} else标记我们需要通过删除文件'app1lock.txt'重做下一次}} App2 ...如果app1lock.txt确实如此不存在{create file app2lock.txt Sleep(1500)如果app1lock.txt不存在{createmodifyread'datafile.txt'} else标志,用于下次运行删除文件'app2lock.txt'}

  4. #4
    谢谢。我会看看你做了什么。我自己发现了这个:
    http://forums.devx.com/showthread.php?t=157293不幸的是,C 不是我强大的套件。

  5. #5
    根据该线程创建共享资源只能在进程/应用程序的同一实例的框架工作中工作因此,例如,如果您有一个indior(使用DLL)并附加到同一MT4应用程序中的多个图表,那么他们将使用MT4应用程序的Hinstance句柄打开DLL的实例。他们将能够共享内存,因为DLL的每个实例都使用相同MT4应用程序的相同Hinstance句柄打开。你想在两个MT4应用程序之间进行交谈。每个MT4应用程序都有自己的Hinstance句柄,因此如果您在两个不同的Mt4应用程序上打开相同的DLL,则每个应用程序都有自己独立的共享内存块,因此无法进行通信。

  6. #6
    谢谢你的回复。我需要创建一个类似于这里完成的地形的应用程序:
    https://www.histoforex.com/crypto-tr...de-copier.html

  7. #7
    我还没有这样做,但认为它会起作用:import user32 - 参见示例
    http://www.metatrader.info/node/160并使用dde函数(抱歉,我找不到这个例子)或send_message函数。 (这是因为两个MT都在同一台计算机上)。这里有一些关于dde的想法:
    http://www.answers.com/topic/dde-con...on?=technologyDDE发送已经内置,只需要在第二个实例上进行接收。我会看到我能找到的其他东西。

  8. #8
    1附件我在交易之间把它扔在一起所以它不是最令人惊奇的一段代码但是它的作用我能说什么...我同时感到无聊和感觉慷慨!!!它是什么:DLL和示例EA(带有源)允许使用FIFO文本字符串消息队列在同一台机器上的两个MT4应用程序之间进行串扰。仅在单个MT4 APP上运行EA的一个副本,并将其应用于同一台计算机上不超过2个单独的MT4应用程序。我不建议尝试在egy测试仪中使用它,但它可能在视觉模式下工作。用法将EX4 MQ4复制到2 MT4应用程序的expert文件夹中复制basicmsgdll.dll到2 MT4应用程序的experts \ libraries文件夹EA有1个外部参数'runasserver'default = true将EA放到APP 1的图表上并设置runasserver = True将EA放到APP 2中的图表上并设置runasserver = False享受!无偿的谢谢!将付款后付给您选择的慈善机构。 BTW。在下一个刻度线到达之前,您不会知道您有新消息,并强制EA再次运行。 (I.E. EA发送消息时不会醒来)我不知道Hack Terranin正在使用什么来强制EA运行。如果你发布他的EA然后我可以看看,但我怀疑它在EA代码不知何故。
    Quote Originally Posted by ;
    TimeDelaySec - 定义检查订单更改(以秒为单位)之间的时间延迟。如果此参数= 0(默认值),则软件照常工作并检查每个滴答的变化(终端中的价格变化)。如果价格变化很少,这可能会造成很大的延迟,但这就是专家应该在MetaTrader中工作的方式。相反,如果您将此参数设置为1秒或更长时间 - 即使价格在此期间没有变化,您也可以快速复制订单。但是这在MetaTrader中没有记录的功能中,这会导致在一段时间后无法打开专家属性对话框的情况。虽然您可以通过更改专家工作的窗口上的时间范围来解决此问题。
    https://www.histoforex.com/attachmen...1167661009.zip

  9. #9
    说RB:非常感谢你的贡献!你能用C#做到吗?或者,我在哪里可以获得delphi的包含?并且 - 某处有免费的delphi编译器吗?谢谢,肯

  10. #10

发布权限

  • 您不可发布新主题
  • 您不可回复
  • 您不可发布附件
  • 您不可编辑您的帖子
  •  
  • BB代码是打开的
  • 表情符号是打开的
  • [IMG]代码是打开的
  • [视频]代码是打开的
  • HTML代码是关闭的
histoforex网站使用cookie 文字跟踪
histoforex网站使用cookie 文字跟踪,某些设定已经固定。您可以点击此处阅读我们的Cookie使用说明。 请点击右键接受我们的cookies。如果您选择继续使用histoforex网站,我们将认为您接受我们的cookies。