Discussão do artigo "Métodos de controle remoto de EAs"

 

Novo artigo Métodos de controle remoto de EAs foi publicado:

A principal vantagem dos robôs de negociação é o fato de poderem trabalhar 24 horas por dia em servidores VPS remotos. Ás vezes, é necessário intervir em seu trabalho manualmente, porém, pode não haver acesso direto ao servidor. Será que é possível gerenciar o trabalho de EAs remotamente? Esse artigo propõe uma das maneiras para controlar robôs por meio de comandos externos.

Hoje em dia, tornou-se bastante comum o uso de robôs e EAs para negociar nos mercados financeiros. A execução perfeita de algoritmos e trabalho 24 horas por dia são considerados como as principais vantagens dos EAs. Para seu uso ininterrupto, são alugadas hospedagens virtuais, o que permite que os EAs sejam usados independentemente 24 horas por dia.

Mas, infelizmente, nem todos eles funcionam igualmente bem em todas as situações de mercado. Ás vezes, é necessário gerenciar manualmente seu trabalho: habilitar e desabilitá-los. Isso é fácil de fazer quando o usuário está perto do terminal. Porém, o que se deveria fazer, se você não tiver acesso rápido a terminais com EAs em funcionamento? Nesses casos, seria bom poder controlar remotamente seu trabalho. Vamos considerar um dos possíveis métodos de controle remoto de EAs no terminal.


Autor: Dmitriy Gizlyk

 

Obrigado pelo artigo. Um agradecimento especial pelo link para a biblioteca de alteração de estados do Expert Advisor. Trabalhar com modelos é, de fato, uma solução muito original.

Mas, para ser sincero, quando vi o título, pensei que seria algo sobre cliente-servidor ou sockets....

Se você tiver várias contas, ficará cansado de colocar ordens pendentes em todos os lugares.

Em algum lugar do fórum, havia uma biblioteca para interação via telegrama. Há mais possibilidades lá, e todos os comandos podem ser definidos pressionando botões pré-preparados no bot.

 
Sergey Likho:

Obrigado pelo artigo. Um agradecimento especial pelo link para a biblioteca de alteração de estados do Expert Advisor. Trabalhar com modelos é, de fato, uma solução muito original.

Mas, sinceramente, depois de ver o título, pensei que seria algo sobre cliente servidor ou sockets....

Se você tiver várias contas, ficará cansado de colocar ordens pendentes em todos os lugares.

Em algum lugar do fórum, havia uma biblioteca para interação via telegrama. Há mais possibilidades lá, e todos os comandos podem ser definidos pressionando botões pré-preparados no bot.

Até onde sei, há planos para preparar um artigo sobre gerenciamento via telegrama e até mesmo um autor foi nomeado. Talvez o novo artigo seja mais útil para você.

 
Para a conveniência de nosso uso, vamos tornar públicos todos os métodos da biblioteca.
Podemos usar esse truque para não alterar o código-fonte original
#define private public
  #include <fxsaber\Expert.mqh> // https://www.mql5.com/pt/code/19003
#undef private

#define  STRING_END "\r\n"
#define  EXPERT_BEGIN ("<expert>" + STRING_END)
#define  EXPERT_END ("</expert>" + STRING_END)
#define  EXPERT_NAME "name="


Assim, para ativar/desativar o Expert Advisor, só precisamos reescrever o arquivo de modelo, alterando o sinalizador expertmode para o valor de que precisamos e removendo os objetos ocultos.

Eu não sabia sobre esse sinalizador e também não pensei nas sutilezas de trabalhar com objetos.


Este código

      string temp=EXPERT::TemplateToString(i_chart,true);
      if(temp==NULL)
        {
         i_chart=ChartNext(i_chart);
         continue;
        }
//---
      temp=EXPERT::StringBetween(temp,EXPERT_BEGIN,EXPERT_END);
      if(temp==NULL)
        {
         i_chart=ChartNext(i_chart);
         continue;
        }

não só detectará os EAs, mas também os scripts. Por isso, provavelmente é melhor que seja assim

      if(!EXPERT::Is(i_chart))
        {
         i_chart=ChartNext(i_chart);
         continue;
        }
      
      
      string temp=EXPERT::TemplateToString(i_chart,true);

Nesse caso, os modelos serão salvos somente onde forem necessários.


ZY Eu não criei o FileDelete intencionalmente para que você sempre pudesse ver o último modelo gerado.

 
fxsaber:
Você pode usar essa técnica para não alterar o material de origem original

