Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Twitter!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Bibliotecas

Skype Control Library - biblioteca para MetaTrader 4

Visualizações:
771
Avaliação:
(34)
Publicado:
2016.06.24 12:46
Atualizado:
2016.11.22 07:33
skypemql.zip (756.34 KB)
\MQL4\Scripts\
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Na negociação automática, o Skype pode ser usado no envio de mensagens de texto com as informações necessárias. Neste caso, o trabalho com o Skype é realizado via a biblioteca Skype4COM, isto é um componente ActiveX que representa o acesso a gestão do programa. Você pode baixar o Skype4COM a partir do site oficial dos desenvolvedores: http://dev.skype.com/accessories/skype4com

O arquivo Skype4COM.dll deve ser instalado e registrado.

Para operar no system x86:

  • Copie para a pasta %systemroot%\System32;
  • Execute a linha de comando: %systemroot%\System32\regsvr32.exe %systemroot%\System32\Skype4COM.dll.

para operar no system x64:

  • Copie para a pasta %systemroot%\SysWOW64;
  • Execute a linha de comando: %systemroot%\SysWOW64\regsvr32.exe %systemroot%\SysWOW64\Skype4COM.dll.

Este arquivo de biblioteca Skype MQL.dll deve ser instalado na pasta: [Diretório do terminal]\MQL5\Libraries

 

1. Envio de mensagens instantâneas

int SkypeSendInstantMessageW(string skype_name,string message,int status);
int SkypeSendInstantMessageA(string skype_name,string message,int status);// for MetaTrader 4

Existem vários testes numa função antes de enviar uma mensagem instantânea:

  • O nome de usuário não pode ser vazio ou começar com um número.
  • O usuário com o nome especificado deve estar na lista de contatos.
  • A mensagem não pode ser uma string vazia.
  • O status da rede do destinatário deve coincidir com o valor especificado.

A lista das constantes de status da rede:

nome da constante
valor
descrição
STATUS_OFFLINE 1
Offline
STATUS_ONLINE 2
Online
STATUS_AWAY 4
Fora de lugar
STATUS_DONT_DISTURB
16
Não perturbe

Para definir vários estados permitidos simultaneamente bit-por-bit, além de restrições é utilizado, por exemplo: STATUS_ONLINE | STATUS_AWAY.

O comprimento máximo de uma mensagem instantânea é ~8000 símbolos ANSI, ~4000 símbolos Unicode.

O exemplo de código:

string InpSkypeName     =  "echo123";        // Nome Skype 
string InpTextMessage   =  "Hello :)";       // Mensagem de texto

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. Envio de mensagens SMS

O serviço para enviar mensagens SMS é gratuíto no momento!

int SkypeSendSmsMessageW(string phone_number, string message);
int SkypeSendSmsMessageA(string phone_number, string message);// MetaTrader 4

Existem vários testes antes de enviar uma mensagem SMS:

  • O número de telefone deve ser especificado no formato internacional: + [código do país] [código da cidade ou da rede] [número de telefone]
  • O comprimento da string que contém o número de telefone deve ter pelo menos 7 símbolos e começar com um sinal '+'
  • A mensagem de texto não deve ser uma sequência vazia.

O envio de SMS para um número que não existe não é um erro. O custo para esta operação será cobrada, mas retornará após um curto período de tempo, mostrando que a mensagem não foi entregue.

A mensagem SMS é limitada a 116 símbolos ANSI, 58 símbolos Unicode .

O exemplo de código:

input string InpPhoneNumber   =  "+380123456789";  // Número do telefone
input string InpTextMessage   =  "Hello :)";       // Mensagem de texto

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. Descrição dos valores de retorno

Ambas as funções devolvem um valor de número inteiro que pode ser analisado, se necessário.

nome da constante
valor
 descrição
ERROR_UNKNOWN
-1
Erro desconhecido
ERROR_NO_ERRORS
0 Execução bem sucedida
ERROR_ATTACH
1
Falha ao conectar no Skype
ERROR_AUTHORIZED
2
Não existe nenhum utilizador especificado na lista de contatos
ERROR_STATUS
3
Status inválido de usuário
ERROR_TIMEOUTS
4
Tempo esgotado
ERROR_RUNNING 5 Skype não está carregando à memória
ERROR_SENDING 6
Erro de envio
ERROR_VALUE 7 Erro de transferência dos parâmetros
ERROR_ACCESS 8 O acesso ao Skype foi negado
ERROR_SKYPE4COM 9 para x86: Skype4COM.dll não está registrado
para x64: erro de criação do objeto COM

 

4. O primeiro lançamento

Na primeira conexão MetaTrader 5 para Skype, uma janela pop-up aparece, o que permite o acesso a gestão do programa.

Após confirmar o acesso ao Skype, o processo de solicitação de entrada para a lista armazenada nas configurações do programa: Ferramentas -> Opções -> Avançado -> Gerir o acesso de outros programas ao Skype.

 

5. Erros de execução

Por razões desconhecidas, o trabalho com a biblioteca compilada para MetaTrader 5 x64 termina com uma "pilha cheia" de erros. Se ele está conectado com Skype4COM, então você deve esperar as novas mensagens enquanto esse erro é corrigido.

O anexo possui um arquivo com o código da biblioteca de origem (um projeto para Microsoft Visual C ++ 2010) e um script de teste para verificar o seu desempenho.

Traduzido do inglês pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/en/code/11453

QuotesDemo QuotesDemo

O Expert Advisor mostra os valores atuais do World Stock Indices a partir do Google Finance usando a função WebRequest.

SignalsDemo SignalsDemo

O Expert Advisor mostra as propriedades dos sinais, permite modificar as configurações da cópia do sinal e de assinar ou cancelar a inscrição no sinal de negociação selecionado.

AFL Winner AFL Winner

Um oscilador para negociação intraday.

spread_on_chart spread_on_chart

O indicador spread_on_chart mostra os valores atuais dos níveis de spread, stop e congelamento.