Как заставить терминал MetaTrader DDE экспортировать курсы FOREX на сервер Node.js локально?

У меня есть сервер Node.js, работающий на моем компьютере, и в то же время я запускаю MT4.exe.

Если я могу экспортировать текущие ставки в простой файл Excel с помощью этих скриптов.

    BID   request: = MT4|BID!USDCHF 
    ASK   request: = MT4|ASK!USDCHF
    HIGH  request: = MT4|HIGH!USDCHF
    LOW   request: = MT4|LOW!USDCHF
    TIME  request: = MT4|TIME!USDCHF
    QUOTE request: = MT4|QUOTE!USDCHF

Я предполагаю, что это означает, что я также могу легко экспортировать текущие ставки на свой сервер Node.js.

Как этого добиться?

В Excel я только вставляю этот код MT4|BID!USDEUR в ячейку, и он работает, и ячейки меняются каждый раз, когда меняется курс BID USDEUR, что делает ячейку ЖИВОЙ.


person Georgi Antonov    schedule 04.02.2017    source источник
comment
Есть ли необходимость использовать DDE? mt4 позволяет WebRequest, так что вы можете отправлять любые данные, которые вам нужны, на веб-сервер — проект Penguin для ваших нужд доступен с примерами на Github github.com/PenguinTraders/MT4-Node.js/tree/master   -  person Daniel Kniaz    schedule 05.02.2017
comment
y, но когда я делаю именно то, что там описано, и компилирую код mql, я получаю 24 ошибки   -  person Georgi Antonov    schedule 05.02.2017
comment
Вы можете показать это здесь, если хотите, и мы советуем, что происходит не так - я подозреваю, что вы не загрузили файлы dll или не разрешили использование dll или не скопировали .mqh файлы в папку «include». Альтернативный способ - сделать сервер Node самостоятельно и загрузить данные с помощью функции WebRequest(), доступной на mt4, инструкции по ее приготовлению можно найти на SOF, этот вопрос обсуждался пару недель назад. На мой взгляд, REST API может быть более удобным, чем использование DDE.   -  person Daniel Kniaz    schedule 05.02.2017


Ответы (2)


Да,
DDE-request является возможным методом интеграции терминала MetaTrader,
НО... !

учитывая, что нужно только одностороннее направление связи, и учитывая, что бизнес-сфера не является критически важной.

Хотя я помню дни, когда торговля на межбанковских денежных рынках основывалась на продуктах REUTERS с толстыми надстройками для аналитики на основе электронных таблиц Excel, но справедливо сказать, что такие дни ушли навсегда. Просто сравните, сколько торговых событий было обычным в те, просто межбанковские торговые дни, до полного открытия торговли FOREX через прокси-брокерские конторы.

В тот день задержки между QUOTE составляли минуты.

А сегодня?
Если кто-то получает потоки данных LP-провайдера, то есть много единиц, если не десятков QUOTE-событий PriceDOMAIN за одну миллисекунду.


Понял?
DDE сам по себе является рискованным методом для системы с N [kTPS] потоками событий
и, возможно, вам будет приятно узнать, что его поддержка уже фактически прекращена еще при запуске Vista

В случае, если чей-то бизнес-домен должен обрабатывать FOREX-трейдинг с риском стоимости AUM выше нескольких миллионов долларов США, никто не будет рисковать проблемой неэффективности или прекращения обслуживания.

Службы на основе DDE закончились в торговом домене MT4 где-то в преддверии Windows Vista, потому что она официально, но косвенно, прекратила использование набора обычно используемых в те дни DDE-сервисов (которые были официально реализованы в wV, но большинство вызовов DDE возвращали "Not Implemented" Error/Response ).

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


Лучший следующий шаг:

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

Можно попытаться возродить DDE, но это будет попыткой прыгнуть на несколько десятилетий назад.

Точно так же можно сделать все возможное, не теряя времени на преобразование любой прямой логики интеграции между приложениями в накладные расходы и компромиссы дизайна/производительности/козлы отпущения -искусственное, похожее на REST переодевание (очень ограниченное) вызовов функций WebRequest(). Хотя есть шанс использовать WebRequest() не только для pull-, но и для службы квазиpush-data, затраты и http-заголовок + полезная нагрузка http-body- кодирование + накладные расходы, связанные с полным tcp/ip-стеком, совершенно неоправданны для данной цели, как только станут доступны более продуманные инструменты

Несколько моментов для такого современного определения инструмента:

  • масштабирование производительности (насколько стабильно отправлять 10 000, 100 000, 1 М+ обновлений в секунду)
  • поддержка интеграции (сколько языковых привязок/платформ поддерживают этот инструмент)
  • потокобезопасный дизайн (сколько потоков может быть использовано (за пределами ограниченной среды выполнения кода терминала MetaTrader), чтобы смягчить любые неблагоприятные блокировки или узкие места в производительности и обеспечить какой-либо отказоустойчивый дизайн схема обработки распределенной системы )

Если вам нужен практический пример, можно взглянуть на nanomsg, инструменты ZeroMQ и терминал MetaTrader, которые взяли на себя высокопроизводительный, масштабируемый мир обмена сообщениями/сигналами с малой задержкой в ​​сфере финансовых технологий и стали достаточно стабильными/зрелыми, чтобы проводить разумное время с.

person user3666197    schedule 06.02.2017

Используйте совет dde, вы будете получать ставки в режиме реального времени, вам не нужно создавать запрос dde в секунду.

person Jagrut Vavadia    schedule 11.03.2021