Errori, bug, domande - pagina 2968

 
Mihail Matkovskij:

Hai una cancellazione non valida! Il tuo codice:

Man mano che cancelli ogni voce, la lista diventa più piccola! Ecco perché si dovrebbe fare così:

O ancora più semplice:

Grazie per la sua risposta. Il problema è ancora l'aggiunta di elementi

 
Mihail Matkovskij:

Ha deciso di scoprire quanto guadagneranno 2 agenti nel servizio MQL5 Cloud Network per costruire un ferro con un processore multi-core in futuro. Ho aggiunto gli agenti usando Agent Manager. Sembra che li abbia aggiunti bene.

Niente sembra esseresospetto... Sono entrato nel mio account MQL5.COM. Ho visto gli agenti creati nella sezione "Agenti" in myAlpari. Ho anche trovato due servizi, MetaTester-1 e MetaTester-2 nel task manager. Ma per mezza giornata non ci sono compiti per gli agenti. Tutto è nullo. Perché gli agenti non funzionano?

E ora vedo che tutti gli agenti sono stati cancellati dal mio ufficio.


I servizi MetaTester-1 eMetaTester-2 in Task Managermostrano e in Agent Manager. Tuttavia, Agent Manager mostra che i servizi sono disabilitati. E non sono nel Gabinetto, anche se c'erano ieri... Qual è la ragione di tale comportamento di MQL5 Cloud Network?

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

E ora vedo che gli agenti sono stati cancellati nel mio armadio.


I servizi MetaTester-1 eMetaTester-2 nel Task Managermostrano e nel Agent Manager, ma il Agent Manager mostra che i servizi sono disabilitati. E non sono nell'armadio, anche se c'erano ieri... Qual è la ragione per cui MQL5 Cloud Network si comporta in questo modo?

Nessuno viene cancellato - deseleziona questa casella...

 
Vladimir Karputov:

Nessuno è andato da nessuna parte - deselezionare la casella ...

А... Giusto! I miei agenti hanno zero attività...

 

Aiutatemi a risolvere il problema della dimensione del contenuto, non riesco a farlo cambiare. Quando la finestra del grafico viene ridimensionata, deve essere ridimensionata in altezza.

E lo scorrimento si perde quandoOnCalculate() viene attivato di nuovo


//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
#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:

Aiutatemi a risolvere il problema della dimensione del contenuto, non riesco a farlo cambiare. Quando la finestra del grafico viene ridimensionata, deve essere ridimensionata in altezza.

E lo scroll viene perso quandoOnCalculate() viene attivato di nuovo.


Prova la versione patchata della libreria di finestre e controlli ControlsPlus descritta in questo articolo. Le proprietà della gomma vi sono supportate automaticamente.

Язык MQL как средство разметки графического интерфейса MQL-программ (Часть 3). Дизайнер форм
Язык MQL как средство разметки графического интерфейса MQL-программ (Часть 3). Дизайнер форм
  • www.mql5.com
В этой статье мы завершаем описание концепции построения оконного интерфейса MQL-программ с помощью конструкций языка MQL. Специальный графический редактор позволит интерактивно настраивать раскладку, состоящую из основных классов элементов GUI, и затем экспортировать её в MQL-описание для использования в вашем MQL-проекте. Представлено внутреннее устройство редактора и руководство пользователя. Исходные коды прилагаются.
 
C'è un modo per sapere che un programma MQL viene avviato come risultato dell'avvio del terminale stesso (cioè automaticamente all'inizio della sessione), piuttosto che interattivamente dall'utente?
 
Stanislav Korotky:
C'è un modo per scoprire che il programma MQL viene avviato come risultato dell'avvio del terminale (cioè automaticamente all'inizio della sessione) e non interattivamente dall'utente?

Servizi, senza un ciclo.
Quando il terminale si avvia, il servizio sarà eseguito una volta sola, se non è in loop.
Che tipo di logica viene messa nel servizio è un compito specifico per i requisiti richiesti.

 
Stanislav Korotky:
C'è un modo per rilevare che un programma MQL viene avviato come risultato dell'avvio del terminale (cioè automaticamente all'inizio di una sessione) e non interattivamente da un utente?

Ricerca, non trovata.

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Bug, bug, domande

fxsaber, 2021.02.02 19:34

Devo determinare se l'EA viene eseguito in modo standard o tramite template nella fase di avvio.

Qualche idea su come risolvere questo problema? A proposito, c'è un sottocompito per determinare la durata del grafico - quando è stato creato.

 
fxsaber:

Ho cercato, ma non l'ho trovato.

Ho trovato questa soluzione per i miei scopi:

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

Queste funzioni danno degli zeri all'avvio del terminale.

PS. Sfortunatamente, questo metodo funziona solo con un mouse. Se l'utente esegue il comando "Attach to chart", il problema rimane.