错误、漏洞、问题 - 页 2968

 
Mihail Matkovskij:

你有一个无效的删除!你的代码。

当你删除每一个项目的时候,列表就会变小这就是为什么你应该这样做。

或者更简单。

谢谢你的回答。问题仍然是添加项目

 
Mihail Matkovskij:

决定了解一下MQL5云计算网络服务 中的2个代理商能赚多少钱,以便在未来建造一个带有多核处理器的铁器。我使用代理管理器添加了代理。似乎已经把它们添加好了。

似乎没有什么值得怀疑的 地方...我登录了我的MQL5.COM账户。我已经看到在我的账户中的 "代理 "下创建的代理。我还在任务管理器中发现两个服务,MetaTester-1和MetaTester-2但在半天的时间里,代理人没有任何任务一切都是空的。代理人为什么不工作?

而现在我看到所有的代理人都从我的办公室里被删除了。


任务管理器中的 MetaTester-1和MetaTester-2 服务显示和代理管理器中的 服务。 但是,代理管理器显示这些服务被禁用而且他们不在内阁中,尽管他们昨天还在那里......。MQL5云计算网络 的这种行为的原因是什么?

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

而现在我看到,在我的柜子里,代理人已经被删除。


任务管理器MetaTester-1和MetaTester-2 服务显示和代理管理器中的 服务。 但是,代理管理器显示这些服务被禁用而且他们不在内阁中,尽管他们昨天还在那里......。MQL5云计算网络 出现这种情况的原因是什么?

没有人被删除 - 取消勾选此框...

 
Vladimir Karputov:

没有人去任何地方 - 取消勾选...

А...对了!我的代理人的活动为零...

 

帮我解决内容大小的问题,我无法让它改变。当图表窗口被调整大小时,它的高度也要被调整。

而当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

我必须确定EA在启动阶段是以标准方式还是通过模板运行。

对如何解决这个问题有什么想法吗?顺便说一下,还有一个子任务是确定图表的寿命--它是什么时候创建的。

 
fxsaber:

搜索了一下,没有找到。

我发现这个解决方案适合我的目的。

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

这些函数在终端启动时给出了零值。

PS。不幸的是,这种方法只适用于鼠标。如果用户运行 "附加到图表 "命令,问题仍然存在。