6월 25, 2019

파인 스크립트 V4 를 소개합니다!

Pine 스크립트 새 버전 V4 를 만나 보십시오!

새로운 피처가 많이 생겼습니다. 랭귀지 스트럭쳐를 더 좋게 만들고 여러 가지 이슈도 고쳤습니다. 그 가운데서도 가장 중요하고 오래 기다렸던 피처는 바로 드로잉 오브젝트 서포트입니다.

이 블로그를 통해 새로운 피처를 간단히 말씀 드리겠습니다.  도큐멘테이션레퍼런스 매뉴얼을 통해 자세한 내용을 읽어 보시기 바랍니다 (곧바로 드로잉 오브젝트 디스크립션 섹션으로 가도 됩니다).

드로잉 오브젝트 라벨

label.new 펑크션을 써서 차트위에 텍스트 라벨을 그려 넣을 수 있습니다. 아래에 라스트 바위에 클로즈 프라이스 라벨을 그려 넣는 스크립트 보기입니다.

//@version=4
study("Last Bar Price", overlay=true)

l = label.new(bar_index, na, 'last price is '+tostring(close), 
  color=close >= open ? color.green : color.red, 
  textcolor=color.white,
  style=label.style_labeldown, yloc=yloc.abovebar)

label.delete(l[1])


You can edit and delete the label object after creating it using label.* 라벨을 만든 뒤에는 펑크션 패밀리를 써서 에디트딜리트 할 수 있습니다. 다음에 좀 더 복잡한 라벨 스크립트가 나와 있습니다피봇 포인트 하이/로우.

라인 드로잉 오브젝트

차트위에 라인을 그려 넣을 수 있습니다. line.new 펑크션을 써서 라인 오브젝트를 만들 수 있습니다. 커런트 바 하이와 10번째 히스토리 바 로우를 잇는 라인을 그려 주는 스크립트 보기입니다:   

//@version=4
study("Line", overlay=true)
l = line.new(bar_index, high, bar_index[10], low[10], width = 4)
line.delete(l[1])


line.* 패밀리 펑크션을 써서 라인 오브젝트를 에디트 하거나 딜리트할 수 있습니다. 더욱 복잡한 라인 스크립트 보기입니다지그재그.

현재는 차트에 스크립트당 토탈 50-55 개의 싱글 타입 드로잉 (라벨 또는 라인) 을 디스플레이할 수 있습니다. 이는 서버 부하를 막기 위한 의도된 리미테이션입니다.

파인 스크립트의 새로운 라인 및 라벨 데이터 타입을 통해 유저 스크립트에 포퓰러 인디케이터 로직을 구현할 수 있게 해 줍니다. 도큐멘테이션에 많은 보기가 나와 있습니다.

시리즈 스트링

이제 시리즈 스트링 데이터 타입 베어리어블을 지원합니다. 라벨에 시리즈 스트링을 쓰는 보기입니다.

//@version=4
study("Series string", overlay = true)
draw_label(title) =>
    label.new(bar_index, high, text=title)
t = close >= open ? "green" : "red"
draw_label(t)

Var 키워드

일반적인 방법으로 선언된 베어리어블은 스크립트 계산때마다 초기화됩니다. 이로 인해 베어리어블의 이전 밸류 액세스 이슈가 생기게 됩니다. var keyword는 베어리어블을 선언하고 딱 한번만 초기화합니다. 따라서 베어리어블 밸류를 처음 초기화한 때부터 맨 마지막 어사인먼트때 까지 그 값을 세이브할 수 있게 됩니다. 아래에 차트위 그린 바 갯수를 세는 스크립트가 나와 있습니다:

study("My Script")
var s = 0.0
if close >= open
    s := s + 1
plot(s)

close >= open 컨디션이 맞을 때마다 s 베어리어블 값은 하나씩 늘어납니다. 초기값은 아무 식이나 됩니다.

