Смотри, как бесплатно скачать роботов
Ищи нас в Twitter!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

Skype Control Library - библиотека для MetaTrader 4

Просмотров:
5197
Рейтинг:
(34)
Опубликован:
2014.06.05 09:38
Обновлен:
2016.11.22 07:33
skypemql.zip (756.34 KB)
\MQL4\Scripts\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

В автоматической торговле 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 VR Atr Lite

Индикатор Atr Lite, рассчитывает средний ход цены

Angulation Angulation

Индикатор строит лучи ангуляции от пересечения индикатора Аллигатор до текущего бара.

spread_on_chart spread_on_chart

Показывает текущее значение спреда (spread), минимального расстояния до стоп ордеров (stop level) и дистанции заморозки торговых операций (freeze level).

AFL Winner AFL Winner

Осциллятор для внутридневной торговли.