1

我正在寻找解决方案,如何将货币兑换从 metatrader(4 或 5)导出到 web(json、csv、xml...)

我看到可以导出到excel文件。

4

2 回答 2

0

在线软实时导出

MT4 可以作为anEventFACTORY进程并发送实时报价(即“Tick(s)”)以进行进一步处理,无论是内部(通过函数调用)还是外部(通过 ZeroMQ 或 nanomsg 通信框架)

建筑学

MT4 有一个默认的内部 EventLOOP,它会在Expert Advisor自定义指标int start(){ <_code-block_> }中的每个报价到达时触发。除此之外,脚本可以使用它自己的近 RT 循环处理 Quote 到达bool RefreshRates()

时间分辨率

MT4 的 TimeDOMAIN 分辨率相当差,可以通过以下方式工作到大约1 毫秒int GetTickCount()

做与不做

每个MT4 不能运行超过一个 EA + 一个 脚本 + 几个 自定义指标MT4.Graph

MT4 线程是构建任何高工作负载软件的脆弱结构

MQL4 中的 MT4 代码可能会阻塞 MT4 的整个“接收引擎”(不是说MT4.TradingCONTEXT...,所以要小心并合理地放置void Sleep( int msecs2sleep )在任何代码的 RT 敏感部分中不存在的位置。

谨防阻塞

MT4fileIO阻塞,尽可能避免,如果按下,缓存和延迟磁盘写入到您肯定有 15-40 毫秒“空闲时间”在fileIO-blocked< code-block > 执行中休息的情况状态>。虽然乍一看这似乎很有趣,但MT4如果您碰巧以糟糕的方式安排此类“导出”处理并且MT4线程模型超出了它们的 MUTEX/LOCKs 弹性阈值,这可能会使您的平台挂起。

听起来像是在 MetaTrader 中构建实时软件吗?

是的。

正确的。

Verba 讲解员。示例 trahunt。

尝试使用这种方法在 MT4中使用瘦软 RT 客户端,或者像MQL4 RT 扫描仪 TAMARA 和 SONAR 那样进行缓存写入,您将看到,这很快需要几分钟 ( MINUTES ) sustained-fileIO-write- s 只在磁盘上存储几个专业localhost...,或者更好——将本地收集的数据块分发到远程loggerPROCESS(类似系统日志)或任何其他{在线 | 离线}后处理

于 2014-06-13T11:21:48.837 回答
0

您可以创建一个 EA 来做到这一点。我个人收集费率(每个滴答声)并推送到 SQL 服务器。推送到 SQL 服务器更加棘手(我使用自定义 DLL 来执行此操作)。但是您可以轻松地将其附加到 csv 或制表符分隔的文件中。这将为您提供一个制表符分隔的文件,您可以将其导入 Excel。但请注意,这可能会变得非常巨大。此外,虽然其中有时间元素,但TimeCurrent()仅精确到秒。要将精度降低到毫秒,您将需要一些更棘手的东西。但费率将按顺序附加。

int start()     {
    logRates();
    return(0);
}

void logRates( string pvsSymbol, double pviAsk, double pviBid ) {
    string  vsFilename  = "Rates (" + Symbol() + ") " + Month() + "-" + Day() + ".txt";
    int     handle      = FileOpen(vsFilename + ".txt", FILE_CSV|FILE_READ|FILE_WRITE, '\t');
    if(handle>0) {
        FileSeek(handle, 0, SEEK_END);
        FileWrite(handle, TimeCurrent(), pvsSymbol, pviBid, pviAsk);
        FileClose(handle);
    }
}
于 2013-06-16T10:14:50.227 回答