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

 
MoneyJinn:

インジケーターを再コンパイルすると、動的配列を 扱うときに「array out of range」エラーが発生するようになりました。

以前は発生しなかった。どうすればいいのか?

ファイルの冒頭に同様の行がある場合

#include <File.mqh> , これらのインクルードファイルは、前回のコンパイル以降、あなたや他の誰かによって変更されている可能性が高いです。

 
Olegts:

ファイルの冒頭に同様の行がある場合

#include <File.mqh>, これらのインクルードファイルは、前回のコンパイル以降に、あなたや他の誰かによって変更された可能性が高いです。

インクルードファイルはありません。

 
MoneyJinn:

プラグインファイルはありません。

なら、そのインジケータを投稿すれば、誰かが暇つぶしに見てくれるかもしれない)
 

動的配列に 何かを入れようとすると、なぜ「array out of range」 エラーが発生するのでしょうか?動的な配列である。

Array B1[] 対応するインジケーターバッファとして設定する。

SetIndexBuffer(0,B1,INDICATOR_DATA); ArraySetAsSeries(B1,true)とする。

ここでは、配列のサイズは明らかにユーザーがコントロールできるものではありません。

 
MoneyJinn:
動的配列に 何かを入れようとすると、なぜ「array out of range」 エラーが発生するのでしょうか?ダイナミックアレイです。
これは、それ自体でサイズを増やすということではなく、ArrayResize関数がこれを行い、その後、データを追加することができますが、新しい配列サイズより大きくはなりません
 
MoneyJinn:
動的配列に 何かを入れようとすると、なぜ「array out of range」 エラーが発生するのでしょうか?ダイナミックなんです。
(fcplm)
 
TheXpert:
(fcplm)

誰が彼を片付けるんだ! 彼はモニュメントなんだ!

 

プラットフォームエラーです。

インジケータバッファの B1配列を埋める際に、SetIndexBuffer(0,B1,INDICATOR_DATA)プロシージャが繰り返し呼び出された場合。

例)インジケーターの初期化時に、次にB1配列に何かを書き込もうとすると「array out of range」 エラーが発生する。

SetIndexBuffer(0,B1,INDICATOR_DATA) プロシージャを一度呼び出すと、すべて正常に動作するようになりました。

以前はそんなものはなかった。

Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
 
MoneyJinn:

プラットフォームエラーです。

インジケータバッファの B1配列を埋める際に、SetIndexBuffer(0,B1,INDICATOR_DATA)プロシージャが繰り返し呼び出された場合。

例えば、インジケーターを初期化する際、次にB1配列に何かを書き込もうとすると、「array out of range」 エラーが発生します。

プロシージャ SetIndexBuffer(0,B1,INDICATOR_DATA) の呼び出しが1回発生すると、すべて正常に動作する。

以前はなかったことです。

しかし、なぜ繰り返し行うのでしょうか?

バインディングとは、バッファをクリアにして、その後の計算のためのダイナミックバインディングの準備をすることです。2回目に呼び出すと、前のバッファはクリアされ、次の指標再計算の呼び出しの時だけ満たされるようになります。

 
Renat:

なぜ、こんなことを繰り返しているのですか?

バインディングとは、バッファーをクリアに し、次の計算のためのダイナミックバインディングの準備をすることです。2回目に呼び出すと、前のバッファはクリアされ、次の指標再計算の呼び出しの時だけ満たされるようになります。

これは、インジケーターの標準的な完全初期化で、インジケーターが最初に起動されたときに行われ、Oninit()を介して行われます。

履歴の更新などの際にも必要なことがあります。

Oninit()によるインジケータの初期化を繰り返すことで、配列が反応しなくなるとは誰も思っていなかったでしょう。