Ошибки, баги, вопросы - страница 2968

 
Mihail Matkovskij:

У вас некорректное удаление! Ваш код: 

С удалением каждого элемента список уменьшается! Поэтому, нужно делать вот так:

Или еще проще: 

Спасибо за ответ. Проблема оказалась еще в добавлении элементов

 
Mihail Matkovskij:

Решил узнать, сколько будут зарабатывать 2 агента в сервисе MQL5 Cloud Network, чтобы в будущем собрать железо с многоядерным процессором. Добавил агентов с помощью Агент менеджера. Вроде нормально добавились.

Ничего не вызывает подозрений... Осуществил вход в свой аккаунт MQL5.COM. В разделе "Агенты" в кабинете отобразились созданные агенты. В службах, в диспетчере задач также нашёл 2 службы, MetaTester-1 и  MetaTester-2. Но вот уже пол дня никаких заданий агенты не выполняют. Всё по нулям. Почему агенты не работают?

А сейчас смотрю вообще агенты удалились в моём кабинете:.


Службы  MetaTester-1 и  MetaTester-2 в диспетчере задач показывает и в Агент менеджере. Правда, Агент менеджере показывает, что службы отключены. И в кабинете их нет, хоть, еще вчера они были... В чём же причина такого поведения MQL5 Cloud Network ?

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

А сейчас смотрю вообще агенты удалились в моём кабинете:.


Службы  MetaTester-1 и  MetaTester-2 в диспетчере задач показывает и в Агент менеджере. Правда, Агент менеджере показывает, что службы отключены. И в кабинете их нет, хоть, еще вчера они были... В чём же причина такого поведения MQL5 Cloud Network ?

Никто никуда не удалился - чекбокс снимите ...

 
Vladimir Karputov:

Никто никуда не удалился - чекбокс снимите ...

А... точно! У моих агентов же 0 активности...

 

Помогите решить проблему с размером содержимого, никак не получается его изменить. При изменении окна графика, должен меняться размер по высоте.

И скролл теряется при повторном срабатывании OnCalculate()


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

Помогите решить проблему с размером содержимого, никак не получается его изменить. При изменении окна графика, должен меняться размер по высоте.

И скролл теряется при повторном срабатывании OnCalculate()


Попробуйте пропатченную версию библиотеки окон и контролов ControlsPlus из этой статьи. Там резиновость поддерживалась автоматически.

Язык MQL как средство разметки графического интерфейса MQL-программ (Часть 3). Дизайнер форм
Язык MQL как средство разметки графического интерфейса MQL-программ (Часть 3). Дизайнер форм
  • www.mql5.com
В этой статье мы завершаем описание концепции построения оконного интерфейса MQL-программ с помощью конструкций языка MQL. Специальный графический редактор позволит интерактивно настраивать раскладку, состоящую из основных классов элементов GUI, и затем экспортировать её в MQL-описание для использования в вашем MQL-проекте. Представлено внутреннее устройство редактора и руководство пользователя. Исходные коды прилагаются.
 
Существует ли способ узнать, что MQL-программа запущена в результате старта самого терминала (т.е. автоматически в начале сессии), а не интерактивно пользователем?
 
Stanislav Korotky:
Существует ли способ узнать, что MQL-программа запущена в результате старта самого терминала (т.е. автоматически в начале сессии), а не интерактивно пользователем?

Сервисы, без цикла.
При старте терминала, сервис выполнится один раз, если он не зациклен.
Какую логику заложить в сервис, это уже конкретная задача под нужные требования.

 
Stanislav Korotky:
Существует ли способ узнать, что MQL-программа запущена в результате старта самого терминала (т.е. автоматически в начале сессии), а не интерактивно пользователем?

Искал, не нашел.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

fxsaber, 2021.02.02 19:34

Нужно в советнике определить на этапе запуске, запущен он стандартным способом или через шаблон.

Есть мысли по решению этой задачи? Попутно возникла подзадача определения времени жизни чарта - когда он был создан.

 
fxsaber:

Искал, не нашел.

Для своих целей нашел такое решение:

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

Эти функции при старте терминала дают нули.

PS. К сожалению этот способ подходит только при набрасывании мышью. Если пользователь выполняет команду "Attach to chart", проблема остается.

Причина обращения: