Передо мной встал вопрос, а как можно передать биржевые котировки из торгового терминала MetaTrader 4 в Excel? Проблема решается так...
Шаг 0. Скачать и установить терминала не составляет труда. Это можно сделать как с официального сайта, так и с сайтов брокеров. Запускаем терминал.
Шаг 1. В терминале включаем механизм обмена данными.
Меню "Сервис" > "Настройки" и на вкладке "Сервер" ставим галочку "Разрешить DDE сервер":
Шаг 2. Запускаем Excel и в нужную ячейку вводим формулу с запросом данных. Формул не так и много, поэтому я приведу все варианты запросов:
Внимание! Возможно "подвисание" Excel. Решение этой проблемы описано тут.
Как видно, формат команды - простой:
='MT4'|ПАРАМЕТР!ИНСТРУМЕНТ
В интернете можно найти, якобы работают команды
Параметры BID и ASK показывают последние цены продажи и покупки, HIGH и LOW- наибольшую и наименьшие цены за текущие сутки, TIME - время обновления параметров BID и ASK, QUOTE все сведения в виде одной строки:
Другие команды или данные за другой период (например, вчера) недоступны.
Внимание! Иногда получаемые данные содержат некорректные значения:
Правда, они через секунду-другую начинаются отображаться корректно, но почему так я не знаю.
Внимание! Данные передаются с десятичной точкой, а по умолчанию в русской локализации Excel в качестве такого разделителя используется символ запятой ",". Некоторые предлагают сменить символ разделителя в региональных настройках операционной системы. Мне кажется, это чересчур радикально! Такое решение может повлечь некорректную работу других программ.
Правильное решение состоит в том, чтобы заменять символ точки "." на символ запятой ",". Например так:
Внимание! В некоторых источниках (и, в частности, в примере программы) используется команды, где MT4 стоит без кавычек:
Это приводит к тому, что если вы добавляете такую команду, то Excel воспринимает MT4 как координаты ячейки. Неуклюжий вариант решения проблемы состоит в том, чтобы включить другую нумерацию ячеек:
Более простой и правильный - использовать кавычки вокруг MT4 (как и показано выше).
Внимание! Некоторые источники предлагают выставить параметр "Игнорировать DDE-запросы от других приложений".
Я бы не рекомендовал это делать, поскольку может нарушится работа других программ (в частности, проводника).
Шаг 3 (гипотетический). Далее нужно организовать работу с этими данным. Например, сохранять в столбец и строить графики. Но это уже другой вопрос.
Шаг 0. Скачать и установить терминала не составляет труда. Это можно сделать как с официального сайта, так и с сайтов брокеров. Запускаем терминал.
Шаг 1. В терминале включаем механизм обмена данными.
Меню "Сервис" > "Настройки" и на вкладке "Сервер" ставим галочку "Разрешить DDE сервер":
Шаг 2. Запускаем Excel и в нужную ячейку вводим формулу с запросом данных. Формул не так и много, поэтому я приведу все варианты запросов:
='MT4'|BID!EURUSD ='MT4'|ASK!EURUSD ='MT4'|HIGH!EURUSD ='MT4'|LOW!EURUSD ='MT4'|TIME!EURUSD ='MT4'|QUOTE!EURUSD
Внимание! Возможно "подвисание" Excel. Решение этой проблемы описано тут.
Как видно, формат команды - простой:
='MT4'|ПАРАМЕТР!ИНСТРУМЕНТ
В интернете можно найти, якобы работают команды
='MT4'|LAST!EURUSD ='MT4'|STATUS!ACCOUNT ='MT4'|STATUS!BALANCE ='MT4'|STATUS!CONNECT
но это не так. Они относятся к старой версии MetaTrader и более не поддерживаются.
Параметры BID и ASK показывают последние цены продажи и покупки, HIGH и LOW- наибольшую и наименьшие цены за текущие сутки, TIME - время обновления параметров BID и ASK, QUOTE все сведения в виде одной строки:
Другие команды или данные за другой период (например, вчера) недоступны.
Также мне пока не удалось сформировать команду динамически, когда значение пары находится в отдельной ячейке. Например:
='MT4'|BID!$A$1Пока не работает...
Внимание! Иногда получаемые данные содержат некорректные значения:
Правда, они через секунду-другую начинаются отображаться корректно, но почему так я не знаю.
Внимание! Данные передаются с десятичной точкой, а по умолчанию в русской локализации Excel в качестве такого разделителя используется символ запятой ",". Некоторые предлагают сменить символ разделителя в региональных настройках операционной системы. Мне кажется, это чересчур радикально! Такое решение может повлечь некорректную работу других программ.
Правильное решение состоит в том, чтобы заменять символ точки "." на символ запятой ",". Например так:
=ПОДСТАВИТЬ('MT4'|BID!EURUSD;".";",")Теперь данные воспринимаются, как числа.
Внимание! В некоторых источниках (и, в частности, в примере программы) используется команды, где MT4 стоит без кавычек:
=MT4|BID!EURUSDвместо
='MT4'|BID!EURUSD
Это приводит к тому, что если вы добавляете такую команду, то Excel воспринимает MT4 как координаты ячейки. Неуклюжий вариант решения проблемы состоит в том, чтобы включить другую нумерацию ячеек:
Более простой и правильный - использовать кавычки вокруг MT4 (как и показано выше).
Внимание! Некоторые источники предлагают выставить параметр "Игнорировать DDE-запросы от других приложений".
Я бы не рекомендовал это делать, поскольку может нарушится работа других программ (в частности, проводника).
Шаг 3 (гипотетический). Далее нужно организовать работу с этими данным. Например, сохранять в столбец и строить графики. Но это уже другой вопрос.
Спасибо, очень полезная информация. Интересно, на данный момент, существует возможность экспорта в Excel истории котировок?
ОтветитьУдалитьЕсли речь идёт о терминале MetaTrader 4, то да. Меню "Сервис" > "Архив котировок" > выбираем нужную > Кнопка "Загрузить" и затем "Экпорт". Сохранённый файл открыть Excel'ем и обработать.
ОтветитьУдалитьВ принципе, можно попытаться найти онлайн базы котировок. Но мне кажется, это менее удобно.
Ну и конечно, можно воспользоваться другими программами для получения и экспорта котировок.
esli cena naprimer 1.2830 to vydayut ne korrektno.
ОтветитьУдалитьa 1.28333 to korrektno pokazyvayut. est* kakoi nibud* nastroiki na 4x znachnyh?(1.2830)
С EURUSD все получается,но мне нужно miniS&P500( в МТ пишется как miniSP ).Получаю N/A.В чем ошибка?
ОтветитьУдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьЗдравствуйте.Очень интересно.
ОтветитьУдалитьподскажите. какую команду нужно прописать в Excel для того чтобы отображалась история сделки за день, за неделю, за месяц...за ранее спасибо
спасибо автору за статью,у меня вопром как обработать экспотрнтные данные в экселе чтобы каждая колонка например времени была отдельно хай отдельно итд спасибо!
ОтветитьУдалить