我可以在MetaTrader4上使用MQL4以外的语言吗?

我的任务是将C#市场策略迁移到MetaTrader。

  1. 有没有办法自动完成这项工作? (例如,是否可以将C#解析为它的AST,然后进行翻译?)

  2. MetaTrader是否接受其他语言?

接近任务自下而上 – 建筑方面

是的,您可以简化问题并使MT4成为一个节点,它可以立即与您当前的 C#市场策略进行点对点连接。

这使我操作基于群集的计算与大量MT4节点大规模并行通信。

MT4可以通过更复杂的“ 可扩展的正式通信框架 ”以非常智能的方式成为一个事件。

您是否希望有一个CLI接口来命令您的MT4节点 – 一个作为anEventFEED -er,另一个作为一个anXtoACTOR节点 – 有选择地,具有CLI指令的语法和语法(不是关于测试自动化等) al …)?

您是否希望有一个中央< syslog >守护程序来卸载加载HFT流量的MT4节点并自动执行+管理脚本监控和维护任务?

您是否希望有一个外部GPU计算引擎/集群以基于每个tickEvent的MT4 EA以客户端/服务器方式进行通信?

ZeroMQ和/或nanomsg框架将允许您设计和开发多对多(节点网络)和任意到任何(实现语言)系统。

MT4 / MQL4有一个ZeroMQ的直接智能包装>>>感谢Austen Conrad在GitHub上的MQL4ZMQ

ZeroMQ >>>多亏了它的优秀团队有很多语言绑定–C / C ++,Python,Java,R,甚至Erlang,……

所以你的项目可能会在坚如磐石的地面上开始并且独立于任何特定的建筑物僵局(DLL移动沙子等)

工程内置插件可为您节省大量时间和精力,并避免重新发明轮子

简短的回答是没有,但是,有一个教师在mql中导入dll。 因此,您可以使用通过函数导出function性公开的c ++ / cli lib包装c#lib,您甚至可以在mql中运行计时器并实现基本的消息泵。

更新:MT4只能访问非托管DLL的标准调用。 你必须使用c ++包装器的原因是c ++ DOES能够创建非托管标准调用。 您可以创建标准调用的任何其他语言也可以使用。

此外,您需要一个包装器,以防您想使用其他不支持标准调用的语言。 您可以用c ++编写整个代码,整个包装器概念将过时。

GET / POST请求和基于Web的文本API服务怎么样?

您可以使用C#策略使用三元信号更新基于Web的文本文件:

 -1 SELL 0 HOLD 1 BUY 

然后使用MQL4每分钟读取一次文本文件以获取交易信号。

至于技术上如何做到这一点; 不幸的是我是一个python程序员而不是MQL4或C#,所以我无能为力。

是的,可以使用一些第三方解决方案来使用C#,如NQuotes http://www.nquotes.net/ ,它本质上是一个现成的DLL用于一般用法(比如Dmitry说,你可以创建自己的,但是它涉及一些工作)。