Иногда возникает необходимость использовать динамически меняющиеся данные в Excel. Например биржевые котировки. Для этого в Excel предусмотрена возможность получения данных, используя Dynamic data exchange (DDE).
В моем примере, в качестве источника данных, будет использован торговый терминал MetaTrader4.
Первре что надо сделать – это включить функцию передачи данных по DDE в MetaTrader.

Заходим в меню сервис – настройки – сервер и ставим галочку в пункте “разрешить DDE сервер“.

DDE в MetaTrader4

Теперь торговый терминал MetaTrader передает данные в DDE.
Формат запроса к терминалу следующий: =MT4|ASK!GBPUSD
MT4 – имя терминала MetaTrader
ASK – параметр относящийся к обьекту запроса
GBPUSD – непосредственно обьект запроса
Обьектами запроса могут быть торговые инструменты – например EURUSD, USDCAD, _DJI и так далее … , а также обьекты торгового счета – ACCOUNT, BALANCE и соединения с сервером – CONNECT.
Параметры запроса относящегося к торговым инструментам – BID, ASK, LAST, QUOTE. К остальным обьектам параметр запроса – STATUS.
Далее подготовим Excel к получению данных.
Вопервых надо проверить настройки самого Excel.
Идем в Excel OptionsAdvanced - General и проверяем что снята галочка в пункте Ignore other applications that use Dynamic data exchange (DDE)

Дальше в разделе Excel OptionsFormulas - Working with formulas включаем R1C1 reference style.
Это надо сделать для того чтобы Excel воспринимал ввод “=MT4” как обращение к MetaTrader, а не ссылку на ячейку с координатами MT4.

Еще один момент! Если установлен русский Windows – то в настройках региональных параметров надо установить разделитель целой и дробной частиточка. Иначе, например данные 1.2788 будут восприниматься как первое января 2788-го года и в ячейке с форматом General будут отображаться как число 324347.
Теперь, когда MetaTrader и Excel подготовлены к соединению по DDE и известен формат запроса к серверу, можно начинать делать таблицу.
Создаем новую таблицу например Quotes.xlsx и в любую ячейку можем записать, допустим “=MT4|ASK!GBPUSD ” (естественно, записываем без ковычек). Нажимаем Enter и получаем котировку ASK валютной пары GBPUSD.

Вот собственно, и все что надо сделать чтоб получать данные от MetaTrader в Excel. Дальше эти данные можно использовать как угодно. Производить рассчеты, строить всевозможные графики, создавать портфели инструментов и так далее.
Некоторые примеры использования этих данных я покажу позже.