Servizi. Sono già in funzione? - pagina 24

 
Aliaksandr Hryshyn:
1. Caricamento in background delle notizie
2. calcoli pesanti in più thread (copie in esecuzione del servizio) in modo che non influenzino il commercio.
3. Expert Advisor raccoglie informazioni dalla tazza, e il servizio le impacchetta periodicamente in un archivio zip.
4. Raccolta di tutte le informazioni di trading quando lavorano più Expert Advisors, elaborazione e salvataggio nel database o invio.
5. ...
Quali sono le sue opzioni?
1. Se si carica su un file, allora sì.

2. È possibile.

3. Non sono sicuro. Il servizio accetta gli eventi dello stack? In caso contrario, devono essere passati dall'EA e perde il suo significato.

4. Se ogni EA scrive semplicemente i suoi rapporti in un file, e il servizio li legge e li analizza, allora sì.

Sto ancora pensando alle mie varianti
 
Roman:

Expert/Script richiede un grafico aperto.
Il numero di grafici è limitato dal terminale.
Ogni rendering/aggiornamento del grafico è una coda di messaggi di sistema e un carico di risorse non necessario.

D'accordo.
 
fxsaber:

2-3 può essere implementato tramite uno script su OBJ_CHART.

Il servizio viene avviato all'inizio del terminale, lo script non può farlo.
 
Aliaksandr Hryshyn:
Il servizio si avvia all'avvio del terminale, lo script non può farlo.

Questo non è richiesto in questi due compiti.

 
Aliaksandr Hryshyn:
1. Caricamento delle notizie in background
2. Calcoli pesanti in più thread (copie in esecuzione del servizio) in modo che non influenzino il commercio.
3. Expert Advisor raccoglie informazioni dalla tazza, e il servizio le impacchetta periodicamente in un archivio zip.
4. Raccolta di tutte le informazioni di trading quando lavorano più Expert Advisors, elaborazione e salvataggio nel database o invio.
5. ...
Quali sono le sue opzioni?

Per tutti questi compiti dovremo risolvere il problema dello scambio di dati tra un gruppo di Expert Advisors e il servizio

il massimo che posso suggerire per il servizio è quello di ascoltare il socket su cui andranno i prezzi da un altro broker e trasmetterlo al grafico tick personalizzato per arbitrare, e sul grafico personalizzato un Expert Advisor che lavora da TS

 
Igor Makanu:

per tutti i compiti di cui sopra, il compito di scambiare dati tra il gruppo di consulenza e il servizio dovrà essere risolto

Forse la memoria condivisa per lo scambio di dati tra i programmi sarà ora fornita dai DB piuttosto che dalle risorse, il che semplificherà notevolmente l'implementazione e l'interazione.
 
Sergey Lebedev:
Il problema principale dei servizi non è la maniglia del terminale - sono tutti i casi di margine.

Un riconnettore automatico non può essere realizzato senza un Manico. Ed è una cosa molto necessaria per il vero trading.

 
Opzione per implementare OnTick/OnBookEvent multivaluta negli script/servizi.
//#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.");
}


Risultato.

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.
File:
NewData.mqh  2 kb
 
Ciao, volevo usare un servizio per creare un mittente di messaggi universale (mail, telegramma con screenshot) da tutti gli EA di tutti i grafici. L'idea era che gli EA avrebbero inviato eventi personalizzati con grafico, testo del messaggio e altri parametri e il servizio avrebbe ascoltato gli eventi, preso screenshot dei grafici specificati e inviato i messaggi richiesti. Tuttavia, ho letto che i servizi non possono accettare eventi dai grafici. Quindi, la soluzione è usare le variabili globali del terminale? Supponiamo un array globale di strutture, in cui i grafici aggiungeranno elementi, e il servizio, come elaborazione (invio di messaggi), li rimuoverà. Cosa ne pensate di una tale idea? Forse ci sono altre idee? Sono nuovo di MQL, sto leggendo più che scrivendo. Questa idea è apparsa per liberare il thread EA dall'operazione di invio del messaggio. Inoltre, potrebbe essere applicato all'invio di messaggi tramite indicatori.
 
Реter Konow #:
è possibile inviare tutti gli eventi al servizio dall'EA tramite risorse. E ora, anche attraverso il database.
Il consigliere è quello di scriverlo in un file e collegarlo come variabile di risorsa nel servizio?