将网站数据拉入CSV并每五分钟刷新一次

时间:2015-03-05 02:33:00

标签: algorithmic-trading mql4

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

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

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

结构

  1. .html页面
  2. 转储的部分数据
  3. 插入.csv档案
  4. MQL4阅读

2 个答案:

答案 0 :(得分:2)

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

第1部分 - 安排活动

  • 在您的EA中,在OnInit()中;使用EventSetTimer(5*60)创建计时器。
  • 这将触发事件OnTimer()事件。 5 * 60 = 5分钟。
  • OnTimer()事件中,请致电您的下载程序(请参阅第2部分)

第2部分 - 下载HTML

  • 您可以在不使用第三方DLL的情况下实现此目的。内置的Windows Wininet.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创建浏览器会话,然后使用OpenURLW打开URL,然后使用ReadFile API读取页面内容;最后,使用CloseHandle关闭会话。
  • 在MT4代码中的字符串变量中输入HTML后,您只需按照自己的方式进行按摩即可。

第3部分 - 写入.CSV

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

第4部分 - 阅读.CSV

  • 要阅读CSV文件,只需使用FileReadString()
  • 即可
  • 您可以使用StringSplit()功能将字符串拆分为CSV。

答案 1 :(得分:0)

短版

  1. 是,可能 - 通过独立于MQL4的外部流程,由于控制和同步需求,通过ZeroMQ连接到.ex4(ZMQ为许多生产提供端口/包装 - 等级环境,因此准备将MQL4与任何需求集成
  2. 是的,可能 - 小学,亲爱的Watson ...... (参考#1,如果需要,可以跳过)
  3. 是,可能 - 可以在流程到流程中提供(参考#1和#2)

  4. Check this and other MQL4/ZeroMQ posts on Stack Overflow

    Another MQL4 Real-time output, being remote-logged and animated