var 키워드로 베어리어블 선언하는 신택스를 쓰면 다음 코드를 쓰지 않아도 됩니다: s := nz(s[1], s). var 모디파이어로 베어리어블 선언하는 것은 드로잉 작업때 꽤 쓸모가 있습니다.

빌트인 콘스탄트, 베어리어블 및 펑크션 리네이밍

파인 스크립트 v4 에서는 아래 빌트인 콘스탄드, 베어리어블 및 펑크션이 리네임 되었습니다:

  1. 컬러 콘스탄트 (보기: red) 는 color.* 네임스페이스로 옮겨졌습니다 (보기: color.red).
  2. color 펑크션은 color.new 으로 옮겨졌습니다.
  3. 인풋 타입 콘스탄트는 (보기: integer) input.* 네임스페이스로 (보기:  input.integer) 옮겨 졌습니다.
  4. 플롯 스타일 콘스탄트는 (보기: histogram 스타일) plot.style_* 네임스페이스 (보기: plot.style_histogram) 로 옮겨졌습니다.
  5. hline 펑크션 (보기: dotted 스타일) 스타일 콘스탄트는 hline.style_* 네임스페이스 (보기: hline.style_dotted) 로 옮겨졌습니다.
  6. 요일 콘스탄트는 (보기: sunday) dayofweek.* 네임스페이스 (보기: dayofweek.sunday) 로 옮겨졌습니다.
  7. 커런트 차트 타임프레임 베어리어블은 (보기: period, isintraday) timeframe.* 네임스페이스 (보기: timeframe.period, timeframe.isintraday) 로 옮겨졌습니다.
  8. interval 베어리어블은 timeframe.multiplier 로 리네임되었습니다.
  9. tickertickerid 베어리어블은 각각 syminfo.tickersyminfo.tickerid 로 리네임되었습니다.
  10. 바 인덱스 밸류를 가진 n 베어리어블은 bar_index 로 리네임되었습니다.

이렇게 리네이밍을 하는 숨은 까닭은 스탠다드 랭귀지 툴 스트럭쳐를 만들고 코딩도 훨씬 쉽게 할 수 있도록 하기 위한 것이었습니다. 새로운 이름들은 통상적인 프리픽스하 어사인먼트에 따라 그뤂핑이 되었습니다. 보기로, 에디터에서 ‘color’ 를 타이핑하고 Ctrl + 스페이스 를 누르면 모든 컬러 콘스탄트를 볼 수 있습니다.

익스플리시트 베어리어블 타입 선언

파인 스크립트 v4 에서는 선언 당시 언노운 데이터 타입의 베어리어블을 더 이상 만들 수 없게 되었습니다 (na-value). 이것은 베어리어블 타입이 초기화 뒤에 na 밸류로 타입이 바뀌는 경우 일어나는 여러 가지 이슈를 피하기 위함입니다. 이제부터는 베어리어블을 na 밸류와 함께 선언할 경우 베어리어블 타입을 키워드나 타입 펑크션 (보기, float) 을 써서 명확하게 밝혀야 합니다:

//@version=4
study("NA", overlay=true)
float a = na
a := if close >= open
    high
else
    low
plot(a)

파인 스크립트 v4 를 써 보십시오! 여러 유저가 이미 새 피처를 써서 드로잉을 쓰는 많은 임프레시브한 스크립트를 만들었습니다.

보기로, Ricardo Santos 는 아래와 같은 스크립트 시리즈를 만들었습니다:

Joris Duyck 은 드로잉 라인 쓰는 Trendlines 스크립트를 만들었습니다.

이들 보기를 통해 감을 잡으셨기를 바랍니다!

We hope these examples will inspire you! You can ask questions, discuss issues and share feedback in 당사 채팅방을 통해 물어보거나 이슈 토론 및 피드백 셰어를 할 수 있습니다. We want to thank 모든 파인스크립터 커뮤니티 멤버들이 베타 테스팅 등 많은 도움을 주어 고맙습니다. 코드 관련 물음도 당사 Stack Overflow 페이지를 통해 물어 볼 수 있습니다.