"NaN"은 "Not a Number"의 약자로, 숫자로 정의되지 않은 값을 나타냅니다. 일반적으로 연산이 정의되지 않은 경우 이 값이 발생합니다.

예를 들어, 0을 0으로 나눌 때의 결과는 "정의되지 않음"으로 간주되고, 이러한 경우에 NaN 값이 반환됩니다.

또는 NaN값과 연산을 하는경우에도 NaN값을 리턴합니다

//@version=5
indicator("Thxbot script")

a=na +1	//na는 내장변수입니다.(NaN값)
plot(a)

결과 : 아무런 값도 출력되지 않습니다.

 

 

na함수

na 함수는 시계열 데이터에서 누락된 값이나 undefined 값이 있는지 확인하는 데 사용됩니다.

na는 Not Available의 약자입니다.

예제1:

//@version=5
indicator("Thxbot script")

x = na(close[1]) ? close : na
plot(x)

이 스크립트에서 na(close[1])는 이전 (1 기간 전)의 종가(close[1])가 누락되었는지 확인합니다. 만약 누락되었다면(na(close[1])가 참이라면), 현재 종가(close)를 x에 할당하고, 그렇지 않다면 na (즉, 누락된 값)를 x에 할당합니다.

따라서 이 스크립트는 이전 종가가 누락된 경우에만 현재 종가를 플롯하고, 그렇지 않은 경우에는 값을 플롯하지 않습니다.

 

예제2:

//@version=5
indicator("Thxbot script")

sma20 = ta.sma(close, 20)	//파인스크립트 버전5이전에는 sma(close,20) 이렇게 작성

plot(na(sma20) ? na : sma20)

이 예제에서는 20기간의 단순 이동 평균(SMA)을 계산합니다. 
그런 다음, na 함수를 사용하여 이동 평균이 유효한지 확인합니다.
만약 20기간의 데이터가 충분하지 않아 이동 평균을 계산할 수 없다면(na(sma20)가 참이라면), 그래프에 아무것도 플롯하지 않습니다(na). 
그렇지 않다면, 이동 평균을 플롯합니다(sma20).

이렇게 na 함수를 사용하면 충분한 데이터가 없어 계산을 할 수 없는 초기 기간 동안에는 이동 평균을 플롯하지 않는 등, 
누락된 데이터를 적절하게 처리할 수 있습니다.

 

 

nz함수

nz 함수는 "na" 함수와 유사한 역할을 하지만, 누락된 값을 다른 값으로 대체하는 기능을 가지고 있습니다. 

nz 함수는 첫 번째 인수로 시계열 데이터를 받고, 선택적으로 두 번째 인수를 받아 시계열 데이터에 누락된 값이 있을 경우 이를 대체합니다.

이 함수의 이름은 "na zero"에서 파생된 것으로, 누락된 값을 0으로 대체합니다. 

두 번째 인수가 주어지지 않으면 이 기능이 사용됩니다.

//@version=5
indicator("Thxbot script")

sma20 = ta.sma(close, 20)
plot(close - nz(sma20, close))

이 스크립트는 현재 종가와 20기간 단순 이동평균(SMA) 간의 차이를 플롯합니다. 
만약 이동평균이 유효하지 않다면(sma20가 na라면), 
이동평균을 현재 종가(close)로 가정하고 계산합니다. 
이렇게 nz 함수를 사용하면 누락된 값을 적절하게 처리하고, 연산을 계속할 수 있습니다.

 

 

트레이딩뷰 무료자동매매 : 땡스봇TV

바이빗 거래수수료 20%할인 받을 수 있는 링크

www.bybit.com/en/register?affiliate_id=8325&language=en&group_id=0&group_type=1

 

비트겟 거래수수료 50%할인링크

https://partner.bitget.com/bg/F64QJX

 

바이낸스 레퍼럴링크

레퍼럴코드 : CPA_0069Y9NEXA

https://www.binance.com/en/activity/referral-entry/CPA?fromActivityPage=true&ref=CPA_0069Y9NEXA

 

 

비트맥스 거래수수료 6개월 동안 10% 할인받을 수 있는 링크

https://www.bitmex.com/register/wvtdj4

파인스크립트에서는 다른 언어와달리 반복문을 거의 사용하지 않으며,  기본으로  for문 정도만 지원합니다.

이유는 주로 시계열 데이터를 처리하기 때문이라고 합니다. 스크립트를 작성하시다 보면 반복문은 거의 사용할 일이 없습니다.

 

 

for문

//@version=5
indicator("Thxbot script")

length = 10
sum = 0.0
for i = 0 to length - 1
    sum := sum + close[i]	//close는 차트의 종가를 나타냅니다.

avg_close = sum / length
plot(avg_close)		//plot함수는 차트에 그래프를 나타냅니다.

이 스크립트는 최근 10일간의 종가(close)의 평균을 계산하고 플롯합니다.

for문은 i = 0부터 시작하여 length - 1까지 반복하며, 각 반복에서는 sum에 i일 전의 종가(close[i])를 더합니다. 반복이 끝나면 sum을 length로 나누어 평균을 계산합니다.

 

결과

파인스크립트에서 연산자(operator)는 수학적, 비교, 논리적, 할당(대입) 등의 연산을 수행하는 기호나 키워드를 말합니다. 연산자를 사용하여 값이나 변수 간의 관계를 나타내거나, 값을 계산하거나, 기존 값을 변경할 수 있습니다.

 

산술 연산자(Arithmetic Operators):

덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%), 거듭제곱(^) 등의 기본적인 
수학 연산을 수행합니다.

 

비교 연산자(Comparison Operators)

등호(==), 부등호(!=),  작은(<), 큰(>), 작거나 같은(<=), 크거나 같은(>=) 연산자로 
두 값이나 변수를 비교할 때 사용됩니다.

 

논리 연산자(Logical Operators)

and(논리곱), or(논리합), not(부정) 연산자로 논리적인 조건을 평가할 때 사용됩니다.

 

할당(대입) 연산자(Assignment Operators)

할당(=), 재할당(:=), 덧셈 후 할당(+=), 뺄셈 후 할당(-=), 곱셈 후 할당(*=), 나눗셈 후 할당(/=), 
나머지 연산 후 할당(%=), 거듭제곱 후 할당(^=) 등의 연산을 수행합니다.

재할당(:=) : 이미 사용된 변수에 재할당하는경우 사용됩니다.

 

a=5
a=7 //다시 대입시 오류발생

아래처럼 코딩하셔야 정상적으로 실행됩니다.

a=5
a:=7	//정상적으로 a에 7이 할당됩니다.

 

 

삼항연산자(?:)

조건에 따라 두 개의 다른 값을 선택할 수 있게 합니다.

condition ? result1(true) : result2(false)

condition이 참이면 result1실행, 거짓이면 result2실행

예)

age=26

whatAge=(age >21) ? "Up" : "Down"

결과 : "Up"

 

트레이딩뷰 자동매매 : 땡스봇TV

바이빗 거래수수료 20%할인 및 증정금 $90 받을 수 있는 링크

www.bybit.com/en/register?affiliate_id=8325&language=en&group_id=0&group_type=1

 

비트겟 거래수수료 50%할인링크

https://partner.bitget.com/bg/F64QJX

 

바이낸스 레퍼럴링크

레퍼럴코드 : CPA_0069Y9NEXA

https://www.binance.com/en/activity/referral-entry/CPA?fromActivityPage=true&ref=CPA_0069Y9NEXA

 

 

비트맥스 거래수수료 6개월 동안 10% 할인받을 수 있는 링크

https://www.bitmex.com/register/wvtdj4

 

+ Recent posts