Servicios. ¿Ya están en marcha? - página 24

 
Aliaksandr Hryshyn:
1. Carga de noticias en segundo plano
2. cálculos pesados en múltiples hilos (copias en ejecución del servicio) para que no afecten al comercio.
3. Expert Advisor recoge información de la copa y el servicio la empaqueta periódicamente en un archivo zip.
4. Recogida de toda la información de las operaciones cuando trabajan varios Asesores Expertos, procesándola y guardándola en la base de datos o enviándola.
5. ...
¿Cuáles son sus opciones?
1. Si se sube a un archivo, entonces sí.

2. Puedes hacerlo.

3. No estoy seguro. ¿Acepta el servicio los eventos de la pila? Si no es así, hay que pasar de la EA y pierde su sentido.

4. Si cada EA simplemente escribe sus informes en un archivo, y el servicio los lee y analiza, entonces, sí.

Todavía estoy pensando en mis propias variantes
 
Roman:

Expert/Script requiere un gráfico abierto.
El número de gráficos, está limitado por el terminal.
Cada renderización/actualización del gráfico, es una cola de mensajes del sistema y una carga de recursos innecesaria.

De acuerdo.
 
fxsaber:

2-3 se puede implementar a través de un script en OBJ_CHART.

El servicio se inicia en el inicio del terminal, el script no puede hacerlo.
 
Aliaksandr Hryshyn:
El servicio se inicia cuando se inicia el terminal, el script no puede hacer eso.

Esto no es necesario en estas dos tareas.

 
Aliaksandr Hryshyn:
1. Carga de noticias en segundo plano
2. Cálculos pesados en múltiples hilos (copias en ejecución del servicio) para que no afecten al comercio.
3. Expert Advisor recoge información de la copa y el servicio la empaqueta periódicamente en un archivo zip.
4. Recogida de toda la información de las operaciones cuando trabajan varios Asesores Expertos, procesándola y guardándola en la base de datos o enviándola.
5. ...
¿Cuáles son sus opciones?

Para todas estas tareas necesitaremos resolver el problema del intercambio de datos entre un grupo de Asesores Expertos y el servicio

lo máximo que puedo sugerir para el servicio es escuchar el socket en el que irán los precios de otro broker y reenviarlo al gráfico de tick personalizado para poder arbitrar, y en el gráfico personalizado un Expert Advisor trabajando por TS

 
Igor Makanu:

para todas las tareas anteriores, habrá que resolver la tarea de intercambio de datos entre el grupo asesor y el servicio

Quizá la memoria compartida para el intercambio de datos entre programas sea ahora proporcionada por las BD en lugar de los recursos, lo que simplificará enormemente la implementación y la interacción.
 
Sergey Lebedev:
El principal problema de los servicios no es el mango de la terminal, sino todos los casos de margen.

Un reconector automático no puede realizarse sin un mango. Y es algo muy necesario para el comercio real.

 
Opción para implementar OnTick/OnBookEvent multidivisa en scripts/servicios.
//#property service

#include <NewData.mqh> // https://c.mql5.com/3/354/NewData.mqh

// Script/Service main function.
void OnStart()
{
  const string Symbols[] = {"EURUSD", "GBPUSD"};
  
  NEWDATA<TICK> Ticks(Symbols);
  NEWDATA<BOOKS> Books(Symbols);

  while (!IsStopped())
  {
    Ticks.Refresh();
    Books.Refresh();
        
    Sleep(50);
  }
}

void OnTick( const string &Symb )
{
  MqlTick Tick;
  
  if (SymbolInfoTick(Symb, Tick))  
    Print(Symb + " - new tick: " + (string)Tick.time);
}

void OnBookEvent( const string &Symb )
{
  MqlBookInfo Books[];

  if (MarketBookGet(Symb, Books))  
    Print(Symb + " - new book: " + (string)ArraySize(Books) + " bands.");
}


Resultado.

2021.04.26 11:18:38.527 EURUSD - new tick: 2021.04.26 11:18:39
2021.04.26 11:18:38.527 EURUSD - new book: 14 bands.
2021.04.26 11:18:38.904 GBPUSD - new tick: 2021.04.26 11:18:39
2021.04.26 11:18:38.904 GBPUSD - new book: 16 bands.
2021.04.26 11:18:38.965 GBPUSD - new tick: 2021.04.26 11:18:39
2021.04.26 11:18:38.965 GBPUSD - new book: 16 bands.
2021.04.26 11:18:39.029 EURUSD - new tick: 2021.04.26 11:18:39
2021.04.26 11:18:39.029 EURUSD - new book: 14 bands.
2021.04.26 11:18:39.091 GBPUSD - new tick: 2021.04.26 11:18:39
2021.04.26 11:18:39.091 GBPUSD - new book: 15 bands.
2021.04.26 11:18:39.278 GBPUSD - new tick: 2021.04.26 11:18:40
2021.04.26 11:18:39.278 GBPUSD - new book: 16 bands.
2021.04.26 11:18:39.465 GBPUSD - new tick: 2021.04.26 11:18:40
2021.04.26 11:18:39.465 GBPUSD - new book: 16 bands.
2021.04.26 11:18:39.714 GBPUSD - new tick: 2021.04.26 11:18:40
2021.04.26 11:18:39.715 GBPUSD - new book: 16 bands.
2021.04.26 11:18:40.589 GBPUSD - new tick: 2021.04.26 11:18:41
2021.04.26 11:18:40.589 GBPUSD - new book: 16 bands.
Archivos adjuntos:
NewData.mqh  2 kb
 
Hola. Quería utilizar un servicio para crear un emisor de mensajes universal (correo, telegrama con capturas de pantalla) de todos los EAs de todos los gráficos. La idea era que los EAs enviaran eventos personalizados con el gráfico, el texto del mensaje y otros parámetros y el servicio escuchara los eventos, tomara capturas de pantalla de los gráficos especificados y enviara los mensajes requeridos. Sin embargo, he leído que los servicios no pueden aceptar eventos de los gráficos. Entonces, ¿la solución es utilizar las variables globales del terminal? Supongamos un array global de estructuras, en el que los gráficos añadirán elementos, y el servicio, como procesamiento (envío de mensajes), los eliminará. ¿Qué le parece esta idea? ¿Quizás haya otras ideas? Soy nuevo en MQL, estoy leyendo más que escribiendo. Esta idea apareció para liberar al hilo del Asesor Experto de la operación de envío de mensajes. También podría aplicarse al envío de mensajes por indicadores.
 
Реter Konow #:
puede enviar todos los eventos al servicio desde el EA a través de los recursos. Y ahora, también a través de la base de datos.
¿El asesor debe escribirlo en un archivo y conectarlo como una variable de recurso en el servicio?
Razón de la queja: