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?
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 ?
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 objectpublic:
CPanelDialog(void);
~CPanelDialog(void);
virtualbool Create(constlong chart,conststring name,constint subwin,constint x1,constint y1,constint x2,constint y2);
virtualbool OnEvent(constint id,constlong &lparam,constdouble &dparam,conststring &sparam);
virtualvoid OnChangeListView(void);
protected:
bool CreateListView(void);
virtualbool OnResize(void);
bool OnDefault(constint id,constlong &lparam,constdouble &dparam,conststring &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(constlong chart,conststring name,constint subwin,constint x1,constint y1,constint x2,constint y2)
{
if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
return(false);
//--- create dependent controlsif(!CreateListView())
return(false);
//--- succeedreturn(true);
}
//+------------------------------------------------------------------+//| Create the "ListView" element |//+------------------------------------------------------------------+bool CPanelDialog::CreateListView(void)
{
//--- coordinatesint 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);
//--- succeedreturn(true);
}
//+------------------------------------------------------------------+//| Handler of resizing |//+------------------------------------------------------------------+bool CPanelDialog::OnResize(void)
{
//--- call method of parent classif(!CAppDialog::OnResize())
return(false);
//--- succeedreturn(true);
}
//+------------------------------------------------------------------+//| Event handler |//+------------------------------------------------------------------+void CPanelDialog::OnChangeListView(void)
{
//+------------------------------------------------------------------+
}
//+------------------------------------------------------------------+//| Rest events handler |//+------------------------------------------------------------------+bool CPanelDialog::OnDefault(constint id,constlong &lparam,constdouble &dparam,conststring &sparam)
{
//--- let's handle event by parentreturn(false);
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+//+------------------------------------------------------------------+//+------------------------------------------------------------------+//+------------------------------------------------------------------+//+------------------------------------------------------------------+#property version"1.00"#property strict#property indicator_chart_windowstring symbols[];
//+------------------------------------------------------------------+//| Global Variables |//+------------------------------------------------------------------+
CPanelDialog ExtDialog;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- create application dialogif(!ExtDialog.Create(0,"Spread",0,12,12,250,300))return(INIT_FAILED);
//--- run applicationif(!ExtDialog.Run())
return(INIT_FAILED);
//--- okreturn(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//--- destroy application dialog
ExtDialog.Destroy(reason);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime& time[],
constdouble& open[],
constdouble& high[],
constdouble& low[],
constdouble& close[],
constlong& tick_volume[],
constlong& volume[],
constint& 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 callreturn(rates_total);
}
//+------------------------------------------------------------------+//| ChartEvent function |//+------------------------------------------------------------------+voidOnChartEvent(constint id,
constlong &lparam,
constdouble &dparam,
conststring &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);
}
//+------------------------------------------------------------------+
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. Специальный графический редактор позволит интерактивно настраивать раскладку, состоящую из основных классов элементов 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 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.
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.
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?
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...
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é.
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.
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.
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.
J'ai cherché, je ne l'ai pas trouvé.
J'ai trouvé cette solution pour mes besoins :
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.