'파인이 시리즈 참조 길이를 정할 수 없습니다. max_bars_back 을 써 보십시오' 에러가 납니다.

파인 스크립트는 각 베어리어블 또는 펑크션에 대해 히스토리 버퍼를 만듭니다. 그 버퍼에는 베어리어블/펑크션의 이전 값 정보가 들어 있어 코드에서 [] 히스토리-레퍼런싱 오퍼레이터를 써서 지나간 값을 찾아 쓰게 됩니다. 버퍼 사이즈는 얼마나 오래 히스토리 밸류를 쓸 수 있을 지를 정하게 됩니다.

파인은 스크립트를 셈하면서 첫 244 바에서 쓰인 히스토리 값들을 분석하여 모든 베어리어블/펑크션에 대한 버퍼 사이즈를 알아서 결정합니다. 지난 값을 하나도 쓰지 않을 경우 베어리어블/펑크션에 디폴트 디폴트 버퍼 사이즈를 줍니다. 디폴트 베어리어블 버퍼 사이즈는 300바, 펑크션은 한 바입니다.

224번째 바가 이미 지났을 때 조건문 (if, iff, 또는 ?) 안에서 베어리어블/펑크션의 히스토리 레퍼런스를 하게 될 때 조건문의 브랜치에서 이슈가 생기곤 합니다. 그런 경우, 파인에서 그 펑크션에 대한 마땅한 버퍼 사이즈를 줄 수 없게 되어 디폴트 버퍼 사이즈를 쓰게 됩니다. 아래 코드를 보시기 바랍니다. 앞서 얘기한 에러가 나게 되는데 그 까닭은:

  • 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)
Java

max_bars_back 파라미터 및 max_bars_back() 펑크션으로 이 이슈를 풀 수 있습니다. 이 두 펑크션으로 디폴트 버퍼가 모자랄 때 올바른 베어리어블/펑크션 버퍼 사이즈를 줄 수 있습니다. 위 코드에서 max_bars_back() 을 언코멘트하십시오. 테스트 베어리어블 버퍼 크기가 301이 되어 스크립트가 잘 돌아가게 됩니다.

다음 보기에서는 첫 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)
Java

펑크션으로 어떤 펑크션에 특정 버퍼 사이즈를 줄 수는 없습니다. 그게 필요할 경우 또는 모든 베어리어블/펑크션에 대해 디폴트 버퍼 사이즈를 세팅하고 싶으면 스크립트의 study 또는 strategy 에 max_bars_back parameter 넣도록 하십시오. 이 파라미터를 쓰게 되면 스크립트의 리소스 사용이 늘어나게 됩니다.  따라서 이 방법은 필요할 때 만 써야 합니다.

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

그리고 조건문 브랜치로부터 문제의 익스프레션을 빼내는 것도 한가지 방법입니다. 이경우 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)
Java

max_bars_back 에 대한 자세한 것과 연관 에러는 당사 유저 매뉴얼에 나와 있습니다.

홈으로 스탁 스크리너 포렉스 스크리너 크립토 스크리너 이코노믹 캘린더 사용안내 차트 특징 프라이싱 프렌드 리퍼하기 하우스룰(내부규정) 헬프 센터 웹사이트 & 브로커 솔루션 위젯 차팅 솔루션 라이트웨이트 차팅 라이브러리 블로그 & 뉴스 트위터
프로화일 프로화일설정 계정 및 빌링 리퍼드 프렌즈 코인 나의 서포트 티켓 헬프 센터 공개아이디어 팔로어 팔로잉 비밀메시지 채팅 로그아웃