Трансляция Котировок Из Мт4 В Excel

Posted on by  admin

Подлинный файл Adobe Gamma Loader.exe является одним из компонентов. В следующем окне калибровки. Передо мной встал вопрос, а как можно передать биржевые котировки из торгового терминала MetaTrader 4 в Excel? Проблема решается так. Скачать и установить терминала не составляет труда. Это можно сделать как с официального сайта, так и с сайтов брокеров. Котировки Форекс в Microsoft Excel. Котировки в МТ4? Историй котировок у одного.

Практическое занятие №2 Экспорт котировок Исходными данными, на базе которых строится вся аналитическая работа пользователя терминала, являются данные о динамике цен финансовых инструментов. Эту информацию поставляет брокерская компания. Ценовые данные позволяют строить графики финансовых инструментов, исследовать финансовые рынки, использовать различные торговые тактики и принимать торговые решения. Котировки представляют собой файлы с записями в формате 'SYMBOL, BID, ASK, DATE' (финансовый инструмент, цена покупки, цена продажи, дата и время) и поступают в терминал автоматически после установки связи с сервером. Терминал позволяет экспортировать текущие котировки в другие программы в режиме реального времени по протоколу 'DDE' (Dynamic Data Exchange). Это — протокол операционных систем MS Windows для динамической передачи данных между различными приложениями.

Котировки по DDE выдаются только по приходе новых тиков (режим ADVISE), а не сразу же по запросу (режим REQUEST) с выдачей последней известной цены. N/A выдается при первом запросе REQUEST, а после прихода новой цены появляются котировки. Для активизации режима экспорта котировок из клиентского терминала по протоколу DDE необходимо включить опцию 'Разрешить DDE сервер' в настройках терминала. Внимание: исторические данные по протоколу DDE не транслируются.

Передача текущих котировок производится только при работающем клиентском терминале. Практическое занятие №3 Экспорт котировок с помощью индикатора BidAsk (Вступление) На этом практическом занятии с помощью индикатора BidAsk мы получим котировки 5 валютных пар в реальном времени. Котировки будем получать по следующим валютным парам EUR/USD, GBP/USD, AUD/USD, USD/CAD, USD/CHF. Для каждой валютной пары будем получать в определенный момент времени две цены, цену покупки и цену продажи. И так, для начала скачиваем и распаковываем индикатор BidAsk. 1,62 КБ 280 Скачано Копируем распакованный файл в папку с индикаторами. У меня она располагается по пути C: Program Files MetaTrader 4 experts indicators После копирования запускаем MetaTrader и в пользовательских индикаторах видим появившийся BidAsk.

Выолняем его на любом из графиков (минутный это или часовой значения не имеет). После выполнения индикатора на графике видимых изменений на графике не произойдет. Принцип работы данного индикатора -это получение котировок в реальном времени и запись их в текстовой файл.

Текстовой файл будет находиться по пути C: Program Files MetaTrader 4 experts files и будет называться BidAsk.txt Давайте откорем этот файл и посмотрим, что записал туда индикатор. Вот, что у меня получилось. Теперь давайте разберемся что записал индикатор. 1.454 - это первая строчка Bid пары EUR/USD, 1.4542 -это вторая строчка Ask пары EUR/USD и так далее по всем 5 валютным парам в последовательности EUR/USD, GBP/USD, AUD/USD, USD/CAD, USD/CHF. Теперь нам нужно будет во время разработки программы открыть этот файл, прочитать котировки и вывести их в программе. Практическое занятие № 4 (4.1) Получение котировок используя DDE. Сергей (nsg) уже о DDE и показал на примере (Excel) как использовать эту технологию для получения котировок он-лайн.

Я же покажу как работать с этой технологией программно. В конце каждого занятия (кроме 4.1 и 4.2) Вы сможете скачать исходник (вариант для ленивых или для тех у кого не получилось) и релиз исполняемого файла для тех у кого нет среды и хочет просто посмотреть. Примеры программ (и соответственно исходники) будет даваться в среде быстрой разработки Borland C Builder 6. Это практическое занятие будет разбито на несколько уроков. Но начнем мы все равно с описания DDE - repetitio est mater studiorium (лат. Повторение - мать учения).

Практическое занятие № 4.1 DDE и MetaTrader 4 Технология DDE (Dynamic Data Exchange) была разработана компанией Microsoft для обеспечения взаимодействия между приложениями в Windows и OS/2. Dynamic Data Exchange получило свое имя потому, что позволяет двум приложениям обмениваться данными (текстовыми, через глобальную память) динамически во время выполнения.

