'Pine cannot determine the referencing length of a series. Try using max_bars_back' のエラーが表示されます

Pineスクリプトが計算されると、コード内の各変数または関数ごとに特定のサイズのヒストリカルバッファが作成されます。そのバッファには、変数/関数の以前の値の情報が含まれており、コードが履歴参照演算子 [] を使用して過去の値を参照するときに使用されます。バッファサイズは、この値が要求可能な履歴の範囲を指定します。

Pineは、スクリプトの最初の244バーの計算中に行われた履歴の参照を分析することにより、すべての変数と関数に必要なバッファサイズを自動的に決定します。履歴の参照が検出されない場合には、変数や関数にデフォルトのバッファサイズが割り当てられます。変数の場合、デフォルトのバッファサイズは300バーで、関数の場合は1バーです。

通常問題は、条件付きステートメント (if, iff, or ?) の分岐で、244番目のバーが既に処理されているケースで、条件ステートメント内で変数や関数の履歴参照が最初に実行された時に発生します。そのような場合、Pineはその関数に適切なバッファサイズを割り当てることができない為、デフォルトのバッファサイズが使用されます。以下のコードをご覧ください。次の理由により前述のエラーが返されます:

  • var1 変数の値はコンパイル時には不明です。
  • test 変数は、チャートの最初の244バーで過去データをリクエストしません。

このため test 変数にはデフォルトで300バーのバッファが割り当てられます。スクリプトがこのバッファ外のその前の301バーの値を要求するとエラーが発生します。

//@version=4
study("max_bars_back var",overlay=true)
var1 = input(301)
test = 0.0
//max_bars_back(test, 301)
if bar_index > 244
    test := test[var1]
plot(test)

これを回避する為に、max_bars_back パラメーターと max_bars_back() 関数が存在します。デフォルトのバッファーでは不十分な場合に、それらで正しいバッファサイズを指定できます。上記のコードの max_bars_back() 関数呼び出しのコメントを外すと301のバッファが test 変数に割り当てられ、その結果スクリプトは適切に計算されます。

以下は、デフォルトの1バーのバッファサイズが割り当てられている関数呼び出しの例です。最初の244バーでは呼び出されない為、デフォルトの1バッファサイズが割り当てられています。この場合、[] 演算子を使用した過去の値への明示的な参照は使用されていませんが、関数では過去20本の値を計算する必要があります。したがってスクリプトは max_bars_back のエラーを返します:

//@version=4
study("Requires max_bars_back")
test = 0.0
if bar_index > 1000
    test := vwma(close, 20)
plot(test)

max_bars_back() 関数を使用して、特定のバッファサイズを関数に割り当てる事はできません。それを行う必要がある場合には、またはスクリプトすべての変数と関数にデフォルトのバッファサイズを設定されたい場合には、スクリプトの study または strategy 宣言ステートメントに max_bars_back パラメーターを追加します。なおこのパラメーターを使用するとスクリプトのリソース使用量が増加する為、このメソッドは必要な時のみ使用するようにして下さい:

//@version=4
study("Requires max_bars_back", max_bars_back=20)
test = 0.0
if bar_index > 1000
    test := vwma(close, 20)
plot(test)

条件分岐から問題のある式を取り除く事で問題を解決する事もできます。こうすると max_bars_back パラメーターを指定せずに問題を解決することができます:

//@version=4
study("Requires max_bars_back")
test = 0.0
vwma20 = vwma(close, 20)
if bar_index > 1000
    test := vwma20
plot(test)


max_bars_back と関連のエラーについての詳細は ユーザーマニュアルをご覧ください。

ホーム 株式スクリーナー FXスクリーナー 仮想通貨スクリーナー 経済指標カレンダー 使い方 チャート機能 価格 友達紹介 ハウスルール ヘルプセンター ウェブサイト&ブローカー向けソリューション ウィジェット チャートソリューション 軽量チャートライブラリ ブログ&ニュース ツイッター
プロフィール プロフィール設定 アカウントとお支払い 友達紹介 コイン マイサポートチケット ヘルプセンター 公開したアイデア フォロワー フォロー中 プライベートメッセージ チャット サインアウト