MqlRates rt[];
CopyRates(Symbol(), 0, 0, 5, rt);
ArraySetAsSeries(rt, true);
ArrayResize(rt, 6); // добавляет элемент в конец массива//ArraySetAsSeries(rt, true);for (int x = 0; x < ArraySize(rt); x++) {
Print(rt[x].time);
}
Print("=================");
(EURUSD,H1) 2019.12.1302:00:00
(EURUSD,H1) 2019.12.1301:00:00
(EURUSD,H1) 2019.12.1300:00:00
(EURUSD,H1) 2019.12.1223:00:00
(EURUSD,H1) 2019.12.1222:00:00
(EURUSD,H1) 1970.01.0100:00:00 - последний элемент
(EURUSD,H1) =================
MqlRates rt[];
CopyRates(Symbol(), 0, 0, 5, rt);
//ArraySetAsSeries(rt, true);ArrayResize(rt, 6); // добавляет элемент в конец массиваArraySetAsSeries(rt, true);
for (int x = 0; x < ArraySize(rt); x++) {
Print(rt[x].time);
}
Print("=================");
(EURUSD,H1) 1970.01.0100:09:19 - последний элемент
(EURUSD,H1) 2019.12.1302:00:00
(EURUSD,H1) 2019.12.1301:00:00
(EURUSD,H1) 2019.12.1300:00:00
(EURUSD,H1) 2019.12.1223:00:00
(EURUSD,H1) 2019.12.1222:00:00
(EURUSD,H1) =================
あるのでしょうか?本当にあるんですか?どのような経路をたどっているのでしょうか?
どうすれば再現できるのでしょうか?
スクリプトをナビゲータのお気に入りに 登録します。
間違ったバージョンをコンパイルしている。
Terminalを再起動し、Favoritesからスクリプトを編集してみてください。
デベロッパー説明が必要である。どちらを信じるか?ドキュメントか実装か?今のところ未定義の動作が表示されています。
@fxsaber さん、公式の説明の前に使うのはおすすめしません、もしかしたら修正されるかもしれません。
ドキュメントが滞っている、直そう。
静的変数を式で初期化することはお勧めしません。可能であれば、定数を使用してください。
なぜなら、定数でない式を使うと、コンパイラは次のようなコードを生成するからです。
オーバーヘッドがあり、各コールは __Implicit_myStaticVar_initialized フラグをチェックします。
定数の場合、以下のようなコードになります。
オーバーヘッドがない。
ありがとうございます、オーバーヘッドについて理解できました。
結果
...質問が違う。おそらくMQL5にはバグがあり、それに対処する必要があるのでしょうが、初心者向けのトピックに先送りしても、すぐに解決できるわけではありません。
トピックのタイトルをお読みください。
スレッドのタイトルをお読みください。
そして、どこに矛盾があるのか?記述されている状況は、言語の特徴 である場合もあれば、バグである場合もあります。それが知りたかったのでしょう。
そして、どこに矛盾があるのか?説明されている状況は、言語の特徴かも しれないし、バグかもしれない。それが知りたかったのでしょう。
いや、まずバグなのかクセなのかが判明してから、正確に、クセだけを掲載するのです。話題はあくまでも機能に関するものです。
Ilyas@Slava@Renat Fatkhullin
mql は、文書化されていない関数のキーワードをサポートしています。
使うのは合理的か?
もしそうなら、コンパイラーはいつそれを受け入れるのでしょうか?
ArrayReverseのヘルプにあります。
ArraySetAsSeries()関数は、配列の要素を物理的に移動させるのではなく、インデックスの方向を逆に し、時系列のように要素へのアクセスを整理するのみ である。 ArrayReverse()関数は、配列の項目を物理的に移動させ、配列を「反転」させるものです。
しかし、このコードはその逆を証明している。