Discussão do artigo "Raspagem de dados da web sobre a rentabilidade dos títulos públicos"

 

Novo artigo Raspagem de dados da web sobre a rentabilidade dos títulos públicos foi publicado:

Automatize a coleta de dados sobre a taxa de juros para melhorar o desempenho de um Expert Advisor.

A negociação automatizada é baseada quase inteiramente em indicadores técnicos que usam a ação do preço anterior para prever a ação futura do preço. No entanto, o trader que ignora as forças fundamentais que movem os mercados está em desvantagem para os traders que tomam os dados fundamentais em suas decisões de negociação. Um indicador baseado na coleta automática de dados fundamentalistas pode melhorar o desempenho de um Expert Advisor. Os dados fundamentalistas que mais afetam as taxas de câmbio são as taxas de juros, que afetam o sentimento de valor sobre as moedas. Enquanto as taxas do banco central não são voláteis, os títulos públicos do governo como a nota do tesouro americano de 10 anos, flutua a todo tempo nos mercados globais de títulos. Esses retornos refletem a expectativa do mercado quanto ao futuro das taxas do banco central. A rentabilidade dos títulos são, frequentemente, um indicador importante das taxas de juro e das taxas de câmbio. No mercado forex, a métrica que se aplica à um par de moedas é o diferencial da taxa de juros, especialmente o delta, ou a alteração no diferencial da taxa de juros, em vários vencimentos. A Figura 1 mostra um caso em que o movimento do diferencial de taxa de juros, expresso em pontos base, na direção positiva, foi um importante indicador do movimento do par de moeda EUR/USD na mesma direção. Este artigo mostra como coletar os dados da rentabilidade dos títulos públicos da Web e derivar a partir desses dados as expressões do diferencial da taxa de juros e o delta.


Indicador principal do diferencial de taxa de juros

Figura 1. Indicador do diferencial da taxa de juros no gráfico de 60 minutos do EUR/USD.

Autor: Steven Brown

 

é isso que recebo quando anexo o script05

e nada é impresso no gráfico ou na área do indicador...

O que estou perdendo?


2019.04.14 17:11:18.623 Scripts script bonds (EURUSD,Daily) loaded successfully

2019.04.14 17:11:18.984 Scripts script bonds (EURUSD,Daily) removido



 
jimjack:

É isso que recebo quando anexo o script05

e nada é impresso no gráfico ou na área do indicador...

O que estou perdendo?


2019.04.14 17:11:18.623 Scripts script bonds (EURUSD,Daily) loaded successfully

2019.04.14 17:11:18.984 Scripts script bonds (EURUSD,Daily) removido



O ScraperBot06.mq4 funciona bem no MT5 e faz a mesma coisa que o ScraperBot05.mq5. A diferença é que o ScraperBot05 usa o WebRequest(), enquanto o ScraperBot06 usa as funções do WinINet.dll, que parece ser mais confiável do que o WebRequest(). Vou analisar o problema para ver se o ScraperBot05.mq5 usando WebRequest() pode funcionar. Funcionou bem quando enviei o artigo em outubro de 2018.

Edit: A chamada para WebRequest() no ScraperBot05.mql e outros scripts funcionará somente se o servidor nomeado na solicitação da Web for permitido nas opções do Metatrader. Isso é explicado no artigo.

 
O ScraperBot06.mq5 anexado a esta mensagem é o mesmo que o ScraperBot05.mq5, mas usa as funções do WinINet.dll em vez do WebRequest(). Fiz o upload do ScraperBot06.mq5 porque o WebRequest() no ScraperBot05.mq5 agora retorna o código de erro -1, após o qual o GetLastError() retorna o código 4014,

ERR_FUNCTION_NOT_ALLOWED

4014

A função não é permitida para a chamada

O Metatrader 5 pode ter alterado a implementação do WebRequest() desde que enviei o artigo em outubro de 2018, mas a documentação do WebRequest() não foi alterada.

