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

 
プロフィールの「すべてのメッセージ」リンクはどうなったのでしょうか?
 
fxsaber:
プロフィールの「すべてのメッセージ」へのリンクはどこに行ったのでしょうか?
.
 
Alexey Viktorov:

ありがとうございました。

 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

MT4で価格が正規化されていない

fxsaber, 2021.04.30 10:42

異なる2つの数値を同じ方法で文字列に変換したもの。バグでしょうか?

void OnStart()
{
  const double Num = 1.07299;
  const double Norm = NormalizeDouble(Num, 5);
   
  Print(Num);  // 1.07299
  Print(Norm); // 1.07299

  Print(Num - Norm); // 2.220446049250313e-16
}

これと 似たような状況です。

 

サブウィンドウのカスタムインジケータ、オシレータタイプ。
デフォルトのゼロラインを隠すには?
GUIから背景色に合わせてゼロラインを着色しても、うまくいきません。

i

インジケータにプロパティを設定しても、動作しない

#property indicator_level1  0.0
#property indicator_levelcolor C'35,35,35'
 
fxsaber:

数値は違いますが、その差は小数点以下17桁で、Printは 小数点以下15桁しか扱わないので、Printから見ると同じになります

 
A100:

数値は違いますが、小数点以下17桁までが違い、Printは 15桁までしか扱わないので、Printから見れば同じです。

Printではなく、doubleからstringへの変換のみ。

 

図1

これに気づいた。フォワードテストデータが繰り返される(同じ)場合、3つのvariantのBacktestを表示すると、variant(10384.88)だけが先に表示されます。

図2

結果=10435または10843のバリアントのデータは不明です(バリアント=10384のレポートでは全て)?

 

ポインタからデータを正しくコピーする方法を教えてください。

あるオブジェクトから別のオブジェクトにデータをコピーする必要があります。その後、初期オブジェクトを削除してください。元のオブジェクトを削除すると、コピーオブジェクトのデータにはアクセスできなくなります。

#include <Arrays\ArrayObj.mqh>

CArrayObj ArrCur;       // массив с объектами, каждый объект содержит структуру с полями ордеров и его id
CArrayObj ArrPrev;  // массив с объектами, каждый объект содержит структуру с полями ордеров и его id

class CID : public CObject
{
  public:  int id;
};


void OnStart()
{
  // -----------------------------------------------------------------
    CID* pCur = new CID;        // создаем объект для текущих параметров
    pCur.id = 25;               // вносим текущие данные
    ArrCur.Add(pCur);           // помещаем в массив объектов
    
    CID* pPrev = ArrCur.At(0);  // копируем данные??? Указатель???
    ArrPrev.Add(pPrev);         // помещаем в массив объектов
    
    ArrCur.Clear();             // чистим текущий массив
  // -----------------------------------------------------------------
  
   // --- для вывода в журнал
  int sizeCur = ArrCur.Total();       // размер = 0
  int sizePrev = ArrPrev.Total();     // размер = 1
  
  ENUM_POINTER_TYPE pTypeCur = CheckPointer(ArrCur.At(0));    // POINTER_INVALID
  ENUM_POINTER_TYPE pTypePrev = CheckPointer(ArrPrev.At(0));  // POINTER_INVALID
  
  Print(__FUNCTION__, " sizeCur=", sizeCur, " pTypeCur=", EnumToString(pTypeCur));
  Print(__FUNCTION__, " sizePrev=", sizePrev, " pTypePrev=", EnumToString(pTypePrev));

}
 
そこでポインタは