Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
Skype Control Library - библиотека для MetaTrader 4
- Просмотров:
- 5197
- Рейтинг:
- Опубликован:
- 2014.06.05 09:38
- Обновлен:
- 2016.11.22 07:33
- Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
В автоматической торговле Skype можно использовать для отправки текстовых сообщений с необходимой информацией. В данном случае работа со Skype реализована через библиотеку Skype4COM - ActiveX компонент предоставляющий доступ к управлению программой. Скачать Skype4COM можно с официального сайта разработчиков: http://dev.skype.com/accessories/skype4com
Файл Skype4COM.dll необходимо установить и зарегистрировать.
Для операционной системы x86:
- Скопировать в папку: %systemroot%\System32
- Выполнить в командной строке: %systemroot%\System32\regsvr32.exe %systemroot%\System32\Skype4COM.dll
Для операционной системы x64:
- Скопировать в папку: %systemroot%\SysWOW64
- Выполнить в командной строке: %systemroot%\SysWOW64\regsvr32.exe %systemroot%\SysWOW64\Skype4COM.dll
Файл данной библиотеки SkypeMQL.dll необходимо установить в папку: [папка терминала]\MQL5\Libraries
1. Отправка мгновенных сообщений
int SkypeSendInstantMessageW(string skype_name,string message,int status); int SkypeSendInstantMessageA(string skype_name,string message,int status);// для MetaTrader 4
Перед отправкой мгновенного сообщения в функции выполняется ряд проверок:
- Имя пользователя не может быть пустой строкой или начинаться с цифры.
- Пользователь с указанным именем должен быть в списке контактов.
- Сообщение не может быть пустой строкой.
- Сетевой статус получателя должен совпадать с указанным значением.
Список констант сетевых статусов:
имя константы |
значение |
описание |
---|---|---|
STATUS_OFFLINE | 1 |
Не в сети |
STATUS_ONLINE | 2 |
В сети |
STATUS_AWAY | 4 |
Нет на месте |
STATUS_DONT_DISTURB |
16 |
Не беспокоить |
Для задания нескольких разрешенных статусов одновременно используется побитовое сложение констант, например: STATUS_ONLINE | STATUS_AWAY.
Максимальная длина мгновенного сообщения: ~8000 символов ANSI, ~4000 символов Unicode.
Пример кода:
string InpSkypeName = "echo123"; // Skype name string InpTextMessage = "Hello :)"; // Text message string msg; ENUM_SKYPE_ERROR err=(ENUM_SKYPE_ERROR)SkypeSendInstantMessageW(InpSkypeName,InpTextMessage,STATUS_ONLINE|STATUS_AWAY); if(err==ERROR_NO_ERRORS) msg=StringFormat("Sent IM to %s, %s",InpSkypeName,InpTextMessage); else msg=StringFormat("Error sending IM to %s, error: %s",InpSkypeName,EnumToString(err)); Print(msg);
2. Отправка SMS сообщений
На данный момент услуга отправки SMS является платной!
int SkypeSendSmsMessageW(string phone_number, string message); int SkypeSendSmsMessageA(string phone_number, string message);// для MetaTrader 4
Перед отправкой SMS сообщения производится несколько проверок:
- Номер телефона должен быть указан в международном формате: + [код страны] [код города или сети] [номер телефона]
- Длина строки с телефонным номером должна быть не менее 7 символов и начинаться со знака '+'
- Текст сообщения не может быть пустой строкой
Отправка SMS на несуществующий номер не приводит к ошибке. Плата за такую операцию взимается, но через короткое время возвращается, так как сообщение по факту не было доставлено.
Длина SMS сообщения ограничена: 116 символов ANSI, 58 символов Unicode.
Пример кода:
input string InpPhoneNumber = "+380123456789"; // Phone number input string InpTextMessage = "Hello :)"; // Text message string msg; ENUM_SKYPE_ERROR err==(ENUM_SKYPE_ERROR) SkypeSendSmsMessageW(InpPhoneNumber,InpTextMessage); if(err==ERROR_NO_ERRORS) msg=StringFormat("Sent SMS to %s, %s",InpPhoneNumber,InpTextMessage); else msg=StringFormat("Error sending SMS to %s, error: %s",InpPhoneNumber,EnumToString(err)); Print(msg);
3. Описание возвращаемых значений
Обе функции возвращают целочисленное значение, которое можно проанализировать при необходимости.
имя константы |
значение |
описание |
---|---|---|
ERROR_UNKNOWN |
-1 |
Неизвестная ошибка |
ERROR_NO_ERRORS |
0 | Успешное выполнение |
ERROR_ATTACH |
1 |
Не удалось присоединиться к процессу Skype |
ERROR_AUTHORIZED |
2 |
Указанного пользователя нет в списке контактов |
ERROR_STATUS |
3 |
Неверный статус пользователя |
ERROR_TIMEOUTS |
4 |
Превышен интервал ожидания |
ERROR_RUNNING | 5 | Программа Skype не загружена в память |
ERROR_SENDING | 6 |
Ошибка отправки |
ERROR_VALUE | 7 | Ошибка передаваемых параметров |
ERROR_ACCESS | 8 | Отказано в доступе к процессу Skype |
ERROR_SKYPE4COM | 9 | для x86: Skype4COM.dll не зарегистрирована для x64: Ошибка создания COM-объекта |
4. Первый запуск
При первом обращении MetaTrader 5 к Skype появляется всплывающее окно с возможностью открыть доступ для управление программой.
После подтверждения доступа к Skype, запрашиваемый процесс попадает в список, хранящийся в настройках программы: Tools -> Options -> Advanced -> Manage other programs' access to Skype.
5. Ошибки выполнения
По неизвестным мне причинам, работа с библиотекой скомпилированной для MetaTrader 5 x64 заканчивается ошибкой "Stack overflow". Если это связано с Skype4COM, то остается лишь ждать новых обновлений, где эта ошибка будет устранена.
В приложении находится архив с исходным кодом библиотеки (проект для Microsoft Visual C++ 2010) и тестовый скрипт для проверки её работоспособности.
Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/11453
Индикатор Atr Lite, рассчитывает средний ход цены
AngulationИндикатор строит лучи ангуляции от пересечения индикатора Аллигатор до текущего бара.
Показывает текущее значение спреда (spread), минимального расстояния до стоп ордеров (stop level) и дистанции заморозки торговых операций (freeze level).
AFL WinnerОсциллятор для внутридневной торговли.