Edit: o problema foi resolvido no meu computador depois de permitir solicitações ao servidor da Web "https://api.wsj.net" nas opções do Metatrader. Aparentemente, a permissão foi removida por uma atualização do Metatrader.

Arquivos anexados:
 
Steven Brown:
O ScraperBot06.mq5 anexado a esta mensagem é o mesmo que o ScraperBot05.mq5, mas usa as funções do WinINet.dll em vez do WebRequest(). Fiz o upload do ScraperBot06.mq5 porque o WebRequest() no ScraperBot05.mq5 agora retorna o código de erro -1, após o qual o GetLastError() retorna o código 4014,

ERR_FUNCTION_NOT_ALLOWED

4014

A função não é permitida para a chamada

O Metatrader 5 pode ter alterado a implementação do WebRequest() desde que enviei o artigo em outubro de 2018, mas a documentação do WebRequest() não foi alterada.




Obrigado por sua resposta.

Compilei novamente e há um monte de avisos dizendo "possível perda de dados devido à conversão de tipos"

Ainda não consegui ver nada no terminal. A dll é permitida.

Preciso de algum outro pacote da Microsoft, .net etc.?


Obrigado



 
IMPORTANTE! A chamada para WebRequest() no ScraperBot04.mq5 e no ScraperBot05.mq5 funcionará somente se o servidor nomeado na solicitação da Web for permitido nas opções do Metatrader. Para ativar um servidor da Web, clique em Tools\Options e, na caixa de diálogo exibida, clique na guia Expert Advisors. Marque "Permitir solicitação da Web para o URL listado", clique em "Adicionar novo URL" e digite o URL de base do servidor da Web. No caso do ScraperBot05, esse URL é"https://api.wsj.net". Se você não fizer isso, a chamada para WebRequest() falhará, informando os códigos de erro -1 e 4014. Essa necessidade de permitir especificamente um servidor da Web é mencionada no artigo sob o título "ScraperBot04". Escrevi: "Para que o WebRequest funcione, o URL de base do servidor, nesse caso'https://api.wsj.net', precisa ser incluído na lista de servidores permitidos em "Tools\Options\Expert Advisors" na plataforma MetaTrader."

Eu tinha o servidor da Web"https://api.wsj.net" permitido em minha cópia do Metatrader 5, mas ele foi removido da lista por uma atualização para uma nova versão do Metatrader 5. Isso não deveria acontecer, e parece ser um bug que deve ser corrigido pela Metaquotes. Quando um servidor da Web é permitido, ele deve permanecer permitido por meio de atualizações.
 
jimjack:




Obrigado por sua resposta.

Eu o compilei novamente e há um monte de avisos dizendo "possível perda de dados devido à conversão de tipos"

Ainda não consegui ver nada no terminal. A dll é permitida.

Preciso de algum outro pacote da Microsoft, .net etc.?


Obrigado



Os avisos do compilador sobre a perda de dados podem ser ignorados, pois são o resultado do uso do tipo float em vez do tipo double. Optei por usar o tipo float porque a precisão do tipo double não é necessária neste aplicativo. Após os avisos, a compilação foi bem-sucedida com zero erros. Você baixou, compilou e experimentou o script que anexei à minha resposta, chamado ScraperBot06.mq5? Ele usa WinINet.dll em vez de WebRequest(). Quanto à falha na chamada para WebRequest() no ScraperBot05, você tem o servidor da Web ativado nas opções do Metatrader? Veja meu post anterior, aquele que começa com"IMPORTANTE!" Escrevi no artigo que o WebRequest() falhará a menos que o servidor da Web seja especificamente permitido nas Opções.
 

hmmm,

deixe-me reinstalar o metatrader, porque a url foi permitida desde o início. sim, eu permiti o wininet.dll e verifiquei meus diretórios do win (10)... ele está lá.

 
Obrigado pelo artigo, muito interessante! Por favor, informe os resultados do uso desse sistema em negociações reais.
 
Obrigado pelo artigo, muito interessante! Por favor, informe os resultados do uso desse sistema em negociações reais.
 
A maneira real de criar sistemas de negociação automatizados realmente lucrativos.