Serviços. Eles já estão em funcionamento? - página 19

 
Sergey Golubev:

Há muitos anos, havia uma EA na parte inglesa do fio (desculpe, mas agora leva muito tempo para encontrá-la) que ao negociar (e analisar o mercado) gerou e atualizou um arquivo de texto, que foi lido em certos intervalos por outra EA trabalhando no mesmo Metatrader, mas em um par diferente (ou o mesmo, mas em um gráfico diferente). E ambos negociaram, comunicando-se um com o outro com este arquivo.

Eu o fiz para que o scalper-master se comunicasse com o scalper-escravo em outros terminais. Mas ele apenas transfere comandos de controle de um comerciante, portanto não há necessidade de clicar manualmente os mesmos botões em todos os terminais. Mas nada impede a transmissão de dados.

Se você pode se comunicar via mapeamento de memória, então adeus mercado

 

Eu trabalho muito com caracteres personalizados. Quase sempre é preciso matar um personalizado, mas é preciso fazê-lo manualmente. Decidi automatizá-lo.

E acabou sendo apenas o roteiro para Serviços. Provavelmente não é uma abordagem padrão para Serviços, mas eu queria um roteiro que não estivesse vinculado a gráficos. E aqui está o porquê

// Удаляет символ активного графика из Обзора рынка (кастомный - удаляет полностью).

#property service

// Находит чарт в фокусе.
long GetFocusChart()
{
  long Chart = ChartFirst();

  for (; Chart != -1; Chart = ChartNext(Chart))
    if (ChartGetInteger(Chart, CHART_BRING_TO_TOP))
      break;

   return(Chart);
}
   
// Удаляет чарты символа.
int DeleteCharts( const string Symb )
{
  int Res = 0;
  
  for (long Chart = ChartFirst(); Chart != -1; Chart = ChartNext(Chart))
    if (ChartSymbol(Chart) == Symb)
      Res += ChartClose(Chart);
  
  return(Res);
}

// Удаляет символ из Обзора рынка (кастомный - удаляет полностью).
bool DeleteSymbol( const string Symb )
{
  DeleteCharts(Symb);

  return(SymbolSelect(Symb, false) && (!SymbolInfoInteger(Symb, SYMBOL_CUSTOM) || CustomSymbolDelete(Symb)));
}

void OnStart()
{
  const long Chart = GetFocusChart();
  
  if (Chart != -1)
    DeleteSymbol(ChartSymbol(Chart));
}

Estava pensando em colocar uma tecla de atalho nesse roteiro/serviço e pregar um símbolo através dele quando eu vejo um gráfico de um símbolo indesejado. Seria muito útil. No entanto, deparou-se com dificuldades.

  • Não há maneira de se afixar uma tecla de atalho para o serviço.
  • Para reiniciar o Serviço, é necessário apagá-lo antes de fazê-lo. Isto é suposto ser necessário para iniciar os Serviços no primeiro início do Terminal. Mas meu caso é diferente.
  • SymbolSelect não funciona - ele não pode remover o símbolo. Bug, aparentemente.
Como resultado, é um aborrecimento. É possível resolver de alguma forma o lado prático dos Serviços?


ZZY Há uma solução para remover o símbolo do gráfico ativo.

 
fxsaber:

Eu trabalho muito com caracteres personalizados. Quase sempre é preciso matar um personalizado, mas é preciso fazê-lo manualmente. Decidi automatizá-lo.

E acabou sendo apenas o roteiro para Serviços. Talvez não seja exatamente uma abordagem padrão para Serviços, mas eu queria um roteiro que não estivesse vinculado a gráficos. E aqui está o porquê

Estava pensando em colocar uma tecla de atalho nesse roteiro/serviço e pregar um símbolo através dele quando eu vejo um gráfico de símbolos indesejados. Seria muito útil. No entanto, deparou-se com dificuldades.

  • Não há maneira de se afixar uma tecla de atalho para o serviço.
  • Para reiniciar o Serviço, é necessário apagá-lo antes de fazê-lo. Isto é suposto ser necessário para iniciar os Serviços no primeiro início do Terminal. Mas meu caso é diferente.
  • SymbolSelect não funciona - ele não pode remover o símbolo. Bug, aparentemente.
Como resultado, é um aborrecimento. É possível resolver de alguma forma o lado prático dos Serviços?


ZZY Há uma solução para remover o símbolo do gráfico ativo.

Você não pode colocar uma tecla de atalho em Serviços, porque a função OnChartEvent() não funciona lá; mas acho que você sabe disso. Portanto, o Expert Advisor deve trabalhar com hotkeys e passar os comandos para o Serviço através de recursos. Tente administrar o serviço com recursos.

SZY. É claro que, neste caso, perderemos o significado de Serviço. Afinal, você pode fechar os gráficos do Expert Advisor pressionando as teclas de atalho...

SZY. O único ponto é não produzir funcionalidade adicional em Expert Advisors. Podemos despejar a funcionalidade geral de vários EAs em serviço e chamá-lo através de um recurso. Dê-nos um comando sobre o que fazer.

 
Реter Konow:

Não posso colocar uma hotkey no serviço porque a OnChartEvent() não funciona lá


 
fxsaber:


Obrigado. Então qual é o problema?

Você quer que o próprio Serviço (funcionando sem parar) responda a toques de tecla.

 
Реter Konow:

Obrigado. Então qual é o problema?

Você quer que o próprio Serviço (funcionando sem parar) responda a toques de tecla.

Não. Você precisa do Serviço para poder trabalhar em modo Script sem estar vinculado a um gráfico.

 
fxsaber:

Não. Você precisa do Serviço para poder trabalhar em modo Script sem estar vinculado a um gráfico.

Funciona de outra forma?

 
Реter Konow:

Funciona de outra forma?

Sim.

 
fxsaber:

Sim.

Então ele pode executar qualquer gráfico? Facilmente.

 
O serviço opera com dados (cotações) com a possibilidade de corrigi-los, mas não permite gerenciar nada, em particular, as janelas do terminal, que é o que é necessário. Daí a conclusão óbvia: se for necessário fechar uma ou outra janela, o serviço gera uma cotação obviamente impossível para esta janela, e o script anexado a esta janela a fecha quando esta cotação é recebida.
Razão: