Передача данных из MetaTrader4 в MS Excel 2007
All, Excel, Трейдерам 07.11.2008Метки: dde, metatrader4
Иногда возникает необходимость использовать динамически меняющиеся данные в Excel. Например биржевые котировки. Для этого в Excel предусмотрена возможность получения данных, используя Dynamic data exchange (DDE).
В моем примере, в качестве источника данных, будет использован торговый терминал MetaTrader4.
Первре что надо сделать – это включить функцию передачи данных по DDE в MetaTrader.
Заходим в меню сервис – настройки – сервер и ставим галочку в пункте “разрешить DDE сервер“.

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

Дальше в разделе Excel Options – Formulas - 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. Дальше эти данные можно использовать как угодно. Производить рассчеты, строить всевозможные графики, создавать портфели инструментов и так далее.
Некоторые примеры использования этих данных я покажу позже.
08.11.2008 в 16:46
Совсем не обязательно менять региональные настройки. В самом екселе в настройках можно отменить использование системных разделителей и поставить свои.
08.11.2008 в 23:59
alex
Согласен. Есть такой момент. Но на мой взгляд, удобнее когда разделители в Excel и системные совпадают. Тут дело вкуса.
03.12.2008 в 04:27
Есть такой вопрос – я получаю по DDE меняющиеся данные. Как можно сохранить все эти данные.
Т.е. например в ячейку А1 попадают данные по GBPUSD – 1,57. Через минуту они меняются на 1,56, еще через минуту 1,57. Как получить список типа 1,57, 1,56, 1,57 и т.д.??
Заранее огромное спасибо.
03.12.2008 в 14:37
Хороший вопрос. Вечером подумаю как реализовать.
Пока, на первый взгляд, без макроса не обойтись. Хотя, если котировки в Excel поступают из MetaTrader, можно посмотреть параметр запроса QUOTE. По этому запросу Excel получает дату, время, бид и аск.
Корче говоря, как что придумаю – отвечу.
Спвсибо.
04.12.2008 в 23:24
Как обещал, написал пост о том как сохранять данные получаемые по DDE.