0

我正在使用 MQL4 开发一个程序,该程序需要从特定网页中提取的一些数据片段。

如何.csv每 5 分钟将其转储到文件中?

我被困在我将如何去做这件事上。

结构

  1. .html从页面转储的一些数据
  2. 插入.csv文件
  3. 由 MQL4 读取
4

2 回答 2

3

由于您的问题是如此笼统(不是特定的编码问题),而且范围太广。我将提供一个概括性的答案,为您指明正确的方向。你需要自己做研究。

第 1 部分 - 安排活动

  • 在您的 EA 中,在 OnInit(); 用 . 创建一个计时器EventSetTimer(5*60)
  • 这将触发事件 OnTimer() 事件。5*60 = 5 分钟。
  • 在这种情况OnTimer()下,调用您的下载程序(参见第 2 部分)

第 2 部分 - 下载 HTML

  • 您可以在不使用第 3 方 DLL 的情况下实现此目的。内置的 WindowsWininet.DLL具有正确的 API:

    import "wininet.dll" //Put a # in-front of import
        int InternetAttemptConnect (int x);
        int InternetOpenW(string sAgent, int lAccessType, 
                                string sProxyName = "", string sProxyBypass = "", 
                                int lFlags = 0);
        int InternetOpenUrlW(int hInternetSession, string sUrl, 
                                    string sHeaders = "", int lHeadersLength = 0,
                                    int lFlags = 0, int lContext = 0);
        int InternetReadFile(int hFile, int& sBuffer[], int lNumBytesToRead, 
                                    int& lNumberOfBytesRead[]);
        int InternetCloseHandle(int hInet);
    import    //Put a # in-front of import
    
  • 这应该让您开始下载部分(自己做一些研究)。

  • 首先是使用 来创建浏览器会话OpenW,然后使用 来打开 URL OpenURLW,然后使用 ReadFile API 读取页面内容;最后,使用 关闭会话CloseHandle
  • 一旦您在 MT4 代码中的字符串变量中包含 HTML,您所需要做的就是按照您想要的方式对其进行按摩。

第 3 部分 - 写入 .CSV

要执行文件写入操作,您正在查看FileOpen()和MQL4 函数。FileWriteString()FileClose()

第 4 部分 - 读取 .CSV

  • 要读取 CSV 文件,只需使用FileReadString().
  • StringSplit()您可以使用该函数将字符串拆分为 CSV 。
于 2015-03-09T10:19:13.333 回答
0

简短版

  1. 是的,可能——通过一个独立于 MQL4 的外部进程,通过 ZeroMQ 连接到.ex4由于控制和同步需求(ZMQ 具有适用于许多生产级环境的端口/包装器,因此准备好将 MQL4 与任何需要的集成
  2. 是的,可能——小学,亲爱的华生……(参考文献#1,如果需要,可以跳过)
  3. 是的,可能 - 可能在流程到流程中可用(参考 #1 和 #2 )

查看 Stack Overflow 上的这篇文章和其他 MQL4/ZeroMQ 帖子

另一个 MQL4 实时输出,被远程记录和动画

于 2015-03-05T23:18:09.350 回答