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

 
Neofit:
配列のサイズを 設定します。アレイサイズ
 
Neofit:

Mqlrate構造 体を要素とする配列で正しく動作させる方法を教えてください。

これこそ、私が知りたいことです。

MqlRates AdaptedRates[];

ArraySetAsSeries(AdaptedRates,true); 

AdaptedRates[300].open=1;

デバッガは、「無効な配列アクセス」というエラーを出します。

この記録形式を使うと、配列の要素である構造体の要素しか読み取れないと 理解しています。

問題は、構造要素をどう正しく書くか です。全てに興味があるわけではありません。重要なのは、.open .high .low .closeの価格です。

私はこの質問はおそらく非常に些細なこと(私はプログラマではない)、事前に謝罪しますが、ヘルプで私は答えを見つけることができませんでした。何かありましたら、よろしくお願いします。

動的配列AdaptedRates[]を使用しています。私の記憶では、動的配列を扱う場合、そのサイズはArrayResize()関数を使用して設定する必要があります。しかし、これまでのところ、コンパイラは3行目のインデックス300について文句を言っています。
 
Swan:
配列のサイズを設定します。アレイサイズ
私が理解する限り、例えば
MqlRates AdaptedRates[302];  
のようなサイズを設定すると、インデックスのタイプをシリーズに設定することはできません。
 
Neofit:
私の理解では、例えば
MqlRates AdaptedRates[302];  
のようにサイズを定義すると、インデックスのタイプをシリーズに設定することができなくなります。

:)静的配列ではなく、動的配列のサイズをArrayResize() で設定します。

まあ、例えば:ArrayResize(AdaptedRates,302); など。

 
Yedelkin:
動的配列AdaptedRates[]を使用しています。私の記憶では、動的配列を扱う場合、ArrayResize()関数でサイズを設定する必要があります。そして今のところ、コンパイラは3行目で指定されたインデックス300でクラッシュしています。
静的配列は時系列で表現できないため、配列の終端から始端までの配列要素へのアクセスを設定する ArraySetAsSeries() 関数は適用できない。時系列のような配列へのアクセスを提供したい場合は、動的配列オブジェクトを 使用します。

これはヘルプからの引用です。

Swanさん、Yedelkinさん、こんなに早く対応していただいてありがとうございます。

 
Neofit:
私が理解する限り、例えば
MqlRates AdaptedRates[302];  
のようにサイズを定義すると、インデックスのタイプをシリーズに設定することができません。

はい

MqlRates AdaptedRates[];//これにより、配列は動的なままになります。

ArrayResize(AdaptedRates,302);//そして正しいサイズを設定する。

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных - Документация по MQL5
 
Yedelkin:

:)静的な配列を 設定するのではなく、ArrayResize() を使って動的な配列を設定するのです。

まあ、ArrayResize(AdaptedRates,302); などのように。

人気のある説明ありがとうございます。私が理解する限り、動的配列のセルを参照する前に、必要な限界までArrayResize することが望ましいと思います、試してみます
 
pusheax:

ストラテジーテスターの 不具合。

突然停止し、ローカルとリモートのエージェントがすべて終了したため、ハングアップしてしまいます。

また一から始めるのは勿体無いので、教えて頂けませんか?
定期的にやってます :-)また起動できなくなり、雲を無効にしてから再度雲を起動します。 さらに悪いことに、夜間に発生すると、起きるまで起動したままです :-)
 
Neofit:
人気のある説明ありがとうございます。私の理解する限り、動的配列のセルを参照する前に、必要な限界までArrayResize することが望ましいと思われます、試してみます

インジケーターバッファーのみ、この作業は必要ありません。端末のエグゼクティブサブシステムが自ら処理する。

注2:ArrayResize()は、動的配列のサイズを変更する必要がある場合にのみ適用し、その要素にアクセスする前に 適用しないことが望ましい。動的配列の場合、一度サイズを指定すれば、あとは単純にその項目にアクセスするだけということもありえます。

 
Yedelkin:

インジケーターバッファーのみ、この作業は必要ありません。端末のエグゼクティブサブシステムが自ら処理する。

注2:ArrayResize()は、動的配列のサイズを変更する必要がある場合にのみ適用し、その要素にアクセスする前に 適用しないことが望ましい。動的配列は一度サイズを決めれば、後はその要素にアクセスするだけということもあり得ます。

まあ、そう言うのは愚かなことで、実は動的配列を302まで展開済みなら、ArrayResizeなしで0から301までのどの要素にもアクセスできることは理解しているのですが。