Erros, bugs, perguntas - página 2968

 
Mihail Matkovskij:

Tem uma eliminação inválida! O seu código:

À medida que se apaga cada item, a lista fica mais pequena! É por isso que o deve fazer desta forma:

Ou ainda mais simples:

Obrigado pela sua resposta. O problema continua a ser a adição de artigos

 
Mihail Matkovskij:

Decidiu descobrir quanto ganharão 2 agentes no serviço MQL5 Cloud Network para construir um ferro com um processador multi-core no futuro. Adicionei os agentes utilizando o Agent Manager. Parece tê-los acrescentado bem.

Nada parece sersuspeito... Entrei na minha conta MQL5.COM. Vi os agentes criados na minha conta em "Agentes". Também encontrei dois serviços, MetaTester-1 e MetaTester-2 no gestor de tarefas. Mas durante meio dia não há tarefas para os agentes. Tudo é nulo. Porque é que os agentes não trabalham?

E agora vejo que todos os agentes foram eliminados do meu gabinete.


Serviços MetaTester-1 eMetaTester-2 em Task Managermostra e em Agent Manager. Contudo, o Agent Manager mostra que os serviços estão desactivados. E não estão no Gabinete, apesar de ontem lá terem estado. Qual é a razão de tal comportamento da MQL5 Cloud Network?

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

E agora vejo que os agentes foram apagados no meu gabinete.


Os serviços MetaTester-1 eMetaTester-2 no Task Managermostram e no Agent Manager. No entanto, o Agent Manager mostra que os serviços estão desactivados. E não estão no Gabinete, apesar de ontem lá terem estado. Qual é a razão para a MQL5 Cloud Network se comportar desta forma?

Ninguém é eliminado - desmarque esta caixa...

 
Vladimir Karputov:

Ninguém foi a lado nenhum - desmarque a caixa ...

А... Certo! Os meus agentes têm actividade zero...

 

Ajude-me a resolver o problema com o tamanho do conteúdo, não o consigo mudar. Quando a janela do gráfico é redimensionada, tem de ser redimensionada em altura.

E a rolagem perde-se quando aOnCalculate() é novamente accionada


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

Ajude-me a resolver o problema com o tamanho do conteúdo, não o consigo mudar. Quando a janela do gráfico é redimensionada, tem de ser redimensionada em altura.

E o scroll perde-se quandoOnCalculate() é accionado novamente.


Experimente a versão corrigida das janelas ControlsPlus e da biblioteca de controlos descrita neste artigo. As propriedades da borracha são aí automaticamente suportadas.

Язык MQL как средство разметки графического интерфейса MQL-программ (Часть 3). Дизайнер форм
Язык MQL как средство разметки графического интерфейса MQL-программ (Часть 3). Дизайнер форм
  • www.mql5.com
В этой статье мы завершаем описание концепции построения оконного интерфейса MQL-программ с помощью конструкций языка MQL. Специальный графический редактор позволит интерактивно настраивать раскладку, состоящую из основных классов элементов GUI, и затем экспортировать её в MQL-описание для использования в вашем MQL-проекте. Представлено внутреннее устройство редактора и руководство пользователя. Исходные коды прилагаются.
 
Existe alguma forma de saber que um programa MQL é iniciado como resultado do próprio arranque do terminal (ou seja, automaticamente no início da sessão), e não interactivamente pelo utilizador?
 
Stanislav Korotky:
Existe alguma forma de descobrir que o programa MQL é iniciado como resultado do início do terminal (ou seja, automaticamente no início da sessão) e não interactivamente pelo utilizador?

Serviços, sem loop.
Quando o terminal arranca, o serviço será executado uma vez, se não estiver em loop.
Que tipo de lógica é posta ao serviço é uma tarefa específica para os requisitos exigidos.

 
Stanislav Korotky:
Existe alguma forma de detectar que um programa MQL é iniciado como resultado do arranque do terminal (ou seja, automaticamente no início de uma sessão) e não interactivamente por um utilizador?

A procurar, não encontrado.

Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial

Insectos, insectos, perguntas

fxsaber, 2021.02.02 19:34

Tenho de determinar se a EA é executada de forma standard ou através de modelo na fase de arranque.

Alguma ideia sobre como resolver este problema? A propósito, existe uma sub-tarefa de determinar a vida útil do gráfico - quando este foi criado.

 
fxsaber:

Procurado, não o consegui encontrar.

Encontrei esta solução para os meus propósitos:

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

Estas funções dão zeros quando o terminal arranca.

PS. Infelizmente, este método só funciona com um rato. Se o utilizador executar o comando "Anexar ao gráfico", o problema mantém-se.

Razão: