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

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

Просмотров:
4987
Рейтинг:
(39)
Опубликован:
2013.02.18 07:49
Обновлен:
2016.11.22 07:33
SkypeMQL.zip (749.56 KB)
\MQL5\Scripts\ \MQL5\Include\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

В автоматической торговле Skype можно использовать для отправки текстовых сообщений с необходимой информацией. В данном случае работа со Skype реализована через библиотеку Skype4COM - ActiveX компонент предоставляющий доступ к управлению программой. На данный момент компонент Skype4COM.dll распространяется вместе с основной программой Skype и по умолчанию находится в папке:

Для операционной системы x86:

c:\Program Files\Common Files\Skype\Skype4COM.dll 

Для операционной системы x64:

c:\Program Files (x86)\Common Files\Skype\Skype4COM.dll 

Для работы с COM объектами из MQL в качестве прослойки написана библиотеки SkypeMQL.dll которую необходимо установить в папку: [папка терминала]\MQL5\Libraries

Проект работоспособен только на 32 битных терминалах MetaTrader 4/5.


1. Отправка мгновенных сообщений

int SkypeSendIM(string skype_name,string message,int status);

Перед отправкой мгновенного сообщения в функции выполняется ряд проверок:

  • Имя пользователя не может быть пустой строкой или начинаться с цифры.
  • Пользователь с указанным именем должен быть в списке контактов.
  • Сообщение не может быть пустой строкой.
  • Сетевой статус получателя должен совпадать с указанным значением.

Список констант сетевых статусов:

имя константы
значение
описание
 STATUS_OFFLINE 1
Не в сети
 STATUS_ONLINE 2
В сети
 STATUS_AWAY 4
Нет на месте
 STATUS_DONT_DISTURB
16
Не беспокоить
 STATUS_INVISIBLE 32  Невидимый

Таблица 1. Различные статусы пользователя

Для задания нескольких разрешенных статусов одновременно используется побитовое сложение констант, например: STATUS_ONLINE | STATUS_AWAY.

Максимальная длина мгновенного сообщения: ~8000 символов ANSI, ~4000 символов Unicode.

Пример кода:

   string InpSkypeName="echo123";//Skype name
   string InpTextMessage="Hello :)";//Text message

//--- send IM
   int err=SkypeSendIM(InpSkypeName,InpTextMessage,STATUS_ONLINE|STATUS_AWAY);
   if(err==ERROR_NO_ERRORS)
      printf("Sent IM to %s, message: '%s'.",InpSkypeName,InpTextMessage);
   else
      printf("Error sending IM to %s, error: '%s'.",InpSkypeName,SkypeErrorDescription(err));

2. Отправка SMS сообщений

На данный момент услуга отправки SMS является платной!

int SkypeSendSMS(string phone_number, string message);

Перед отправкой SMS сообщения производится несколько проверок:

  • Номер телефона должен быть указан в международном формате: + [код страны] [код города или сети] [номер телефона]
  • Длина строки с телефонным номером должна быть не менее 7 символов и начинаться со знака '+'
  • Текст сообщения не может быть пустой строкой

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

Длина SMS сообщения ограничена: 116 символов ANSI, 58 символов Unicode.

Пример кода:

   string InpPhoneNumber="+380123456789";//Phone number
   string InpTextMessage="Hello :)";//Text message

//--- send SMS
   err=SkypeSendSMS(InpPhoneNumber,InpTextMessage);
   if(err==ERROR_NO_ERRORS)
      printf("Sent SMS to %s, text: '%s'.",InpPhoneNumber,InpTextMessage);
   else
      printf("Error sending SMS to %s, error: '%s'.",InpPhoneNumber,SkypeErrorDescription(err));

3. Текущий статус пользователя

Функции для чтения и установки текущего статуса пользователя. Возможные значения параметра status перечислены в таблице 1.

int SkypeSetStatus(int status);
int SkypeGetStatus(int &status);

4. Описание возвращаемых значений

Все функции возвращают целочисленное значение, которое можно проанализировать при необходимости.

имя константы
значение
 описание
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-объекта

Таблица 2. Перечень возвращаемых значений

Для получения строки описания ошибки можно использовать функцию:

string SkypeErrorDescription(int error);

4. Первый запуск

При первом обращении MetaTrader 5 к Skype появляется всплывающее окно с возможностью открыть доступ для управление программой.


После подтверждения доступа к Skype, запрашиваемый процесс попадает в список, хранящийся в настройках программы: Tools -> Options -> Advanced -> Manage other programs' access to Skype.


 

5. Ошибки выполнения

В случае, если функция возвращает код ERROR_SKYPE4COM, возможно отсутствует регистрация ActiveX компонента. Можно повторно зарегистрировать Skype4COM.dll используя утилиту regsvr32.

Работа с библиотекой скомпилированной для MetaTrader 5 x64 заканчивается ошибкой "Stack overflow". Если это связано с Skype4COM, то остается лишь ждать новых обновлений, где эта ошибка будет устранена.

В приложении находится архив с исходным кодом библиотеки (проект для Microsoft Visual C++ 2013) и тестовый скрипт для проверки её работоспособности.

FX_Sniper_Ergodic_CCI FX_Sniper_Ergodic_CCI

Эргодический CCI.

Auto Fibonacci Indicator (Auto Fibos) Auto Fibonacci Indicator (Auto Fibos)

Существует уже достаточно много индикаторов Фибоначчи, но я решил сделать свой собственный индикатор для вас.

OpenBuyPosition_X OpenBuyPosition_X

Скрипт OpenBuyPosition_X предназначен для совершения покупок с фиксированными значениями стоп-лосса и тейк-профита в пунктах от текущей цены. Объём позиции определяется исходя из уровня убытков.

OpenSellPosition_X OpenSellPosition_X

Скрипт OpenSellPosition_X предназначен для совершения продаж с фиксированными значениями стоплосса и тейкпрофита в пунктах от текущей цены. Объём позиции определяется исходя из уровня убытков.