minimimi

[TradingView] 07.파인 스크립트 조건문 - 지표표시부터 자동매매까지 파인 스크립트와 함께(with pine script) 본문

프로그래밍 공부/금융&주식

[TradingView] 07.파인 스크립트 조건문 - 지표표시부터 자동매매까지 파인 스크립트와 함께(with pine script)

99mini 2023. 4. 16. 23:29
반응형

1. Bool 타입과 비교 연산자

참과 거짓의 상태를 나타내기 위한 bool 타입이 존재합니다. bool타입은 true, false, na 세 가지 중 하나의 상태를 가집니다.

na 키워드
변수에 할당된 값이 없음을 나타내는 "사용할 수 없음" 키워드입니다.

비교 연산자를 통해서 값을 비교하면 bool값을 반환하게 됩니다.

비교 연산자 의미
== 같다.
!= 같지 않다.
> 크다
< 작다
>= 크거나 같다.
<= 작거나 같다.
//@version=5
indicator("내 스크립트", overlay=true)

down = close < open           
plotshape(down, style=shape.circle, location=location.belowbar)

down = close < open에서 종가가 시가보다 작은경우 downfalse를 아닌 경우 true를 저장합니다.
plotshape 함수의 첫 번째 인자에 series값을 넣어주어 참인 경우에 그래프에 그리게 됩니다.

2. 조건문

var_declarationX = if condition
    var_decl_then0
    var_decl_then1
    …
    var_decl_thenN
else if [optional block]
    var_decl_else0
    var_decl_else1
    …
    var_decl_elseN
else
    var_decl_else0
    var_decl_else1
    …
    var_decl_elseN
    return_expression_else

var_declarationX — 이 변수는 if 스테이트먼트의 값을 받습니다
condition — 조건이 참이면 'then' 블록 (var_decl_then0, var_decl_then1 등) 의 로직이 쓰이게 됩니다.
조건이 거짓이면 'else' 블록 (var_decl_else0, var_decl_else1 등) 의 로직이 쓰이게 됩니다.
return_expression_then, return_expression_elsethen 블록 또는 else 블록 끝 expression 은 그 문장의 최종 값을 리턴합니다. 변수 선언이 마지막에 나오면 그 값이 결과값이 됩니다.
if 문의 리턴값 타입은 return_expression_thenreturn_expression_else type (같은 타입이어야 함: else 블록에 string 밸류이면서, then 블록에서 integer 를 리턴할 수 없습니다) 에 달려 있습니다.


앞선 코드를 if문을 이용해서 수정하겠습니다.

// @version=5
indicator("내 스크립트", overlay=true)
my_color = color(na)
isDown = close < open
if isDown
    my_color := color.blue
else
    my_color := color.red
plotshape(close, style=shape.circle, location=location.belowbar ,color = my_color)

isDown 변수에 음봉이면 참을 양봉이면 거짓을 저장합니다. 그리고 양봉이면 빨간색을 음봉이면 파란색으로 그래프에 그려주겠습니다.

3. 삼항 연산자

expr1 ? expr2 : expr3

expr1if문의 condition과 동일한 역할을 합니다. 따라서 bool타입이 들어가게 되고 참이면 expr2을 수행하고 거짓인 경우 expr3를 수행합니다.

//@version=5
indicator("?:")
// 시가가 종가와 크로스를 만들 때 원을 그립니다.
s2 = ta.cross(open, close) ? math.avg(open,close) : na
plot(s2, style=plot.style_circles, linewidth=2, color=color.red)

// 삼항 연산자를 연속적으로 사용할 수 있습니다.
c = timeframe.isintraday ? color.red : timeframe.isdaily ? color.green : timeframe.isweekly ? color.blue : color.gray
plot(hl2, color=c)

expr2expr3자리에 또 다시 삼항 연산자가 올 수도 있습니다. 연쇄적으로 첫 번째 표현에는 다시 bool타입의 비교값이 오고 ?:에 순서대로 표현을 적어주면됩니다.

4. 논리 연산자

and, or, not 연산자를 이용하여 bool타입의 값을 계산할 수 있습니다.

andand로 연결된 모든 값이 참이어야 참을 반환하고 하나라도 거짓이 있을 경우 거짓을 반환합니다.

false and false ▶️ false
false and true ▶️ false
true and false ▶️ false
true and true ▶️ true

oror로 연결된 값 중 하나라도 참이면 참을 반환하고 모두 거짓인 경우 거짓을 반환합니다.

false or false ▶️ false
false or true ▶️ true
true or false ▶️ true
true or true ▶️ true

not 연산자는 참은 거짓으로 거짓은 참으로 변환해줍니다.

not false ▶️ true
not true ▶️ false

✅ 파인 스크립트 공식 레퍼런스 메뉴얼

https://kr.tradingview.com/pine-script-reference/v5/

 

Pine 스크립트 언어 레퍼런스 매뉴얼

 

kr.tradingview.com

✅ 트레이딩 뷰 유료플랜을 원하신다면 아래의 링크로 가입해주세요.

https://kr.tradingview.com/gopro/?share_your_love=itman390

 

Join me on TradingView, this place is awesome.

If you eventually grab a paid plan, we each get $30 as a bonus!

kr.tradingview.com

저와 여러분 모두 최대 30달러를 지급 받을 수 있습니다!

반응형