エラー、バグ、質問 - ページ 591 1...584585586587588589590591592593594595596597598...3185 新しいコメント Konstantin Chernov 2011.12.06 11:01 #5901 alexvd:servicedeskに行こう。具体的にどのようにサービスを停止させたのか、教えてください。サービスを削除(凍結)しましたか?問題のあるエージェントのログを添付してください。ログにあるプロキシ設定が なんだか変ですね。エージェントのコンフィグにプロキシ設定を書き込んだか?お使いのマネージャのcommon.iniを添付してください。昨日のログを見て判明したのですが・・・。すべて順調です。 Ilyas 2011.12.06 11:41 #5902 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}.つまり、初期化リストがうまくいかず、構造体の中にゴミがあるのです。これはバグなのでしょうか? これはコンパイラのバグで、構造体をそのように初期化できない(コピーコンストラクタがない)ことを示すエラーは発生しないのです。固定されています。投稿ありがとうございました。 Konstantin Chernov 2011.12.06 16:05 #5903 非初期化を理解できない。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 Errors, bugs, questions help me please [解決済み]. エキスパートアドバイザー - 雑多な質問 Slava 2011.12.06 16:35 #5904 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回目の呼び出し TheXpert 2011.12.06 22:37 #5905 mql5: これはコンパイラのバグで、構造体をこの方法で(コピーコンストラクタなしで)初期化できないというエラーは発生しませんでした。固定されています。投稿ありがとうございました。あ、いえ。詳しくはこちらで出てきました。Helpでは、単純な構造 体は単純な型の変数としてコピーすることができると書かれています。{ Pos pos = {100, 100}; Pos pos1 = pos; // копи конструктор pos = pos1; // копи оператор }では、なぜ初期化リストでできないのでしょうか?上で使った初期化方法を失わないように、明示的にコンストラクタを定義するのはやめよう。原則的に批判的ではなく、最終的なコメントを聞きたいだけ。 Документация по MQL5: Основы языка / Типы данных / Структуры и классы www.mql5.com Основы языка / Типы данных / Структуры и классы - Документация по MQL5 Konstantin Chernov 2011.12.07 12:18 #5906 12個のウィンドウを開いた状態でターミナルを実行 すると、325MBのRAMを食います。マルチカレンシーのExpert Advisorを実行すると、端末が990Mbのメモリを消費します。エキスパートアドバイザーは、過去48時間の5分足バーを表示し、「フラクタル」インジケータを使用します。1つのシンボルで取引するためだけに実行すると、400Mbもかかってしまいます。12個のシンボルで作業する場合、このメモリ消費は正常なのでしょうか? Rashid Umarov 2011.12.07 12:23 #5907 Konstantin83: 多通貨のExpert Advisorを実行していますが、ターミナルが990 MbのRAMを消費します。専門家は過去48時間の5分足を調べ、「フラクタル」インジケータを使用します。1つのシンボルで取引するためだけに実行すると、400Mbもかかってしまいます。12個のシンボルで作業する場合、このメモリ消費は正常なのでしょうか?経済的な指標再計算の原則」をご覧ください。 Konstantin Chernov 2011.12.07 12:42 #5908 Rosh:指標の経済的な再計算の原則の 記事をチェックする フラクタルが標準指標であることを指摘するのを忘れていた+すべての計算が5分ごとに行われる --- 2011.12.07 13:03 #5909 Konstantin83: フラクタルは標準的な指標+すべての計算が5分ごとに行われることを書き忘れました開発者は、あなたが何をしているのか、どのように行っているのか、どうやって知ることができるのでしょうか? 問題の根源を明確に定式化し、コードで説明するようにしてください。 問題を技術的に説明する。 Konstantin Chernov 2011.12.07 13:41 #5910 sergeev:開発者は、あなたが何をどのように行っているかを知ることができるのでしょうか? どのような条件で消費量が増え始めるのか、ログを出力して見せてください。 問題を技術的に説明する。 今までメモリサイズを気にしたことがなかったのは、たいしたことがなかったはずだからです。昨日、今日とシステムがもたつくのに気づき、タスクマネージャーを開くと、そこで端末が900MBも食っていた。探し始めた。起動時に12個のウィンドウを開くと-325MB、Expert Advisorのウィンドウに置くと-990MB、なのでExpert Advisorを食っているのかと思いました。Charts - max bars per window "を無制限に設定しました。50 000に変更した後、端末を起動したら 110の重さになったので、再度無制限に変更しました。現在、私のExpert Advisorは208MBで、つまりOKです。 1...584585586587588589590591592593594595596597598...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
servicedeskに行こう。
具体的にどのようにサービスを停止させたのか、教えてください。サービスを削除(凍結)しましたか?問題のあるエージェントのログを添付してください。
ログにあるプロキシ設定が なんだか変ですね。エージェントのコンフィグにプロキシ設定を書き込んだか?お使いのマネージャのcommon.iniを添付してください。
昨日のログを見て判明したのですが・・・。
すべて順調です。
次のコード
出力します。
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
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
非初期化が理解できない。Expert unloaded from pair ...」というメッセージが2回出るのはなぜですか?
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("---------------");
}
}
これはコンパイラのバグで、構造体をこの方法で(コピーコンストラクタなしで)初期化できないというエラーは発生しませんでした。固定されています。投稿ありがとうございました。
あ、いえ。詳しくはこちらで出てきました。
Helpでは、単純な構造 体は単純な型の変数としてコピーすることができると書かれています。
では、なぜ初期化リストでできないのでしょうか?上で使った初期化方法を失わないように、明示的にコンストラクタを定義するのはやめよう。
原則的に批判的ではなく、最終的なコメントを聞きたいだけ。
12個のウィンドウを開いた状態でターミナルを実行 すると、325MBのRAMを食います。
マルチカレンシーのExpert Advisorを実行すると、端末が990Mbのメモリを消費します。エキスパートアドバイザーは、過去48時間の5分足バーを表示し、「フラクタル」インジケータを使用します。1つのシンボルで取引するためだけに実行すると、400Mbもかかってしまいます。12個のシンボルで作業する場合、このメモリ消費は正常なのでしょうか?
多通貨のExpert Advisorを実行していますが、ターミナルが990 MbのRAMを消費します。専門家は過去48時間の5分足を調べ、「フラクタル」インジケータを使用します。1つのシンボルで取引するためだけに実行すると、400Mbもかかってしまいます。12個のシンボルで作業する場合、このメモリ消費は正常なのでしょうか?
指標の経済的な再計算の原則の 記事をチェックする
フラクタルは標準的な指標+すべての計算が5分ごとに行われることを書き忘れました
開発者は、あなたが何をしているのか、どのように行っているのか、どうやって知ることができるのでしょうか?
問題の根源を明確に定式化し、コードで説明するようにしてください。
問題を技術的に説明する。
開発者は、あなたが何をどのように行っているかを知ることができるのでしょうか?
どのような条件で消費量が増え始めるのか、ログを出力して見せてください。
問題を技術的に説明する。