MetaTrader
API - это открытый интерфейс, реализующий доступ ко всем функциям информационно-торговой платформы
MetaTrader
. Мы предоставляем программистам очень широкие возможности для написания своих собственных версий клиентских терминалов.
Интерфейс клиентского терминала (
MetaTrader
API)
-
MetaTrader API (MSVC++ 6.0, с примером использования, ZIP)
-
MetaTrader API (Delphi, с примером использования, ZIP)
Клиентский API состоит из 29 функций, реализованных в
mtapi.dll
. Доступ к функциям API осуществляется так, как это показано в исходном файле
MetaTrader
API.cpp
. Описания функций, а также необходимых структур данных, находятся в файле
MetaTrader
API.h
. Для статической линковки имеются файлы
mtapi.lib
и
mtapi.h
.
int MtGetVersion( void );
Возвращает номер версии MTAPI в виде составного числа, первые 3 цифры которого представляют собой номер версии клиентского терминала, совместимого с API. Младшие 3 цифры представляют собой версию API.
int MtSetWorkingDirectory(const char * path);
Назначение рабочего каталога, в котором будут храниться log-файлы, приходящие от сервера письма, а также некоторые другие рабочие файлы. В качестве параметра необходимо указать существующий каталог. Если в качестве параметра указать NULL, то рабочим каталогом будет назначен тот, из которого запущен exe-файл клиента (по умолчанию рабочим каталогом считается каталог, содержащий mtapi.dll). Коды возврата описаны в файле
MetaTrader
API.h.
int MtCreate(void);
Создание объекта сокета для связи с сервером
MetaTrader
. Возвращает хэндл открытого сокета (внутренний номер сокета) в случае успеха. Либо -1 в случае ошибки. Имеется ограничение на количество одновременно существующих объектов сокетов.
int MtDelete(const int handle);
Удаление ранее созданного объекта сокета. В качестве параметра передается хэндл, ранее полученный функцией создания объекта сокета.
int MtConnect(const int handle,const char *server,const int port);
Установление связи с сервером. Параметры:
handle
- хэндл сокета, через который необходимо установить связь;
server
- адрес сервера (IP-address или domain name);
port
- номер порта (обычно 1950 для демо-счетов и 1952 - для реальных).
int MtDisconnect(const int handle);
Разрыв ранее установленной связи с сервером. В качестве параметра передается хэндл сокета.
int MtLogin( const int handle, const int login, const char *password );
Запрос серверу на подключение в качестве авторизованного клиента.
handle
- хэндл сокета, через который уже установлена связь с сервером;
login
- номер клиента (фактически номер счета, которым управляет данный клиент);
password
- пароль для входа в систему.
int MtOpenDemoAccount( const int handle, DemoAccountInfo *info );
Запрос серверу на открытие тренировочного (демонстрационного) счета и получение права на управление этим счетом.
handle
- хэндл сокета, через который уже установлена связь с сервером;
info
- адрес переменной типа структуры
DemoAccountInfo
, в которой заполнены необходимые для регистрации на сервере поля.
В случае успешного выполнения функции номер счета и пароль для входа в систему будут записаны в поля
login
и
password
структуры
DemoAccountInfo
по адресу
info
. После открытия счета соединение через данный сокет необходимо будет закрыть функцией
MtDisconnect
и затем заново открыть функцией
MtConnect
.
int MtChangePassword( const int handle, const char *newpass );
Запрос серверу на смену текущего пароля.
handle
- хэндл сокета, через который уже установлена связь с сервером и произведен вход в систему в качестве авторизованного клиента;
newpass
- новый пароль для следующего входа в систему.
RateInfo* MtGetRates( const int handle, const char *symbol, const int period, const time_t lasttime, int *counter );
Запрос серверу на получение истории котировок.
handle
- хэндл сокета;
symbol
- наименование инструмента, по которому необходимо получить котировки;
period
- период котировок (PERIOD_M1, PERIOD_M5, PERIOD_M15, PERIOD_M30, PERIOD_H1, PERIOD_H4, PERIOD_D1, PERIOD_W1);
lasttime
- время (в секундах с 1 января 1970 г), начиная с которого интересуют котировки;
counter
- адрес переменной типа
int
, куда будет записано количество возвращаемых котировок.
Возвращает массив структур
RateInfo
с котировками размером
*counter
, либо NULL в случае неудачи. Массив котировок должен быть освобожден при помощи функции
HeapFree (GetProcessHeap(), 0, pRates)
.
int MtGetTrades( const int handle );
Запрос серверу на получение списка открытых позиций.
handle
- хэндл сокета.
Список открытых позиций, полученный от сервера, запоминается в объекте сокета и может быть получен при помощи функции
MtGetTradeRecords
.
TradeRecord* MtGetTradeRecords( const int handle, BriefUserInfo *bui, int *items );
Получение списка открытых позиций.
handle
- хэндл сокета;
bui
- адрес переменной типа структуры
BriefUserInfo
, куда будет записана информация о клиенте;
items
- адрес переменной типа
int
, куда будет записано количество открытых позиций.
Возвращает массив структур
TradeRecord
, содержащий список открытых позиций. Массив открытых позиций должен быть освобожден при помощи функции
HeapFree
.
TradeRecord* MtGetTradeHistory( const int handle, const time_t from, const time_t to, int *items );
Запрос серверу на получение истории торговых операций.
handle
- хэндл сокета;
from
,
to
- диапазон времени (в секундах с 1 января 1970 г), в пределах которого интересуют проведенные торговые операции по данному счету;
items
- адрес переменной типа
int
, куда будет записано количество торговых операций.
Возвращает массив структур
TradeRecord
, содержащий историю торговых операций или NULL в случае неудачи.
Массив торговых операций должен быть освобожден при помощи функции
HeapFree
.
char* MtGetNewsBody( const int handle, const int key );
Запрос серверу на получение новости по ее номеру.
handle
- хэндл сокета;
key
- номер новости.
Возвращает символьную строку, содержащую новость, либо NULL в случае неудачи. Строка, содержащая новость должна быть освобождена при помощи функции
HeapFree
.
int MtGetPrices( const int handle, const char *symbol, const int lots, double *bid, double *ask );
Запрос серверу на получение цен по указанному инструменту.
handle
- хэндл сокета;
symbol
- наименование инструмента, по которому необходимо получить цены;
lots
- количество лотов;
bid
- адрес переменной типа double, в которую будет записана цена bid;
ask
- адрес переменной типа double, в которую будет записана цена ask;
Необходимое замечание
Если инструмент, по которому запрашиваются цены, находится в режиме Instant Execution, то необходимо просто брать последние котировки по запрашиваемому инструменту. Как определить инструмент, который находится в режиме Instant Execution. В массиве структур ConSecurity, который может быть получен функцией
MtGetSecurities
, соответствующий инструмент имеет в поле
exemode
значение
EXE_MARKET
.
int MtSendOrder( const int handle, const SendOrderInfo *soi );
Запрос серверу на открытие позиции либо на выставление <отложенного> ордера.
handle
- хэндл сокета;
soi
- адрес переменной типа структуры SendOrderInfo, в которой клиент должен заполнить необходимые поля.
Список ордеров может быть получен при помощи вызова
MtGetTrades
и
MtGetTradeRecords
. Если же сокет был переведен в режим подкачки данных, то список ордеров обновится автоматически и получить его можно при помощи
MtGetTradeRecords
(без предварительного вызова
MtGetTrades
).
int MtDeleteOrder( const int handle, const int order );
Запрос серверу на удаление <отложенного> ордера.
handle
- хэндл сокета;
order
- номер отложенного ордера.
int MtModifyOrder(const int handle, const int order, const double price, const double sl, const double tp );
Запрос серверу на изменение характеристик ордера.
handle
- хэндл сокета;
order
- номер ордера;
price
- новое значение цены;
sl
- новое значение Stop Loss;
tp
- новое значение Take Profit.
int MtCloseOrder( const int handle, const int order, const double price, const int volume );
Запрос серверу на закрытие позиции.
handle
- хэндл сокета;
order
- номер ордера;
price
- цена;
volume
- размер закрываемой позиции (возможно частичное закрытие позиции - появится новый ордер с остаточным объемом).
int MtCloseByOrder( const int handle, const int order, const int byorder );
Запрос серверу на закрытие одной открытой позиции другой открытой позицией по этому же инструменту, но противоположного направления.
handle
- хэндл сокета;
order
- номер закрываемого ордера;
byorder
- номер закрывающего ордера.
int MtRefreshSecurities( const int handle );
Запрос серверу на обновление списка доступных инструментов. Данная функция работает с файлом
securities.dat
, создающемся в рабочем директории. Наличие этого файла с актуальным списком инструментов позволяет значительно снизить трафик в процессе обновления списка. Полученный список доступных инструментов записывается в файл, а также хранится в объекте сокета и может быть запрошен функцией
MtGetSecurities
.
handle
- хэндл сокета, через который уже произведен вход в систему в качестве авторизованного клиента.
ConSecurity* MtGetSecurities( const int handle, int *items );
Получение списка доступных инструментов.
handle
- хэндл сокета;
items
- адрес переменной типа
int
, куда будет записано количество доступных инструментов.
Возвращает массив структур
ConSecurity
, содержащий список доступных инструментов. Массив доступных инструментов должен быть освобожден при помощи функции
HeapFree
.
int MtAddSymbol( const int handle, const char * symbol );
Добавить инструмент в список выбранных инструментов для получения котировок в режиме подкачки данных. Список выбранных инструментов хранится в объекте сокета.
handle
- хэндл сокета;
symbol
- наименование добавляемого инструмента.
int MtHideSymbol( const int handle, const char * symbol );
Удалить инструмент из списка выбранных инструментов для получения котировок в режиме подкачки данных.
handle
- хэндл сокета;
symbol
- наименование удаляемого инструмента.
int MtSetPumpingMode( const int handle, const HWND destwnd, const UINT eventmsg );
Запрос серверу на перевод клиента в режим подкачки данных (пассивный режим). Этот режим предполагает уменьшение трафика, так как сервер без дополнительного запроса клиента будет посылать новые данные, относящиеся к клиенту. Этот режим предполагает более оперативное получение данных - котировок, новостей, изменения состояния открытых позиций, изменения состояния счета.
Важно!
После перевода объекта сокета в режим подкачки данных недопустимо обращаться к серверу через данный сокет с запросами, кроме запроса на разрыв связи
MtDisconnect
. Можно вызывать следующие функции:
MtGetTradeRecords
,
MtGetSecurities
,
MtAddSymbol
,
MtHideSymbol
,
MtGetUpdatedTickInfo
,
MtGetLastNews
,
MtGetLastMail
.
handle
- хэндл сокета;
destwnd
- хэндл окна, которому будут приходить сообщения о поступлении новых данных от сервера;
eventmsg
- идентификатор сообщения, которое будет посылаться окну. В качестве параметра WPARAM может быть передано одно из значений: UPDATE_BIDASK, UPDATE_NEWS, UPDATE_TRADES, UPDATE_MAIL или END_PUMPING.
В качестве параметра LPARAM передается хэндл объекта сокета, пославшего сообщение.
TickInfo* MtGetUpdatedTickInfo( const int handle, int *items );
Получение списка последних котировок. Обычно вызывается после поступления события UPDATE_BIDASK. Так как котировки приходят в процессе подкачки данных, то и запрашивать список измененных котировок следует у того объекта сокета, который находится в режиме подкачки данных, и послал соответствующее сообщение.
handle
- хэндл сокета;
items
- адрес переменной типа
int
, куда будет записано количество котировок.
Возвращает массив структур
TickInfo
, содержащий список котировок. Массив котировок должен быть освобожден при помощи функции
HeapFree
.
NewsTopic* MtGetLastNews( const int handle, int *items );
Получение списка последних новостей. Вызывается после поступления события
UPDATE_NEWS
. Список последних новостей следует запрашивать у того объекта сокета, который находится в режиме подкачки данных, и послал соответствующее сообщение.
handle
- хэндл сокета;
items
- адрес переменной типа
int
, куда будет записано количество заголовков новостей.
Возвращает массив структур
NewsTopic
, содержащий список новостей. Массив новостей должен быть освобожден при помощи функции
HeapFree
.
int MtGetLastMail( const int handle, char * path, int *lenofpath );
Получения имени файла, в который было записано пришедшее с сервера письмо.
handle
- хэндл сокета, переведенного в режим подкачки данных и пославшего сообщение
UPDATE_MAIL
;
path
- строка символов для приема имени файла;
lenofpath
- адрес переменной типа int, в которой записана длина приемной строки.
Если имя файла (включая завершающий ноль) больше, чем приемная строка, то в приемную строку записывается строка нулевой длины, а в переменную по адресу
lenofpath
записывается длина строки, необходимая для приема имени файла.
TradeRecord* MtGetTradeRecords( const int handle, BriefUserInfo *bui, int *items );
Эта функция уже описана выше. Необходимое дополнение для объекта сокета, переведенного в режим подкачки данных: список открытых позиций необходимо запрашивать у того объекта сокета, который послал сообщение
UPDATE_TRADES
.
const char* MtGetErrorDescription( const int errorcode );
Возвращает символьное описание ошибки. В качестве параметра используется код возврата от какой-либо вышеописанной функции.
Котировки
Символ
Bid
Ask
EUR/USD
GBP/USD
USD/CHF
USD/JPY
EUR/JPY
EUR/GBP
GBP/CHF
S&P 500
NQCOMP
Просмотр в отдельном окне
Уровни
Поддержка
Сопротивление
EUR/USD
1.3124
1.3149
1.3275
1.3313
GBP/USD
1.5798
1.5817
1.5903
1.5927
USD/CHF
0.909
0.9114
0.9198
0.9216
USD/JPY
79.3
79.44
80.06
80.23
AUD/USD
1.0718
1.0741
1.0845
1.0874
USD/CAD
0.9886
0.99
0.9944
0.9952
Тренды
Долгосрочный
Краткосрочный
EUR/USD
GBP/USD
USD/CHF
USD/JPY
AUD/USD
USD/CAD
Золотые слова
Игроки терпят неудачу, когда они действуют без плана или уклоняются от выполнения своих планов. Планы создаются личностями путем рассуждений. Импульсивные сделки заключаются взбудораженными членами толпы.
"Как играть и выигрывать на бирже",
Александр Элдер
Компания
/
НАМ 9 ЛЕТ!
/
О компании
/
Услуги
/
Новости компании
/
Партнеры
/
Наши преимущества
/
Наши публикации
/
Архив
/
Вакансии
/
Контакты
Клиентам
/
ДОВЕРИТЕЛЬНОЕ УПРАВЛЕНИЕ
/
Как открыть свой счет
/
КОНКУРС ТРЕЙДЕРОВ
/
Акции
/
5 преимуществ Forex
/
Ввод и вывод средств
/
Условия торговли
/
Спецификация контрактов
/
Финансовые инструменты
/
Торговая платформа
/
Конфиденциальность
/
Техподдержка
/
Документы
/
Информация дороже золота
/
Зарабатывать можно быстрее
/
Программа лояльности
/
Cвой бизнес на форекс
Аналитика
/
Рынок в фокусе
:
Основные индикаторы следующей недели
,
Новости
,
Комментарии
,
Обзоры
,
Новости от Reuters
,
Экономический календарь
/
Стратегии
:
Инвестиционные портфели
,
Рекомендации Mizuho банка
,
Обзор позиций на IMM
,
Долгосрочные прогнозы курсов валют
,
Еженедельный обзор
,
Ежемесячный обзор
,
Годовой обзор
,
Обзор опционов и их уровней
,
Доска ордеров от Dow Jones
/
Технический анализ
:
Тренды и уровни
,
Волновой анализ
,
Свечной анализ
,
Долгосрочные тенденции
/
Фундаментальный анализ
:
Фундаментальные обзоры
,
Макроэкономические прогнозы
,
Прогнозы процентных ставок
,
Анализ макроэкономической ситуации в США
,
Анализ макроэкономической ситуации Еврозоны
,
Анализ макроэкономической ситуации Великобритании
,
Анализ макроэкономической ситуации Японии
,
Анализ макроэкономической ситуации Германии
,
Еженедельный анализ валютных индексов
/
Волновой анализ валют и металлов
/
Товарные рынки - Commodities
/
Ежедневный технический анализ
/
Еженедельный технический анализ
/
Макроэкономическая статистика
/
Пропорции по Фибоначчи
Обучение
/
Курс "Программа подготовки финансовых трейдеров на Фондовом рынке (Stock). VIP"
/
Программа подготовки финансовых трейдеров. VIP Мастер - Курс
/
Он-Лайн Курс "Основная дистанционная программа подготовки трейдеров рынка FOREX"
/
Он-Лайн Курс "Практические дистанционные занятия по программе подготовки трейдеров рынка FOREX"
/
Курс "Программа подготовки финансовых трейдеров рынка FOREX. VIP"
/
Он-Лайн сертификаты
/
Бесплатный ознакомительный курс
/
Теоретические курсы
/
Практические курсы
/
VIP-курсы
/
Дистанционное обучение
/
Курс "ТОРГОВЛЯ С ИСПОЛЬЗОВАНИЕМ ВОЛН ЭЛЛИОТА"
/
Курс "Создание прибыльной торговой системы для работы на финансовых рынках"
/
Экспресс-курс подготовки успешных трейдеров
/
Профи-курс "Эффективное использование современных торговых инструментов. Woodies CCI"
/
Авторский курс "Создание прибыльной торговой системы"
/
Список всех курсов
FOREX
/
Чем Форекс лучше остальных рынков?
/
Как зарабатывать на Форекс
/
Форекс: мифы и реальность
/
Участники валютного рынка
/
Фундаментальный анализ
/
Технический анализ
/
Торговые стратегии
/
Психология рынка
/
Основы риск менеджмента
/
Форекс за 15 минут
Справочная
/
Курсы обмена наличных валют
/
Стоимость пункта
/
История фондовых рынков
/
История фьючерсных рынков
/
DownLoad
/
FAQ
/
Таблица основных праздников
/
Макроэкономические показатели
/
Учебники
/
Рекомендуемая литература
/
Библиотека
/
Полезные ссылки
/
Биржевые истории
/
Математические модели
/
Глоссарий
Лицензия Министерства Финансов Украины AB№082820 от 03.07.2006г.