Técnica interessante, nunca pensei nisso antes. Obrigado.

 
fxsaber:

Este código


não só detectará os EAs, mas também os scripts. Por isso, provavelmente é melhor que seja assim

Nesse caso, os modelos serão salvos somente onde forem necessários.

No código, TemplateToString foi intencionalmente chamado com o sinalizador true. Talvez você tenha esquecido, mas no corpo da função com o sinalizador true, a presença do Expert Advisor no gráfico é verificada chamando o método Is.

 static string TemplateToString( const long Chart_ID = 0, const bool CheckExpert = false )
  {
    short Data[];

    return(((!CheckExpert || EXPERT::Is(Chart_ID)) && ::ChartSaveTemplate((ulong)Chart_ID, PATH + FILENAME) && (::FileLoad(FILENAME, Data) > 0)) ?
           ::ShortArrayToString(Data) : NULL);
  }

É por isso que os dois códigos devem funcionar da mesma forma.

Em geral, obrigado pela biblioteca e por seus comentários.
Atenciosamente,
Dmitry.

 
Dmitriy Gizlyk:

No código, TemplateToString foi intencionalmente chamado com o sinalizador true. Talvez você tenha esquecido, mas a presença de um Expert Advisor no gráfico é verificada chamando o método Is no corpo da função com o sinalizador true.

De fato, eu me esqueci.

Em geral, obrigado pela biblioteca e por seus comentários.

Fico feliz que você a tenha entendido e que tenha acrescentado algo substancialmente. De fato, não faria mal nenhum corrigi-la levando em conta as nuances que você mencionou.

 
Certamente é bom, programação para lembrar e assim por diante, o artigo é até interessante.
Mas tenho uma pergunta na cabeça: sou o único que é tão preguiçoso que o terminal está sendo executado em um PC em casa e eu trabalho com ele no meu telefone por meio do TimWeaver? Ou ninguém ouviu falar dessa oportunidade?
Vejo apenas vantagens, a saber:
-não há necessidade de um IP dedicado
-A natureza multiplataforma desse programa (para Windows, Mac, Android, iOS)
-gratuito
-conveniência do trabalho, como se você estivesse sentado em seu PC em casa...
-não há necessidade de um monte de modelos, montanhas de código.
Você sempre vê tudo no terminal móvel; se algo precisa ser corrigido, você pode abrir o aplicativo e corrigir o que precisa, seja desligar um Expert Advisor ou iniciar outro, ou apenas corrigir algo nas configurações. Até mesmo o ponto de desligar ou reiniciar o PC completamente....
 
sic20101:
Mas tenho uma pergunta na cabeça: sou o único que é tão preguiçoso que o terminal está sendo executado em um PC em casa e eu trabalho com ele no meu telefone por meio do TimWeaver? Ou ninguém ouviu falar dessa possibilidade?

Acontece que o VPS (ou seu PC em casa) com o Expert Advisor está off-line por algum tempo por motivos técnicos. Não se sabe quando ele voltará a ficar on-line, mas você precisa, por exemplo, não negociar, pois sabe que pode haver mais interrupções. Nesse caso, o controle remoto proposto permite muito mais do que a sua variante.


Há também VPS da MetaQuotes. É só assim lá.

 
fxsaber:
Isso não acontecerá por um motivo: não há Internet - não há negociação, e você provavelmente não percebeu que o controle da conta é visível no seu telefone ou tablet. Se a Internet estiver fora do ar, simplesmente fechamos todas as negociações com as mãos e, em seguida, esperamos que a Internet apareça ou estamos em casa para realizar outras ações no PC.
Analisando apenas meu método, que uso há mais de um ano, o acesso à rede é o único gargalo. E esse problema está apenas na escolha do provedor, já que o serviço TimWeaver não funciona no primeiro ano, e mesmo que ele caia, você sempre pode deixar o google chrome, que também tem essa função, que certamente não morrerá tão cedo....
 
sic20101:
Isso não acontecerá por um motivo: não há Internet - não há negociação, e você provavelmente não percebeu que o controle da conta é visível no seu telefone ou tablet. Se a Internet estiver fora do ar, simplesmente fechamos todas as negociações com as mãos e, em seguida, esperamos que a Internet apareça ou estamos em casa para realizar outras ações no PC.

No terminal do seu computador sem internet, você está longe. Você tem acesso à sua conta, mas não ao terminal com o Expert Advisor. Como fazer com que o Expert Advisor não opere quando estiver conectado ao servidor de negociação (a Internet funcionará)?