Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
- Visualizações:
- 800
- Avaliação:
- Publicado:
- 2016.06.24 12:46
- Atualizado:
- 2016.11.22 07:33
-
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 |
![]() ![]() |
STATUS_ONLINE | 2 |
![]() |
STATUS_AWAY | 4 |
![]() |
STATUS_DONT_DISTURB |
16 |
![]() |
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](https://c.mql5.com/i/code/expert.png)
O Expert Advisor mostra os valores atuais do World Stock Indices a partir do Google Finance usando a função WebRequest.
![SignalsDemo](https://c.mql5.com/i/code/expert.png)
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](https://c.mql5.com/i/code/indicator.png)
Um oscilador para negociação intraday.
![spread_on_chart](https://c.mql5.com/i/code/indicator.png)
O indicador spread_on_chart mostra os valores atuais dos níveis de spread, stop e congelamento.