Erreurs, bugs, questions - page 2968

 
Mihail Matkovskij:

Décidé de découvrir combien 2 agents du service MQL5 Cloud Network vont gagner afin de construire un fer à repasser avec un processeur multi-core dans le futur. J'ai ajouté les agents en utilisant Agent Manager. Il semble les avoir ajoutés sans problème.

Rien ne semblesuspect... Je me suis connecté à mon compte MQL5.COM. J'ai vu les agents créés dans la section "Agents" de monAlpari. J'ai également trouvé deux services, MetaTester-1 et MetaTester-2 dans le gestionnaire de tâches. Mais pendant une demi-journée, il n'y a pas de tâches pour les agents. Tout est nul. Pourquoi les agents ne travaillent-ils pas ?

Et maintenant je vois que tous les agents ont été supprimés de mon bureau.


Les services MetaTester-1 etMetaTester-2 apparaissentdans le Gestionnaire de tâches et dans le Gestionnaire d'agents, mais le Gestionnaire d'agents indique que les services sont désactivés. Et ils ne sont pas dans le Cabinet, même s'ils y étaient hier... Quelle est la raison d'un tel comportement du MQL5 Cloud Network?

Распределенные вычисления в сети MQL5 Cloud Network
Распределенные вычисления в сети MQL5 Cloud Network
  • cloud.mql5.com
Заработать деньги, продавая мощности своего компьютера для сети распределенных вычислений MQL5 Cloud Network
 
Mihail Matkovskij:

Et maintenant je vois que les agents ont été supprimés dans mon armoire.


Les services MetaTester-1 etMetaTester-2 sont affichésdans le Gestionnaire des tâches et dans le Gestionnaire des agents, mais le Gestionnaire des agents indique que les services sont désactivés. Et ils ne sont pas dans le cabinet, même s'ils y étaient hier... Quelle est la raison pour laquelle le MQL5 Cloud Network se comporte de cette façon ?

Personne n'est supprimé - décochez cette case...

 
Vladimir Karputov:

Personne n'est allé nulle part - décochez la case ...

А... C'est ça ! Mes agents n'ont aucune activité...

 

Aidez-moi à résoudre le problème de la taille du contenu, je n'arrive pas à la faire changer. Lorsque la fenêtre du graphique est redimensionnée, elle doit être redimensionnée en hauteur.

Et le défilement est perdu lorsqueOnCalculate() est à nouveau déclenché.


//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
#include <Controls\Dialog.mqh>
#include <Controls\ListView.mqh>

//+------------------------------------------------------------------+
//| Class CPanelDialog                                               |
//| Usage: main dialog of the SimplePanel application                |
//+------------------------------------------------------------------+
class CPanelDialog : public CAppDialog
  {
public:
   CListView         m_list_view1; // the list object
   CListView         m_list_view2; // the list object

public:
                     CPanelDialog(void);
                    ~CPanelDialog(void);

   virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
   virtual bool      OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
   virtual void      OnChangeListView(void);
protected:
   bool              CreateListView(void);
   virtual bool      OnResize(void);
   bool              OnDefault(const int id,const long &lparam,const double &dparam,const string &sparam);
  };

//+------------------------------------------------------------------+
//| Event Handling                                                   |
//+------------------------------------------------------------------+
EVENT_MAP_BEGIN(CPanelDialog)
ON_EVENT(ON_CHANGE,m_list_view1,OnChangeListView)
ON_OTHER_EVENTS(OnDefault)
EVENT_MAP_END(CAppDialog)
//+------------------------------------------------------------------+
//| Constructor                                                      |
//+------------------------------------------------------------------+
CPanelDialog::CPanelDialog(void)
  {
  }
//+------------------------------------------------------------------+
//| Destructor                                                       |
//+------------------------------------------------------------------+
CPanelDialog::~CPanelDialog(void)
  {
  }
//+------------------------------------------------------------------+
//| Create                                                           |
//+------------------------------------------------------------------+
bool CPanelDialog::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
  {
   if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
      return(false);
//--- create dependent controls
   if(!CreateListView())
      return(false);
//--- succeed
   return(true);
  }
//+------------------------------------------------------------------+
//| Create the "ListView" element                                    |
//+------------------------------------------------------------------+
bool CPanelDialog::CreateListView(void)
  {
//--- coordinates
   int x1=0;
   int y1=0;
   int x2=ClientAreaWidth();
   int y2=ClientAreaHeight();
//--- create
   m_list_view1.Create(0,m_name+"ListView",0,x1,y1,x2,y2);
   m_list_view1.ColorBackground(clrMistyRose);
   Add(m_list_view1);
   m_list_view1.Alignment(WND_ALIGN_HEIGHT,0,0,0,0);
//--- succeed
   return(true);
  }
//+------------------------------------------------------------------+
//| Handler of resizing                                              |
//+------------------------------------------------------------------+
bool CPanelDialog::OnResize(void)
  {
//--- call method of parent class
   if(!CAppDialog::OnResize())
      return(false);

//--- succeed
   return(true);
  }
//+------------------------------------------------------------------+
//| Event handler                                                    |
//+------------------------------------------------------------------+
void CPanelDialog::OnChangeListView(void)
  {

//+------------------------------------------------------------------+
  }
