5월 17, 2017

컴파일 타임 상수 타입이 새로이 생겼습니다

파인 스크립트는 3 타입의 콘스탄트가 있습니다 – 리터럴, 넌-리터럴 및 시리얼. 새로운 콘스탄트가 하나 더 생겼는데 우선 기존 것들부터 살펴 보겠습니다.

리터럴 타입은 15.5, -2 등과 같은 고정값이 이에 해당됩니다.
넌-리터럴 타입은 모든 바에서 똑같은 한가지 값을 갖지만 리터럴은 아닙니다. 보기: 티커, 인터벌, 또는 sin(1).
시리얼 타입 콘스탄트는 close 및 time[1] 과 같이 봉마다 서로 다른 값을 갖는 수를 말합니다.

일부 함수 (input, color) 는 오로지 리터럴만 쓸 수 있는 아규먼트가 있습니다. 당사는 컴파일 타임에  계산이 되는 새로운 타입의 콘스탄트가 있으면 훨씬 더 편리하다는 것을 알게 되어 마침내 이를 새로이 더했습니다. 새로운 콘스탄트는 리터럴뿐만 아니라 리터럴과 콘스탄트를 쓰는 수식까지도 넣을 수 있습니다.

integer, float, boolean, string 파인 스크립트 리터럴은 특정 타입인 반면 시리얼 타입은 매우 일반 타입입니다. 컴파일 타임 콘스탄트는 리터럴과 넌-리터럴 타입 중간에 해당됩니다. 리터럴 아규먼트를 쓰는 모든 함수는 이제 컴파일 타임 콘스탄트도 쓸 수 있습니다.


chrome_2017-05-17_13-37-43

다음과 같이 여러 가지 방법으로 함수를 콜할 수 있습니다.

pi = acos(-1)
r = input(pi)

mins = input(24*60)
la = barmerge.lookahead_on
daily = security(tickerid, 'D', close, lookahead=la)
daily_low = security(tickerid, 'D', low, lookahead=la)
in_sma='SMA', in_ema='EMA', in_mixed='1/2 SMA + 1/2 EMA'
smoothing = input(in_sma, options=[in_sma, in_ema, in_mixed])

smoothed = na
if smoothing == in_sma
     smoothed := sma(close, 7)

if smoothing == in_ema
     smoothed := ema(close, 7)

if smoothing == in_mixed
     smoothed := 0.5*sma(close, 7) + 0.5*ema(close, 7)