파인스크립트 기초
트레이딩뷰 파인스크립트 기초. Pine 에디터로 지표(indicator)와 전략(strategy) 스크립트를 만들고, 이동평균선 그리기, 백테스트, alertcondition 얼러트 설정까지 예제로 설명합니다.
파인(Pine)스크립트는 트레이딩뷰에서 돌아가는 스크립트 언어입니다. 코드는 Pine 에디터에서 씁니다. 스크립트는 두 종류입니다. 지표는 차트에 보조지표를 그리고, 전략은 백테스트를 할 수 있습니다.
v5 예제입니다
이 글의 예제는 v5입니다. 기본 문법은 v6에서도 같습니다. 달라진 점은 v6 변경점과 v5 코드 옮기기에 있습니다.
지표스크립트 작성방법
Pine 에디터 열기
차트 아래의 Pine 에디터 탭을 누릅니다.
미리 준비된 템플릿 코드가 나옵니다.
//@version=5
indicator("내 스크립트")
plot(close)- 1번째 줄: 파인스크립트 버전
- 2번째 줄: 지표 선언. 괄호 안은 제목입니다. 지표는
indicator(v5부터), 전략은strategy로 선언합니다. - 3번째 줄:
close는 캔들 종가,plot은 그 값을 차트에 그립니다.
이동평균선 그리기
기존 코드를 지우고 아래 코드를 붙여넣은 뒤 [차트에 넣기]를 누릅니다.
//@version=5
indicator("이동평균선그리기", overlay=true)
ma = ta.sma(close,21)
plot(ma)overlay=true: 가격 차트 위에 겹쳐 그립니다.ta.sma(close, 21): 종가의 21봉 단순 이동평균을 구해ma에 넣습니다.plot(ma): 이동평균선을 그립니다.
색과 굵기 바꾸기
선이 잘 안 보이니 color를 주황색, linewidth를 3으로 정합니다.
//@version=5
indicator("이동평균선그리기", overlay=true)
ma = ta.sma(close,21)
plot(ma, color=color.orange, linewidth=3)굵은 주황색 이동평균선이 나옵니다.
전략스크립트 작성방법
전략 템플릿 열기
Pine 에디터의 [열기] 메뉴에서 스트래티지를 고릅니다.
전략 템플릿이 나옵니다.
//@version=5
strategy("내 전략", overlay=true)
longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))
if (longCondition)
strategy.entry("My Long Entry Id", strategy.long)
shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
if (shortCondition)
strategy.entry("My Short Entry Id", strategy.short)- 2번째 줄: 전략 선언. 전략은
strategy로 선언합니다. - 4번째 줄: 14봉 이평이 28봉 이평을 위로 크로스하면
longCondition이true, 아니면false입니다. - 5~6번째 줄:
longCondition이true면strategy.entry로 매수 진입합니다. 첫 값"My Long Entry Id"는 차트에 보이는 이름,strategy.long은 매수입니다. - 8~10번째 줄: 반대로 아래로 크로스하면 매도 진입합니다.
이동평균선도 함께 그리기
앞에서 배운 plot으로 14봉 이평(파란색)과 28봉 이평(빨간색)을 그려 봅니다. 코드를 고치고 [저장]을 누릅니다.
//@version=5
strategy("내 전략", overlay=true)
sma14 = ta.sma(close, 14)
sma28 = ta.sma(close, 28)
plot(sma14, color=color.blue, linewidth=2)
plot(sma28, color=color.red, linewidth=2)
longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))
if (longCondition)
strategy.entry("My Long Entry Id", strategy.long)
shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
if (shortCondition)
strategy.entry("My Short Entry Id", strategy.short)얼러트 설정방법
얼러트는 내장 함수 alertcondition으로 만듭니다.
alertcondition(condition, title, message)| 값 | 뜻 |
|---|---|
condition | true면 얼러트를 울리고, false면 울리지 않습니다. |
title | 얼러트 제목 |
message | 얼러트가 울릴 때 보낼 메시지 |
위 전략을 얼러트용으로 바꿔 봅니다.
//@version=5
indicator("이평선 얼러트실행", overlay=true)
sma14 = ta.sma(close, 14)
sma28 = ta.sma(close, 28)
plot(sma14, color=color.blue, linewidth=3)
plot(sma28, color=color.red, linewidth=3)
longCondition = ta.crossover(sma14, sma28)
alertcondition(longCondition, title = "Buy", message = "Buy Message!")
shortCondition = ta.crossunder(sma14, sma28)
alertcondition(shortCondition, title = "Sell", message = "Sell Message!")바뀐 곳은 2·10·13번째 줄입니다.
- 2번째 줄:
strategy를indicator로 바꿨습니다.
alertcondition은 지표에서만 씁니다
alertcondition은 strategy와 함께 쓸 수 없습니다. 그래서 indicator로 선언합니다.
전략에서 얼러트를 보내는 방법은 얼러트 메시지 정리에 있습니다.
- 10번째 줄: 14봉 이평이 28봉 이평을 위로 크로스하면(매수 신호) 얼러트를 울립니다. 제목
"Buy", 메시지"Buy Message!" - 13번째 줄: 아래로 크로스하면(매도 신호) 얼러트를 울립니다. 제목
"Sell", 메시지"Sell Message!"
코드를 「이평선 얼러트실행」으로 저장하고 [차트에 넣기]를 누릅니다.
이제 얼러트를 추가합니다.
- 매수용 얼러트
- 매도용 얼러트