[RESOLU] Création d'un service (fonctionne dans l'expert TAB et pas dans le testeur de stratégies)

 

Bonjour à tous :)

Selon le tuto présenté à cette URL : https://www.mql5.com/en/articles/11826

J'essaie de créer un service. Mon code pour démarrer est tout simple : 

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   EventSetTimer(5); // Exécute OnTimer() toutes les 5 secondes
  }



//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTimer()
  {
   Alert("test");
  }


Malheureusement, je ne sais pas expliquer pourquoi aucune alerte se déclenche. J'ai essayé Print, Printf (CF le tuto), mais je n'arrive pas à afficher les informations d'un service ou que ce soit ... 

Savez vous me dire comment je dois m'y prendre ?

MQL5 Cookbook — Services
MQL5 Cookbook — Services
  • www.mql5.com
The article describes the versatile capabilities of services — MQL5 programs that do not require binding graphs. I will also highlight the differences of services from other MQL5 programs and emphasize the nuances of the developer's work with services. As examples, the reader is offered various tasks covering a wide range of functionality that can be implemented as a service.
 
mcorgnet:

Bonjour à tous :)

Selon le tuto présenté à cette URL : https://www.mql5.com/en/articles/11826

J'essaie de créer un service. Mon code pour démarrer est tout simple : 


Malheureusement, je ne sais pas expliquer pourquoi aucune alerte se déclenche. J'ai essayé Print, Printf (CF le tuto), mais je n'arrive pas à afficher les informations d'un service ou que ce soit ... 

Savez vous me dire comment je dois m'y prendre ?

Bonjour,

Selon la partie 2.3 de l’article sur les services : 

2.3 Prohibition on the use of functions in services

The developer provides an exhaustive list of functions not allowed for use:

This is reasonable since services cannot stop the Expert Advisor and work with the timer, since they handle a single Start event. They also cannot work with the functions of custom indicators.

Vous ne pouvez donc pas utiliser ces fonctions la.

Pour les utiliser, je vous suggère à la place de le faire avec un expert advisor, et non un service, en mettant EventSetTimer() dans OnInit(), puis en mettant votre action période dans OnTimer().

 

Bonjour, 

Merci beaucoup de cette réponse, votre aide est précieuse :) 

Il y a donc clairement une partie de mon traitement qui se fera avec un expert advisor. 


Néanmoins, je viens de tenter de copier/coller la documentation avec ce code très simple : 

//+------------------------------------------------------------------+
//| Service program start function                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
   string program_name=::MQLInfoString(MQL_PROGRAM_NAME);
   datetime now=::TimeLocal();
   ::PrintFormat("Service \"%s\" starts at: %s", program_name,::TimeToString(now, TIME_DATE|TIME_SECONDS));   
  }

Rien ne s'affiche dans aucun des journaux disponibles ... 

J'imagine que je regarde au mauvais endroit ou que je n'ai pas activé une option ? 


Au demeurant, je rencontre un autre problème : le lancement / coupure des services via meta editor est très instable (ça se lance parfois et reste actif, d'autres fois ça semble se lancer mais ne reste pas actif ...)


Merci encore de votre aide.

 
mcorgnet #:

Bonjour, 

Merci beaucoup de cette réponse, votre aide est précieuse :) 

Il y a donc clairement une partie de mon traitement qui se fera avec un expert advisor. 


Néanmoins, je viens de tenter de copier/coller la documentation avec ce code très simple : 

Rien ne s'affiche dans aucun des journaux disponibles ... 

J'imagine que je regarde au mauvais endroit ou que je n'ai pas activé une option ? 


Au demeurant, je rencontre un autre problème : le lancement / coupure des services via meta editor est très instable (ça se lance parfois et reste actif, d'autres fois ça semble se lancer mais ne reste pas actif ...)


Merci encore de votre aide.

Ce code fonctionne bien.

Avez-vous cette directive dans votre code ?

#property service
 

Bonjour, 

Voici ce qui est déclaré : 

#property service
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"

J'ai initialisé le fichier avec l'assistant, c'est ce qu'il a créé. J'ai l'impression que le service est actif, mais onStart, il n'affiche rien. 

Très difficile de debugguer :) 

 

En utilisant votre code.

 
Je viens de comprendre, depuis le début j'affichais le testeur de stratégies et c'était mon problème ? 
 

Bonjour, 

Merci beaucoup de votre aide Alain. 

Cela fonctionne effectivement très bien dans l'expert tab, mais n'est pas utilisable dans le testeur de stratégies.