Связь между двумя программами можно установить таким образом, что изменения в одном приложении будут отражаться во втором. Например, если Вы меняете число в электронной таблице, то во втором приложении данные обновятся автоматически и отобразят изменения. Кроме того, с помощью DDE можно из своего приложения управлять другими приложениями, например Excel. Сегодня эта технология устарела и для обмена данными между процессами используются более продвинутые и безопасные методы OLE, а также сетевые технологии, каналы (pipes).

Microsoft уже давно отказалась от этой бесперспективной технологии. Но с другой стороны простота работы с DDE порой перевешивает, тем более других интерфейсов в MT4 все равно нету.

Кстати, в MT5 поддержки DDE нет. Будем искать другой способ получать котировки он-лайн. Хотя до релиза еще далеко - может что-то и поменяется.

DDE вряд ли вернут, а вот другой какой-нибудь интерфейс, может и встроят. Но мы сейчас работаем с MT4 и было бы глупо не воспользоваться этой технологией, тем более MT4 ДЦ еще не скоро отменят - деньги-то заплачены. DDE функционирует по принципу клиент-сервер. Клиент делает запрос, а сервер его обрабатывает и, возможно, отправляет ответ. Запрос DDE имеет следующий синтаксис: имя приложения имя документа или раздела документа! Диапазон ячеек, значение, поле или данные, на которые сделана ссылка и выглядит следующим образом: SERVICE TOPIC!VALUE Для активизации режима экспорта котировок из клиентского терминала по протоколу DDE необходимо включить опцию 'Разрешить DDE сервер' в настройках терминала. После установки флажка DDE (точнее после нажатия кнопки ОК) сервер сразу заработает, перегрузка терминала не обязательна.

Теперь посмотрим на формат запросов, которые можно делать DDE-серверу MT4. Пример из справки MetaTraider`а: запрос BID: = MT4 BID!USDCHFрезультат: 1.5773 запрос ASK: = MT4 ASK!USDCHFрезультат: 1.5778 запрос HIGH: = MT4 HIGH!USDCHF результат: 1.5801 запрос LOW: = MT4 LOW!USDCHFрезультат: 1.5741 запрос TIME: = MT4 TIME!USDCHF результат: 21.05.02 9:52 запрос QUOTE: = MT4 QUOTE!USDCHF результат: 21.05.02 9:52 1.5773 1.5778 1.5776 ЗЫ: Как Вы сами потом увидите – формат даты и ответ quote отличаются от этого примера из справки. Думаю интуитивно запросы понятны, но все же разберем: Разделы: BID – получение цены спроса (bid) ASK – получение цены предложения (ask) HIGH – максимум дня (HD1) LOW – минимум дня (LD1) TIME – текущие дата и время (с точностью до минут) в терминале QUOTE – дата, время, bid, ask Т.е.

Диаграммы В Excel

Запрос на рисунке будет возвращать цены предложения (ask) по валютной паре USDCHF. Внимание: исторические данные по протоколу DDE не транслируются. Передача текущих котировок производится только при работающем клиентском терминале. Практическое занятие № 4.2 Первые шаги. Теперь давайте посмотрим, как нам программно подключится к DDE-серверу, сделать запрос и получить ответ. В Builder`е есть 4 стандартных компонента для работы с DDE. Два клиентских (DdeClientConv, DdeClientItem), с которыми мы и будем работать.

И, соответственно, два серверных (DdeServerConv, DdeServerItem), на случай если Вы захотите сделать DDE-сервер в своем приложении.DdeConv (DDE Conversation) – DDE-диалог или DDE-соединение (или DDE-связь - как хотите. Я в описаниях занятий буду пользоваться всеми).

Раскрывающийся Список В Excel

Итак, приступим. Создадим новый проект (или воспользуемся старым), в общем подготовим для себя пустую форму для работы. Думаю здесь ни у кого не возникнет проблем. С вкладки System перетащим на форму два компонента: DdeClientConv и DdeClientItem 3. Настройка DdeClientConv.

Выделим объект и переключимся на ObjectInspector. Компонент отвечает за установление соединения с конкретному разделом DDE-сервера. ConnectMode – Режим подключения (выставляем ddeManual):. DdeManual – вручную (для подключения нужно будет вызвать метод OpenLink). DdeAutomatic – автоматически после установки значений DdeService и DdeTopic посредствам метода SetLink. DdeService – Сервис.

