Могу ли я использовать языки, отличные от MQL4, на MetaTrader4?

У меня есть задача переноса рыночной стратегии C# в MetaTrader.

  1. есть ли способ автоматизировать эту работу? (Например, можно ли разобрать C# на его AST, а затем сделать перевод?)

  2. принимает ли MetaTrader другие языки?

4 ответов


подходите к задаче снизу вверх -- архитектура-мудрый

Да, вы можете упростить проблему и сделать MT4 узлом, который является тут подключен одноранговый к вашему настоящее Рыночная Стратегия C#.

Это позволит мне работать кластерные вычисления общение массово параллельно с толпой MT4 узлы.

MT4 может стать anEventFEED-ER узел через более сложный "Масштабируемый Официальных Cummunication Рамках


короткий ответ-нет, однако в mql есть способность импортировать DLL. таким образом, вы можете обернуть свой c# lib с C++/cli lib, который предоставляет функционально через экспорт функций, вы даже можете запустить таймер в mql и реализовать рудиментарный насос сообщений.

Update: MT4 может обращаться только к стандартным вызовам неуправляемых библиотек DLL. причина, по которой вы должны использовать оболочку c++, заключается в том, что c++ имеет возможность создавать неуправляемые стандартные вызовы. любой другой язык, который вы можете создать стандартные звонки также могут работать.

кроме того, вам нужна оболочка на случай, если вы хотите использовать другие языки, которые не поддерживают стандартные вызовы. Вы можете просто написать весь свой код на c++ , и вся концепция оболочки будет устаревшей.


Как насчет запросов GET / POST и веб-службы текстового API?

вы можете использовать свою стратегию C# для обновления веб-текстового файла с троичным сигналом:

-1 SELL
 0 HOLD
 1 BUY

затем используйте MQL4 для чтения текстового файла раз в минуту для торгового сигнала.

что касается технически, как это сделать; к сожалению, я программист python не MQL4 или C#, поэтому я не могу помочь.


да, можно использовать C#, используя некоторые сторонние решения, такие как NQuotes http://www.nquotes.net/, который по сути является готовой DLL для общего использования (как сказал Дмитрий, вы можете создать свой собственный, но это требует немного работы).