//+------------------------------------------------------------------+
//| Rest events handler                                                    |
//+------------------------------------------------------------------+
bool CPanelDialog::OnDefault(const int id,const long &lparam,const double &dparam,const string &sparam)
  {

//--- let's handle event by parent
   return(false);
  }

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
#property version "1.00"
#property strict

#property indicator_chart_window

string symbols[];
//+------------------------------------------------------------------+
//| Global Variables                                                 |
//+------------------------------------------------------------------+
CPanelDialog ExtDialog;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create application dialog
   if(!ExtDialog.Create(0,"Spread",0,12,12,250,300))
      return(INIT_FAILED);
//--- run application
   if(!ExtDialog.Run())
      return(INIT_FAILED);
//--- ok
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy application dialog
   ExtDialog.Destroy(reason);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
  {
//---
   ExtDialog.m_list_view1.ItemsClear(); // Очистим список

   int k=MarketWatch();
   for(int i=0; i<k; i++)
     {
      string str = (string)(i+1)+" из "+(string)k+": "+symbols[i]+" = "+(string)SymbolInfoInteger(symbols[i],SYMBOL_SPREAD);
      ExtDialog.m_list_view1.ItemAdd(str); // Заполним строками
     }

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   ExtDialog.OnEvent(id,lparam,dparam,sparam);

   if(id==CHARTEVENT_CHART_CHANGE || (id==CHARTEVENT_OBJECT_CLICK && StringFind(sparam,"MinMax")>0))
     {
      if(ExtDialog.Height()>40) // Если окно не свёрнуто
        {
         ExtDialog.Height((int)ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS)-50); // Изменим высоту диалог-окна
         ExtDialog.m_list_view1.Height(ExtDialog.Height()-40); // Изменим высоту содержимого в диалог-окне
        }
     }
//---
  }
  
//+--- Список символов с MarketWatch --------------------------------+
int MarketWatch()
  {
   int s=SymbolsTotal(true);
   ArrayResize(symbols,s);
   for(int i = 0; i < s; i++)
      symbols[i] = SymbolName(i,true);
   return(s);
  }
//+------------------------------------------------------------------+
 
Vitaly Muzichenko:

Aidez-moi à résoudre le problème de la taille du contenu, je n'arrive pas à la faire changer. Lorsque la fenêtre du graphique est redimensionnée, elle doit être redimensionnée en hauteur.

Et le scroll est perdu lorsqueOnCalculate() est déclenché à nouveau.


Essayez la version corrigée de la bibliothèque de fenêtres et de contrôles ControlsPlus décrite dans cet article. Les propriétés du caoutchouc y sont automatiquement prises en charge.

Язык MQL как средство разметки графического интерфейса MQL-программ (Часть 3). Дизайнер форм
Язык MQL как средство разметки графического интерфейса MQL-программ (Часть 3). Дизайнер форм
  • www.mql5.com
В этой статье мы завершаем описание концепции построения оконного интерфейса MQL-программ с помощью конструкций языка MQL. Специальный графический редактор позволит интерактивно настраивать раскладку, состоящую из основных классов элементов GUI, и затем экспортировать её в MQL-описание для использования в вашем MQL-проекте. Представлено внутреннее устройство редактора и руководство пользователя. Исходные коды прилагаются.
 
Existe-t-il un moyen de savoir qu'un programme MQL est lancé à la suite du démarrage du terminal lui-même (c'est-à-dire automatiquement au début de la session), plutôt que de manière interactive par l'utilisateur ?
 
Stanislav Korotky:
Existe-t-il un moyen de savoir que le programme MQL est lancé à la suite du démarrage du terminal (c'est-à-dire automatiquement au début de la session) et non de manière interactive par l'utilisateur ?

Services, sans boucle.
Au démarrage du terminal, le service sera exécuté une fois, s'il n'est pas en boucle.
Le type de logique mis en œuvre dans le service est une tâche spécifique pour les exigences requises.

 
Stanislav Korotky:
Existe-t-il un moyen de détecter qu'un programme MQL est lancé à la suite du démarrage du terminal (c'est-à-dire automatiquement au début d'une session) et non de manière interactive par un utilisateur ?

Je cherche, je ne trouve pas.

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Bugs, bugs, questions

fxsaber, 2021.02.02 19:34

Je dois déterminer si l'EA est exécuté de manière standard ou via un modèle au moment du démarrage.

Avez-vous des idées sur la façon de résoudre ce problème ? Il y a d'ailleurs une sous-tâche qui consiste à déterminer la durée de vie du graphique, c'est-à-dire sa date de création.

 
fxsaber:

J'ai cherché, je ne l'ai pas trouvé.

J'ai trouvé cette solution pour mes besoins :

ChartPriceOnDropped()=0.0
ChartTimeOnDropped()=1970.01.01 00:00:00
ChartXOnDropped()=0
ChartYOnDropped()=0

Ces fonctions donnent des zéros au démarrage du terminal.

PS. Malheureusement, cette méthode ne fonctionne qu'avec une souris. Si l'utilisateur exécute la commande "Attach to chart", le problème demeure.

 
Quelqu'un peut-il partager un gestionnaire de fenêtres/chartes pratique ? Nécessité d'un tri alphabétique de la liste, d'une recherche contextuelle, d'un affichage hiérarchique de tous les EA, scripts et indicateurs téléchargés ; commutation rapide.
Raison: