커뮤니티

지표수식문의 드립니다...

프로필 이미지
텐푸로
2018-07-17 17:47:56
298
글번호 120682
답변완료

첨부 이미지

안녕하세요, tradingview의 파인스크립트를 활용해서 작성된 수식을 공부하다가 수식하나를 예트버전으로 만드는 과정에서 막힘이 발생했습니다. 도와 주세요. 파인스크립트의 원래식은 다음과 같습니다. Length = input(21, minval=1), Multiplier = input(3, minval=1) avgTR = wma(atr(1), Length) highestC = highest(Length) lowestC = lowest(Length) hiLimit = highestC[1]-(avgTR[1] * Multiplier) loLimit = lowestC[1]+(avgTR[1] * Multiplier) lin = iff(close > hiLimit and close > loLimit, hiLimit, iff(close < loLimit and close < hiLimit, loLimit, nz(lin[1], 0))) plot(lin) 이걸 예트버전으로 만들어 봤는데 아래와 같습니다. Input : Length(21), Multiplier(3); var : avgTR(0), highestC(0), lowestC(0), hiLimit(0), loLimit(0), lin(0); avgTR = wma(ATR(1), Length); highestC = highest(C, Length); lowestC = lowest(C, Length); hiLimit = highestC[1]-(avgTR[1] * Multiplier); loLimit = lowestC[1]+(avgTR[1] * Multiplier); lin = IFF(C > hiLimit and C > loLimit, hiLimit, iff(C < loLimit and C < hiLimit, loLimit, NaN)); plot(lin, "lin"); 여기서 맨 아래줄의 plot(lin...)에서 에러가 나는데요, 위의 파인 스크립트의 nz함수와의 차이가 있어서 그런 것 같습니다. 파인 스크립트 설명서를 보니까 nz함수는 self referenceing을 위한 함수라고 하던데, 예트에서 이 기능을 하게 하는 방법을 몰라서 NaN으로 대체해 두었던 게 문제인 것 같습니다. 이 부분을 해결할 수 있을까요? 참고가 되실까해서 해당부분 설명을 캡쳐해서 첨부합니다.
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-07-18 10:42:48

안녕하세요 예스스탁입니다. 해당 함수는 값이 없으면(null) 0을 리턴하게 하는 함수같습니다. 차트는 숫자만 표시가 가능하므로 값이 없으면 0으로 대체해서 값저장을 하기 위함입니다. 아래와 같이 수정하시면 될것 같습니다. input : Length(21),Multiplier(3); var : atrv(0),avgTR(0),highestC(0),lowestC(0),hiLimit(0),loLimit(0),lin(0); atrv = atr(1); avgTR = wma(atrv, Length); highestC = highest(C,Length); lowestC = lowest(C,Length); hiLimit = highestC[1]-(avgTR[1] * Multiplier); loLimit = lowestC[1]+(avgTR[1] * Multiplier); lin = iff(close > hiLimit and close > loLimit, hiLimit, iff(close < loLimit and close < hiLimit, loLimit, iff(isnan(lin[1]) == false,lin[1], 0))); plot1(lin); 즐거운 하루되세요 > 텐푸로 님이 쓴 글입니다. > 제목 : 지표수식문의 드립니다... > 안녕하세요, tradingview의 파인스크립트를 활용해서 작성된 수식을 공부하다가 수식하나를 예트버전으로 만드는 과정에서 막힘이 발생했습니다. 도와 주세요. 파인스크립트의 원래식은 다음과 같습니다. Length = input(21, minval=1), Multiplier = input(3, minval=1) avgTR = wma(atr(1), Length) highestC = highest(Length) lowestC = lowest(Length) hiLimit = highestC[1]-(avgTR[1] * Multiplier) loLimit = lowestC[1]+(avgTR[1] * Multiplier) lin = iff(close > hiLimit and close > loLimit, hiLimit, iff(close < loLimit and close < hiLimit, loLimit, nz(lin[1], 0))) plot(lin) 이걸 예트버전으로 만들어 봤는데 아래와 같습니다. Input : Length(21), Multiplier(3); var : avgTR(0), highestC(0), lowestC(0), hiLimit(0), loLimit(0), lin(0); avgTR = wma(ATR(1), Length); highestC = highest(C, Length); lowestC = lowest(C, Length); hiLimit = highestC[1]-(avgTR[1] * Multiplier); loLimit = lowestC[1]+(avgTR[1] * Multiplier); lin = IFF(C > hiLimit and C > loLimit, hiLimit, iff(C < loLimit and C < hiLimit, loLimit, NaN)); plot(lin, "lin"); 여기서 맨 아래줄의 plot(lin...)에서 에러가 나는데요, 위의 파인 스크립트의 nz함수와의 차이가 있어서 그런 것 같습니다. 파인 스크립트 설명서를 보니까 nz함수는 self referenceing을 위한 함수라고 하던데, 예트에서 이 기능을 하게 하는 방법을 몰라서 NaN으로 대체해 두었던 게 문제인 것 같습니다. 이 부분을 해결할 수 있을까요? 참고가 되실까해서 해당부분 설명을 캡쳐해서 첨부합니다.