Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 5442
- Рейтинг:
- Опубликован:
- Обновлен:
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
В автоматической торговле 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
VR Atr Lite
Индикатор Atr Lite, рассчитывает средний ход цены
Angulation
Индикатор строит лучи ангуляции от пересечения индикатора Аллигатор до текущего бара.
spread_on_chart
Показывает текущее значение спреда (spread), минимального расстояния до стоп ордеров (stop level) и дистанции заморозки торговых операций (freeze level).
AFL Winner
Осциллятор для внутридневной торговли.