エラー、バグ、質問 - ページ 591

 
alexvd:

servicedeskに行こう。

具体的にどのようにサービスを停止させたのか、教えてください。サービスを削除(凍結)しましたか?問題のあるエージェントのログを添付してください。

ログにあるプロキシ設定が なんだか変ですね。エージェントのコンフィグにプロキシ設定を書き込んだか?お使いのマネージャの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}.

つまり、初期化リストがうまくいかず、構造体の中にゴミがあるのです。これはバグなのでしょうか?

これはコンパイラのバグで、構造体をそのように初期化できない(コピーコンストラクタがない)ことを示すエラーは発生しないのです。固定されています。投稿ありがとうございました。
 
非初期化を理解できない。Expert Advisor unloaded from pair ...」というメッセージが2回発生するのはなぜですか?
//+------------------------------------------------------------------+
//|                                                   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
2011.12.06 16:59:52 testDeinit (EURUSD,M5) 14:02:00 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) ペア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:
非初期化が理解できない。Expert unloaded from pair ...」というメッセージが2回出るのはなぜですか?
                    ~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からの最初の呼び出し。デストラクタからの2回目の呼び出し
 
mql5:
これはコンパイラのバグで、構造体をこの方法で(コピーコンストラクタなしで)初期化できないというエラーは発生しませんでした。固定されています。投稿ありがとうございました。

あ、いえ。詳しくはこちらで出てきました。

Helpでは、単純な構造 体は単純な型の変数としてコピーすることができると書かれています。

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

では、なぜ初期化リストでできないのでしょうか?上で使った初期化方法を失わないように、明示的にコンストラクタを定義するのはやめよう。

原則的に批判的ではなく、最終的なコメントを聞きたいだけ。

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

12個のウィンドウを開いた状態でターミナルを実行 すると、325MBのRAMを食います。

マルチカレンシーのExpert Advisorを実行すると、端末が990Mbのメモリを消費します。エキスパートアドバイザーは、過去48時間の5分足バーを表示し、「フラクタル」インジケータを使用します。1つのシンボルで取引するためだけに実行すると、400Mbもかかってしまいます。12個のシンボルで作業する場合、このメモリ消費は正常なのでしょうか?

 
Konstantin83:
多通貨のExpert Advisorを実行していますが、ターミナルが990 MbのRAMを消費します。専門家は過去48時間の5分足を調べ、「フラクタル」インジケータを使用します。1つのシンボルで取引するためだけに実行すると、400Mbもかかってしまいます。12個のシンボルで作業する場合、このメモリ消費は正常なのでしょうか?
経済的な指標再計算の原則」をご覧ください。
 
Rosh:
指標の経済的な再計算の原則の 記事をチェックする
フラクタルが標準指標であることを指摘するのを忘れていた+すべての計算が5分ごとに行われる
 
Konstantin83:
フラクタルは標準的な指標+すべての計算が5分ごとに行われることを書き忘れました

開発者は、あなたが何をしているのか、どのように行っているのか、どうやって知ることができるのでしょうか?
問題の根源を明確に定式化し、コードで説明するようにしてください。
問題を技術的に説明する。

 
sergeev:

開発者は、あなたが何をどのように行っているかを知ることができるのでしょうか?
どのような条件で消費量が増え始めるのか、ログを出力して見せてください。
問題を技術的に説明する。

今までメモリサイズを気にしたことがなかったのは、たいしたことがなかったはずだからです。昨日、今日とシステムがもたつくのに気づき、タスクマネージャーを開くと、そこで端末が900MBも食っていた。探し始めた。起動時に12個のウィンドウを開くと-325MB、Expert Advisorのウィンドウに置くと-990MB、なのでExpert Advisorを食っているのかと思いました。Charts - max bars per window "を無制限に設定しました。50 000に変更した後、端末を起動したら 110の重さになったので、再度無制限に変更しました。現在、私のExpert Advisorは208MBで、つまりOKです。