В нашем случае MT4 DdeTopic – Раздел. В нашем случае выбираем один из разделов MT4 ( BID, ASK, HIGH, LOW, TIME, QUOTE). FormatChars – Форматирование спец. Символов, оставляем по умолчанию - false. Нужно (значение true), если вы будете передавать серверу спец. Символы (табуляция, возврат каретки и т.п.) Name – Имя компонента в вашей программе.

Можете оставить по умолчанию, но я советую всегда именовать компоненты в соответствии с тем, что они делают, например так ddeConvQuote. В уроке будем работать с именем ddeConvQuote. ServiceApplication – Приложение, которое отвечает за работу DDE-сервера, можно оставить пустым. В это поле заносится путь к программе MetaTrader. Если при обращении к DDE-серверу MetaTrader не будет запущен, ваша программа запустит его автоматически.

Tag – Это поле для Вас. Оно есть у всех компонентов Builder`а. Можете сюда сохранять любые целочисленные данные. Теперь можно проверить подключение.

Трансляция Котировок Из Мт4 В Excel

После настройки компонента выставим ConnectMode в ddeAutomatic. Если не появилось сообщений об ошибке, то все сделано правильно. Особо не увлекайтесь, второй раз подключится не получится, т.к.

Компонент не имеет функции закрытия соединения (программно это сделать, конечно же можно). Поэтому если Вы второй раз переводите ConnectMode в ddeAutomatic (т.е.

Инициируете соединение), то вы получите сообщение об ошибке Для повторного соединения нужно сбросить соединение любым способом: перегрузить проект, перегрузить среду, перегрузить MetaTrader, перегрузить комп в конце концов – в общем как угодно, главное разорвать соединение. Самое простое перегрузить DDE-сервер – убрать и выставить галочку в настройках MT (с нажатием кнопки ОК). Настройка DdeClientItem.

Выделим объект и переключимся на ObjectInspector. Объект DdeClientItem отвечает за поставку данных, которые будем запрашивать через подключенный DDE диалог – DdeClientConv. DdeConv – Связывает наш item c DDE-диалогом. Выбираем из списка созданный на 3 шаге ddeConvQuote. DdeItem – Наименование запрашиваемого значения (в нашем случае GBPUSD). Lines – В это поле объекта TDdeClientItem будет поступать запрошенная информация, если размер ответа больше 255 символов, если меньше ответ записывается в поле Text. Name – Имя объекта – ddeItemGBPUSD.

Text – В это поле объекта TDdeClientItem будет поступать запрошенная информация, если размер ответа меньше 255 символов, если больше ответ записывается в поле Lines. Теперь проверим: Выставим ConnectMode в ddeAutomatic. Если все сделали правильно, то в поле Text – увидим ответ на наш запрос (MT4 QUOTE!GBPUSD) - 2010/03/29 14:42 1.4978 1.4981 (сравните с примером из справки MT), причем значения будут меняться, как только котировки будут обновляться на сервере. Через один диалог можно получать несколько значений. Например, вы можете создать еще один DdeClientItem для пары EURUSD, и подключить к тому же диалогу ddeConvQuote. Итак, второй урок закончен.

Заметьте, мы даже еще программу не начали писать, а уже получаем котировки он-лайн, через DDE-сервер MT4. Гершвин summertime ноты. Самостоятельно: - Создайте DDE-диалоги для всех остальных разделов (ASK, BID, HIGH, LOW, TIME) - Создайте запросы к разным разделам, разными фин.

Запускаем 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. Правда, они через секунду-другую начинаются отображаться корректно, но почему так я не знаю. Данные передаются с десятичной точкой, а по умолчанию в русской локализации Excel в качестве такого разделителя используется символ запятой ','. Некоторые предлагают сменить символ разделителя в региональных настройках операционной системы. Мне кажется, это чересчур радикально!

Такое решение может повлечь некорректную работу других программ. Правильное решение состоит в том, чтобы заменять символ точки '.' На символ запятой ','. Например так: =ПОДСТАВИТЬ('MT4' BID!EURUSD;'.'

;',') Теперь данные воспринимаются, как числа. В некоторых источниках (и, в частности, в примере программы) используется команды, где MT4 стоит без кавычек: =MT4 BID!EURUSD вместо = 'MT4 ' BID!EURUSD Это приводит к тому, что если вы добавляете такую команду, то Excel воспринимает MT4 как координаты ячейки. Неуклюжий вариант решения проблемы состоит в том, чтобы включить другую нумерацию ячеек.

Comments are closed.