TVExtBot가이드
파인스크립트 강좌

파인스크립트 기초

트레이딩뷰 파인스크립트 기초. 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)
값뜻
conditiontrue면 얼러트를 울리고, 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!"

코드를 「이평선 얼러트실행」으로 저장하고 [차트에 넣기]를 누릅니다.

이제 얼러트를 추가합니다.

  1. 매수용 얼러트
  1. 매도용 얼러트

이 페이지에서