Errores, fallos, preguntas - página 2968

 
Mihail Matkovskij:

¡Tiene un borrado inválido! Su código:

A medida que eliminas cada elemento, la lista se hace más pequeña. Por eso debes hacerlo así:

O incluso más simple:

Gracias por su respuesta. El problema sigue siendo añadir elementos

 
Mihail Matkovskij:

Decidió averiguar cuánto ganarán 2 agentes en el servicio MQL5 Cloud Network para construir una plancha con un procesador multinúcleo en el futuro. He añadido los agentes mediante el Gestor de Agentes. Parece que se han añadido bien.

Nada parecesospechoso... He entrado en mi cuenta MQL5.COM. He visto los agentes creados en la sección "Agentes" del Área Personal. También encontré dos servicios, MetaTester-1 y MetaTester-2 en el administrador de tareas. Pero durante medio día no hay tareas para los agentes. Todo es nulo. ¿Por qué no funcionan los agentes?

Y ahora veo que todos los agentes fueron borrados de mi oficina.


Los servicios MetaTester-1 yMetaTester-2 en el Administrador de Tareasse muestran y en el Administrador de Agentes. Sin embargo, el Administrador de Agentes muestra que los servicios están desactivados. Y no están en el Gabinete, a pesar de que estaban ayer... ¿A qué se debe este comportamiento de MQL5 Cloud Network?

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

Y ahora veo que los agentes han sido borrados en mi gabinete.


Los servicios MetaTester-1 yMetaTester-2 aparecen en el Administrador de Tareas y en el Administrador de Agentes. Sin embargo, el Administrador de Agentes muestra que los servicios están desactivados. Y no están en el gabinete, a pesar de que estaban allí ayer... ¿Cuál es la razón por la que MQL5 Cloud Network se comporta así?

No se borra nadie - desmarca esta casilla...

 
Vladimir Karputov:

Nadie ha ido a ninguna parte - desmarca la casilla ...

А... ¡Correcto! Mis agentes tienen cero actividad...

 

Ayúdame a solucionar el problema del tamaño del contenido, no consigo que cambie. Cuando se cambia el tamaño de la ventana del gráfico, hay que cambiar su altura.

Y el desplazamiento se pierde cuando se vuelve a activarOnCalculate()


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

Ayúdame a solucionar el problema del tamaño del contenido, no consigo que cambie. Cuando se cambia el tamaño de la ventana del gráfico, hay que cambiar su altura.

Y el desplazamiento se pierde cuando se activa de nuevoOnCalculate().


Pruebe la versión parcheada de la biblioteca de ventanas y controles de ControlsPlus descrita en este artículo. Las propiedades de la goma se admiten automáticamente allí.

Язык MQL как средство разметки графического интерфейса MQL-программ (Часть 3). Дизайнер форм
Язык MQL как средство разметки графического интерфейса MQL-программ (Часть 3). Дизайнер форм
  • www.mql5.com
В этой статье мы завершаем описание концепции построения оконного интерфейса MQL-программ с помощью конструкций языка MQL. Специальный графический редактор позволит интерактивно настраивать раскладку, состоящую из основных классов элементов GUI, и затем экспортировать её в MQL-описание для использования в вашем MQL-проекте. Представлено внутреннее устройство редактора и руководство пользователя. Исходные коды прилагаются.
 
¿Hay alguna manera de saber que un programa MQL se inicia como resultado del propio inicio de la terminal (es decir, automáticamente al inicio de la sesión), en lugar de hacerlo de forma interactiva por el usuario?
 
Stanislav Korotky:
¿Existe una forma de averiguar que el programa MQL se inicia como resultado del inicio de la terminal (es decir, automáticamente al comienzo de la sesión) y no de forma interactiva por el usuario?

Servicios, sin bucle.
Cuando el terminal se inicie, el servicio se ejecutará una vez, si no está en bucle.
Qué tipo de lógica se pone en el servicio es una tarea específica para los requisitos requeridos.

 
Stanislav Korotky:
¿Existe una forma de detectar que un programa MQL se inicia como resultado del inicio de la terminal (es decir, automáticamente al comienzo de una sesión) y no de forma interactiva por un usuario?

Buscando, no se encuentra.

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Bichos, errores, preguntas

fxsaber, 2021.02.02 19:34

Tengo que determinar si el EA se ejecuta de la manera estándar o a través de la plantilla en la etapa de inicio.

¿Alguna idea sobre cómo resolver este problema? Por cierto, hay una subtarea para determinar el tiempo de vida del gráfico - cuando fue creado.

 
fxsaber:

Busqué y no pude encontrarlo.

He encontrado esta solución para mis propósitos:

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

Estas funciones dan ceros cuando se inicia el terminal.

PS. Por desgracia, este método sólo funciona con un ratón. Si el usuario ejecuta el comando "Adjuntar al gráfico", el problema persiste.

Razón de la queja: