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.
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ê.
#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.
Você pode usar essa técnica para não alterar o material de origem original
Técnica interessante, nunca pensei nisso antes. Obrigado.
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.
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.
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á.
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á)?
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
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