커뮤니티
지표수식문의 드립니다...
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. 5.png (0.06 MB)
답변 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으로 대체해 두었던 게 문제인 것 같습니다.
이 부분을 해결할 수 있을까요?
참고가 되실까해서 해당부분 설명을 캡쳐해서 첨부합니다.