错误、漏洞、问题 - 页 591

 
alexvd:

我们去服务台吧。

请澄清服务究竟是如何被切断的?你是否删除(冻结)了这些服务?请附上问题代理商的日志。

你日志中的代理设置 有些奇怪。你在你的代理配置中写了代理设置吗?请附上你的管理器的common.ini。

事实证明,我看了昨天的日志...

一切都很好。

 
TheXpert:

下一个代码。

输出。

2011.12.05 22:01:28 RectLabel (EURUSD,H1) pos = {12, 176314750}。
2011.12.05 22:01:28 RectLabel (EURUSD,H1) other = {123, 456}。

所以,初始化列表没有工作,结构中存在垃圾。这到底是不是一个错误?

这是编译器的一个错误--它没有生成一个错误,说明该结构不能以这种方式初始化(没有复制构造函数)。固定的。谢谢你的帖子。
 
我无法理解去初始化。为什么会出现两次 "专家顾问从配对中卸载... "的信息?
//+------------------------------------------------------------------+
//|                                                   testDeinit.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"



//+------------------------------------------------------------------+
class CTest_Expert
  {

public:
                     CTest_Expert();
                    ~CTest_Expert() { Deinit(); }
                   
   void              Processing();
   void              Deinit();
   bool              StartTimer(int nCounSeconds);
   void              StopTimer();
   string   Exp_Symbol;
  };

   CTest_Expert arSymbols[];

//+------------------------------------------------------------------+
//| Конструктор                                                      |
//+------------------------------------------------------------------+
CTest_Expert::CTest_Expert()
  {

  }
//+------------------------------------------------------------------+
//| Функция удаления динамических объектов                           |
//+------------------------------------------------------------------+
void CTest_Expert::Deinit()
  {
  
   Print("Эксперт выгружен с пары "+Exp_Symbol);
   Comment("");

  }
//+------------------------------------------------------------------+
//|Инициализация таймера                                             |
//+------------------------------------------------------------------+
bool CTest_Expert::StartTimer(int nCountSeconds)
  {
   return(EventSetTimer(nCountSeconds));
  }
//+------------------------------------------------------------------+
//|Уничтожение таймера                                               |
//+------------------------------------------------------------------+

void CTest_Expert::StopTimer()
  {
      EventKillTimer();
  }

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   ArrayResize(arSymbols, 5);
   arSymbols[0].Exp_Symbol="0";
   arSymbols[1].Exp_Symbol="1";
   arSymbols[2].Exp_Symbol="2";
   arSymbols[3].Exp_Symbol="3";
   arSymbols[4].Exp_Symbol="4";
  
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
      int nSize=ArraySize(arSymbols);
      Print("nSize = " + IntegerToString(nSize));
      for(int i=0;i<nSize;i++)
        {
         Print("-------"+IntegerToString(i)+"--------");
         arSymbols[i].Deinit();
         Print("---------------");
        }
  
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
  
  }
//+------------------------------------------------------------------+

结果

2011.12.06 16:59:52 testDeinit (EURUSD,M5) 14:00:00 PM 专家顾问已经从货币对4卸载。
2011.12.06 16:59:52 testDeinit (EURUSD,M5) 14:02:00 PM testDeinit (EURUSD,M5) E.T.A已经从货币对3中卸载。
2011.12.06 16:59:52 testDeinit (EURUSD,M5) 从货币对2下载。
2011.12.06 16:59:52 testDeinit (EURUSD,M5) 从货币对1下载。
2011.12.06 16:59:52 testDeinit (EURUSD,M5) Ekspert unloaded from pair 0
2011.12.06 16:59:52 testDeinit (EURUSD,M5) ---------------
2011.12.06 16:59:52 testDeinit (EURUSD,M5) 14
2011.12.06 16:59:52 testDeinit (EURUSD,M5) -------4--------
2011.12.06 16:59:52 testDeinit (EURUSD,M5) ---------------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) 专家已从货币对3中卸载。
2011.12.06 16:59:51 testDeinit (EURUSD,M5) -------3--------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) ---------------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) 专家已经从货币对2中卸载。
2011.12.06 16:59:51 testDeinit (EURUSD,M5) -------2--------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) ---------------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) 专家已从货币对1中卸载。
2011.12.06 16:59:51 testDeinit (EURUSD,M5) -------1--------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) ---------------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) 专家从0号货币对中卸载。
2011.12.06 16:59:51 testDeinit (EURUSD,M5) -------0--------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) nSize = 5

 
Konstantin83:
我无法理解去初始化的问题。为什么 "专家从对中卸下...... "的信息会发生两次?
                    ~CTest_Expert() { Deinit(); }

   CTest_Expert arSymbols[];

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
      int nSize=ArraySize(arSymbols);
      Print("nSize = " + IntegerToString(nSize));
      for(int i=0;i<nSize;i++)
        {
         Print("-------"+IntegerToString(i)+"--------");
         arSymbols[i].Deinit();
         Print("---------------");
        }
  
  }

来自OnDeinit的第一次调用。从析构器第二次调用
 
mql5:
这是编译器的一个错误--它没有产生一个错误,说结构不能这样初始化(没有复制构造函数)。固定的。谢谢你的帖子。

呃,没有。更多细节出现在这里。

在Help中说,简单的结构 可以作为简单类型的变量被复制。

{
   Pos pos = {100, 100};
   Pos pos1 = pos; // копи конструктор
   pos = pos1; // копи оператор
}

那么为什么不能在初始化列表中进行呢?我不想明确地定义构造函数,这样就不会失去上面使用的初始化方法。

原则上不批评,只是想听听最后的意见。

Документация по MQL5: Основы языка / Типы данных / Структуры и классы
Документация по MQL5: Основы языка / Типы данных / Структуры и классы
  • www.mql5.com
Основы языка / Типы данных / Структуры и классы - Документация по MQL5
 

在打开12个窗口的情况下运行终端,它吃掉了325MB的内存。

运行多货币专家顾问,终端占用990Mb的内存。专家顾问查看过去48小时的5分钟条形图+使用 "分形 "指标。如果我只运行一个符号的交易,它需要400Mb。在处理12个符号时,这种内存消耗是否正常?

 
Konstantin83:
我正在运行一个多币种的专家顾问,该终端占用了990Mb的内存。该专家通过过去48小时的5分钟条形图+使用 "分形 "指标。如果我只运行一个符号的交易,它需要400Mb。在处理12个符号时,这种内存消耗是否正常?
请看文章《指标的经济性重新计算的原则
 
我忘了指出,分形是一个标准的指标+所有的计算都是每5分钟进行的
 
Konstantin83:
我忘了说,分形是一个标准的指标+所有的计算都是每5分钟进行的

开发人员如何知道你在做什么以及你是如何做的?
尝试在你的代码中清楚地制定和解释问题的根源。
以技术方式描述问题。

 
sergeev:

开发人员如何知道你在做什么以及你是如何做的?
试着在你的代码中明确提出并突出问题的本质。在什么条件下消耗开始增长,制作并展示日志打印结果。
以技术方式描述问题。

我以前没有注意过内存大小,因为它肯定不多。昨天和今天我注意到系统滞后,打开任务管理器,终端吃了900MB。开始寻找。在启动时,打开了12个窗口--325MB,我把它放在专家顾问窗口--990MB,所以我认为它在吃专家顾问。我已将 "图表--每个窗口的最大条数 "设置为无限。在我把它改为50000后,我启动了终端, 它的重量是110,然后我又把它改为无限。现在我的专家顾问是208MB,也就是说,它是OK的。