Indicador não grava no MySQL, mas EA sim

 

Olá amigos,

Tenho um Indicador que ao tentar gravar no MySQL ele dá erro 4014 parece que é algo relacionado ao Socket.

Mas se eu copio e colo esse mesmo código para um EA e coloco para Rodar, ai grava bonitinho.

Mas tava lendo sobre o tema e não vi impedimentos para essa comunicação via Indicador. Alguém tem uma luz?

Penso ser algo relativo a porta que estou usando: 3306

Ou então algo relacionado ao IP. Pois para EA eu tenho a opção nas Configurações do MT5 de habilitar IP´s para WebRequest. Mas no Indicador não sei se é possível isso, talvez haja por código alguma forma de liberar esse IP via Indicador.

 
Ruy Christian Hoffmann:

...

Ruy, Abaixo um trecho da documentação WebRequest.


"A função WebRequest() é síncrona, o que significa que interrompe a execução do programa e aguarda a resposta do servidor solicitado. Uma vez que os atrasos na recepção de uma resposta podem ser grandes, a função não está disponível para chamadas a partir dos indicadores, porque os indicadores são executados em uma linha comum compartilhada por todos os indicadores e gráficos em um símbolo. O atraso de desempenho do indicador em um dos gráficos de um símbolo pode interromper a atualização de todos os gráficos do mesmo símbolo."


Acredito que uma maneira de contornar isso seria usar uma DLL nativa do Windows para sockets Ws2_32, abaixo sua documentação.

Quando foi introduzida a opção de se trabalhar com python, comecei um projeto de comunicação de "mão dupla", python <-> MQL5, e de cara me esbarrei em uma "limitação" das funções de rede, que é, não funcionar no testador de estratégias,  embora não tenha essa obs na documentação....Efim da pra fazer via DLL, named pips(sem uso de DLL).

Abaixo o link da documentação caso tenha curiosidade.

https://docs.microsoft.com/en-us/windows/win32/winsock/winsock-functions

Winsock functions - Win32 apps
  • 2019.10.01
  • stevewhims
  • docs.microsoft.com
The following list provides concise descriptions of each Winsock function. For additional information on any function, click the function name.
 
Jonathan Pereira:

Ruy, Abaixo um trecho da documentação WebRequest.


"A função WebRequest() é síncrona, o que significa que interrompe a execução do programa e aguarda a resposta do servidor solicitado. Uma vez que os atrasos na recepção de uma resposta podem ser grandes, a função não está disponível para chamadas a partir dos indicadores, porque os indicadores são executados em uma linha comum compartilhada por todos os indicadores e gráficos em um símbolo. O atraso de desempenho do indicador em um dos gráficos de um símbolo pode interromper a atualização de todos os gráficos do mesmo símbolo."


Acredito que uma maneira de contornar isso seria usar uma DLL nativa do Windows para sockets Ws2_32, abaixo sua documentação.

Quando foi introduzida a opção de se trabalhar com python, comecei um projeto de comunicação de "mão dupla", python <-> MQL5, e de cara me esbarrei em uma "limitação" das funções de rede, que é, não funcionar no testador de estratégias,  embora não tenha essa obs na documentação....Efim da pra fazer via DLL, named pips(sem uso de DLL).

Abaixo o link da documentação caso tenha curiosidade.

https://docs.microsoft.com/en-us/windows/win32/winsock/winsock-functions

Jonathannnnnnnnnnnnnnnnnnnnn :)

Bom dia meu amigo. Vou olhar o link e obrigado pela ajuda viu.

Razão: