我的任务是将C#市场策略迁移到MetaTrader。
有没有办法自动完成这项工作? (例如,是否可以将C#解析为它的AST,然后进行翻译?)
MetaTrader是否接受其他语言?
答案 0 :(得分:5)
是的,您可以简化问题并使MT4成为一个节点,立即点对点当前 C#市场策略。
这让我操作基于群集的计算与一群 MT4 节点进行大规模并行通信。
MT4可以通过更复杂的" 可扩展的正式通信框架"成为 anEventFEED
-er Node。以非常聪明的方式。
您希望有一个 CLI界面来命令您的MT4节点 - 一个用作anEventFEED
- 呃,另一个用于 anXtoACTOR
< / strong>节点 - 选择性地,具有语法和&amp; CLI指令的语法(不是关于测试自动化等等)?
您是否希望拥有一个中央&lt; syslog &gt;守护进程卸载加载HFT流量的MT4节点并自动执行+管理脚本监控&amp;维护任务?
您是否希望外部 GPU计算引擎/群集以每个tickEvent为基础以MT4 EA的客户端/服务器方式进行通信?
ZeroMQ 和/或 nanomsg 框架将允许您设计和开发多对多(节点网络)&amp;任意到任何(实现语言)系统。
MT4 / MQL4有一个ZeroMQ的直接智能包装&gt;&gt;&gt;感谢Austen Conrad在GitHub MQL4ZMQ
ZeroMQ &gt;&gt;&gt;多亏了它,伟大的团队有很多语言绑定 - C / C ++,Python,Java,R,甚至Erlang,......
因此,您的项目可能会以坚如磐石的理由开始。独立于任何特定的架构网格锁(DLL移动sands等)
工程内置插件可为您节省大量时间和精力,并避免重新发明轮子
答案 1 :(得分:1)
简短的回答是否定的,然而,mql中有一个教员可以导入dll。所以你可以用c ++ / cli lib包装你的c#lib,它通过函数导出在功能上公开,你甚至可以在mql中运行一个计时器并实现一个基本的消息泵。
更新:MT4只能访问非托管DLL的标准调用。你必须使用c ++包装器的原因是c ++ DOES能够创建非托管标准调用。您可以创建标准调用的任何其他语言也可以使用。
此外,您需要一个包装器,以防您想使用其他不支持标准调用的语言。您可以用c ++编写整个代码,整个包装器概念将过时。
答案 2 :(得分:1)
GET / POST请求和基于Web的文本API服务如何?
您可以使用C#策略使用三元信号更新基于Web的文本文件:
-1 SELL
0 HOLD
1 BUY
然后使用MQL4每分钟读取一次交易信号的文本文件。
就技术而言如何做到这一点;不幸的是我是一个python程序员而不是MQL4或C#,所以我无能为力。
答案 3 :(得分:0)
是的,可以使用一些第三方解决方案来使用C#,例如NQuotes http://www.nquotes.net/,它本质上是一个现成的DLL用于一般用法(比如Dmitry说,你可以创建自己的,但它涉及到一点工作。)