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

 
x100intraday:
ほらね。私の中では、より高いタイムフレームがないことは、「開発者が何か言っている のでは...」という疑念と無意識のうちにイコールになっているのです。"誰かにとって "そうなのでは?
私はそんなものを持っていません!そして、私はすべてが「交渉」であると確信しています - あなたのようなトリックを必要とする非常に少数の人々がいるからです。
 
server:
私はそのようなものを持っていません!そして、私はすべてが手配することができると確信しています - あなたのようにそれを必要とする人はほとんどいませんので。

私の見解:分析に必要なデータは多いに越したことはありません。短期トレーダーにとっても、今日の日以外の動きを知ることは有益な場合があります。情報の不足、特に重要性があまり明らかでないものは、遅かれ早かれトレーダーにとって不利になる。

しかし、矛盾する計算が多すぎて判断がつかないこともあるので、これ以上データを増やす必要はないように思える。しかし、それはデータの冗長性の問題ではなく、正しいデータ管理の問題なのです。背景情報が豊富だと、無視することも含めて何かできるのですが、情報が不足していると、遠くへ、正しい方向へ行くことができないのです。

 
MetaDriver:
2013.09.07 02:39:36 iTester-SL (GBPUSD,M1) 1 object of type CTestStat left.
2013.09.07 02:39:36 iTester-SL (GBPUSD,M1) 1 未削除のオブジェクトが残っています。

メモリリーク // あるいはコンパイラの不具合。

オブジェクトは、静的グローバル変数として 宣言されています。(!) つまり、まったく動的ではないのです。

この問題は、この変数を使用するコードの一部を.mqhファイルに移動し、このファイル内でexternとして宣言した後に発生しました(以前は漏れは検出されませんでした)。

プログラムは正常に動作しています。

// オブジェクトをダイナミックに宣言することで、この問題を回避しました。OnInit()で作成し、OnDeinit()で削除するようにしました。 リーク(リークメッセージ)が出なくなりました。

ありがとうございます、確認してみましょう。
 

PROFITが どのようなトレーディングツールかご存知の方はいらっしゃいますか?

 
MetaDriver:

フォーラムに参加された方への大きなお願いですが、OnCalculate()が重複して呼び出されていないか、各ティックでprev_calculatedがNULLになっていないか、テストしてください。

そして、その結果をここに投稿してください(重複している/していない)。

テスト用インジケーターはこちら

なんとかティックの重複を考慮できたようです。 Pavel Tsatsenko(kPVT)さんに助けられました // ありがとうございました。

この問題は、コピーするバッファの範囲外のコピー要求(CopyXXX(...) ) で発生することが判明しました。特に、テスト用に提供されているインジケータでは、rates_total のバーを超えて要求するような不正確なものが存在します。

修正版をトレーラーに添付します。 私の端末では、端末のどの設定でもティックが重複することなく動作します。興味のある方はご覧ください。もし、ダニが重複している方がいらっしゃいましたら、ご指摘ください。

ファイル:
 
paladin800:

PROFITが どのようなトレーディングツールかご存知の方はいらっしゃいますか?

どのシンボルもヒットしなかったトレード、あるいはトップアップの可能性が高いです。
 

クラスの継承がバグっている。コンパイルの虫が入り込んできて、ここ3日ほど授業が終わらないです

ここで、1つ目のバグを紹介します。

class CAbstract
{
protected:
   int m_handle;

public:
   CAbstract() : m_handle(INVALID_HANDLE) {}
   int GetHandle() const {return(m_handle);}
};

class CMyObj : CAbstract
{
};

class CHandle : CAbstract
{
protected:
   CMyObj *m_objects[];

public:
   ~CHandle()
   {
      int x;
      // Error: 'CAbstract::GetHandle' - cannot call private member function
      for (x = ArraySize(m_objects)-1; x>-1;x--) Print(m_objects[x].GetHandle());
      
      Print(m_handle);
   }
};


そして、2つ目はこちらです。

class CAbstract
{
protected:
   int m_handle;

public:
   CAbstract() : m_handle(INVALID_HANDLE) {}
   int GetHandle() const {return(m_handle);}
};

class CMyObj : CAbstract
{
};

class CHandle : CMyObj
{
public:
   void Log()
   {
      // Error: 'm_handle' - private member access error
      Print(m_handle);
   }
};

まあ、プライベートメンバーはいないですからねー。

バグレポート番号は#835727 です。

 
Roffild:

クラス継承がバグっているコンパイルの虫が入り込んできて、ここ3日ほど授業が終わらないです

ここで、1つ目のバグを紹介します。


そして、2つ目はこちらです。

まあ、プライベートメンバーはいないですからねー。

バグレポート番号は#835727 です。

しかし、あるんです。 こうやってみてください。

class CAbstract
{
protected:
   int m_handle;

public:
   CAbstract() : m_handle(INVALID_HANDLE) {}
   int GetHandle() const {return(m_handle);}
};

class CMyObj : public CAbstract   // Наследование по умолчанию приватное. И в С++ и в mql
{
};

class CHandle : CAbstract
{
protected:
   CMyObj *m_objects[];

public:
   ~CHandle()
   {
      int x;
      // Error: 'CAbstract::GetHandle' - cannot call private member function
      for (x = ArraySize(m_objects)-1; x>-1;x--) Print(m_objects[x].GetHandle());
      
      Print(m_handle);
   }
};
Private継承では、継承したクラスのすべてのメンバをprivateにします。
 
MetaDriver:
 // Наследование по умолчанию приватное. И в С++ и в mql

MQL5のヘルプより。

class CDerived: public CBaseClass // public наследование можно не указывать, оно по умолчанию
  {
 
Roffild:

MQL5のヘルプより。

杓子定規に生きる者は、誤字脱字で死ぬ。