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

 
MQL4とMQL5、どちらのバグか教えてください。
struct A
{
  static const int Array[];
};

static const int A::Array[] = {0};

struct B : public A
{  
  int i[sizeof(B::Array)]; // MQL5 - ok, MQL4 - ok.
  int j[sizeof(A::Array)]; // MQL5 - ok, MQL4 - error.
};
検索文字列:オシブカ 004.
 
fxsaber:

この問題についても調べてもらえますか?


司会者は、私のリクエストで手書きで更新していました。でも、いちいち聞くわけにもいかない。機械が通らない。

修正しました。

 
Anton:

修正しました。

なるほど、ありがとうございます。

 
Andrey Khatimlianskii:

使用するすべてのツールの刻みについて。


以下は、新しいティックをチェックするための私のコードです。

void OnTimer()
  {
//+------------------------------------------------------------------+
// Перебор всех символов, которые указаны в внешних переменных
// Recursion of all symbols that are specified in external variables
//+------------------------------------------------------------------+
   string SymbolToTick="";
   for(int si=0; si<12; si++)
     {
      if(si==0)
         SymbolToTick=PAIR1;
      if(si==1)
         SymbolToTick=PAIR2;
      if(si==2)
         SymbolToTick=PAIR3;
      if(si==3)
         SymbolToTick=PAIR4;
      if(si==4)
         SymbolToTick=PAIR5;
      if(si==5)
         SymbolToTick=PAIR6;
      if(si==6)
         SymbolToTick=PAIR7;
      if(si==7)
         SymbolToTick=PAIR8;
      if(si==8)
         SymbolToTick=PAIR9;
      if(si==9)
         SymbolToTick=PAIR10;
      if(si==10)
         SymbolToTick=PAIR11;
      if(si==11)
         SymbolToTick=PAIR12;
     
      if(SymbolToTick=="" && si==0)
        {
         SymbolToTick=Symbol();
        }
      if(SymbolToTick=="")
         continue;
      //|#############################################################################################+
      // проверяем текущий Бид Аск
      MqlTick last_tickSymbol;
      SymbolInfoTick(SymbolToTick,last_tickSymbol);
      double currentBid=last_tickSymbol.bid;
      double currentAsk=last_tickSymbol.ask;

      //|#############################################################################################+
      // Если тик изменился, запускаем тик этого символа
      if(currentBid!=LastBid[si] || currentAsk!=LastAsk[si])
        {
         // Запускаем исполнение тика
         OnTickSymbol(si,SymbolToTick);
         LastBid[si]=currentBid;
         LastAsk[si]=currentAsk;
         TicksAllNumbers[si]++;
        }
      //|#############################################################################################+
     }
  }


ダニの数をカウントしたテスト用配列を作成。


2つのペアを テストするEURUSD GBPUSD

GBPUSDでテストを実行中。

2020.02.18 14:01:03.802	Core 1	2020.02.16 23:59:58    TICKS EURUSD TicksAllNumbers=621120
2020.02.18 14:01:03.802	Core 1	2020.02.16 23:59:58    TICKS GBPUSD TicksAllNumbers=1143002


EURUSDでテストを実行中。

2020.02.18 14:01:37.129 Core 1  2020.02.16 23:59:58    TICKS EURUSD TicksAllNumbers=621120
2020.02.18 14:01:37.129 Core 1  2020.02.16 23:59:58    TICKS GBPUSD TicksAllNumbers=1143002


ダニも同じようです .........ということで、どこかで見落としていたのでしょうか......。

ありがとうございます、引き続き調べてみます。



判断:_Digitはコードにあった、環境に追加したはず...見ずに。

コメント不要)

 
Anton:

アーカイブ内のmql5pack-ico.zipファイルをフォルダに移動します。

このファイルをMQL5/Scriptsフォルダーに移動しました。役に立たなかった。その後、MQL5/Filesフォルダに移動させましたが、これもダメでした。

たぶん、何のことかわからないと思います。

 
Stanislav Korotky:

MQL5/Scriptsフォルダに移動しました。役に立たなかった。

固定されています。

 

コンスタンチン・グルーズデフ

ウラジスラフに質問したところ、新しいバーと必要なすべてのバーの非適用に関するニュアンスがあるので、私も多通貨に興味があります。

 
多通貨の問題はまだぶら下がっていて、MQはなぜかシグナルを出したがらず、プログラマーがタイミングとスパイの問題でいっぱいになってしまうのが残念です。
 
Vladislav Andruschenko:
タイマーを通して......はい。
タイマーの頻度を上げる可能性が高い ......。
いくつかの刻みが欠けている。だから、結果に差が出るのです。その差は非常に小さい。しかし、1ティック飛ばすだけで全てがひっくり返ります。

頻度が高ければ成果が上がるというわけではありませんが、テストのスピードが遅くなることは間違いありません。タイマーイベントは完璧ではなく、ほとんどの場合、エラーが発生します。 空のタイマーでも、エラーが表示されることがあります。タイマー機能内に計算がある場合は、誤差が大きくなる可能性があります。 サードパーティのタスクでコンピュータに負荷をかけることも、タイマーに影響を与えます。すべてのOpen/Close/Modifyシグナルが同じ時間、同じティックでヒットするわけではありません。

数年前、30種類近い商品を同時に使用する多通貨対応のヘビーなツールで、これらの観測を行ったことを述べておく価値があります。結果は、タイマーがオフのときだけ一致した。今もあまり変わっていないのではと推測しています。

 
Fast235:

コンスタンチン・グルーズデフ

ウラジスラフに質問したところ、新しいバーと必要なすべてのバーの非適用に関するニュアンスがあるので、私も多通貨に興味があります。

オッケーです。上記の回答