초보자를 위한 Pine Script v5 입문: indicator() 함수와 차트 오버레이 쉽게 풀이
파인 스크립트(Pine Script) v5는 트레이딩뷰(TradingView)에서 자신만의 지표와 전략을 구현하기 위해 사용하는 전용 스크립트 언어입니다. 스크립트 작성의 첫걸음은 스크립트의 선언문(Declaration Statement)과 차트 오버레이(Overlay)의 작동 방식 및 메커니즘을 정확히 이해하는 것입니다.
Pine Script v5의 핵심 선언 함수인 indicator()의 주요 옵션부터 차트 오버레이 개념, 실행 메커니즘까지 완벽히 정리를 진행해보겠습니다.
1. Pine Script v5 코드의 기본 구조
Pine Script 파일은 단순한 코드 모음이 아니라 트레이딩뷰 엔진이 해석하는 규칙적인 구조를 갖추고 있습니다. 최소한의 작동 가능한 Pine Script v5 코드는 다음과 같습니다.
//@version=5
indicator("나의 첫 지표", overlay=true)
plot(close)
이 세 줄은 파인 스크립트의 3대 핵심 요소를 나타냅니다.
컴파일러 버전 지정 (
//@version=5): 반드시 첫 번째 혹은 두 번째 줄에 위치해야 하며, 현재 메인 버전인 v5를 사용함을 명시합니다.지표 선언 (
indicator(...)): 스크립트의 종류, 이름, 차트 표시 방식 등 메타데이터를 정의합니다.출력/계산 로직 (
plot(...)): 실제 차트에 데이터를 시각화하거나 계산을 수행하는 구문입니다.
2. indicator() 함수와 핵심 옵션 완벽 분석
indicator() 함수는 스크립트가 실행될 때 트레이딩뷰 엔진에 지표의 기본 속성을 전달합니다. 주요 옵션들을 파악해 두면 목적에 맞는 지표를 훨씬 정교하게 설계할 수 있습니다.
주요 매개변수(Parameters) 상세 정리
| 옵션명 | 타입 | 기본값 | 역할 및 설명 |
title | string | 필수 입력 | 지표의 공식 이름입니다. 지표 검색창 및 차트 좌측 상단에 표시됩니다. |
shorttitle | string | title과 동일 | 차트 상단 레이블에 짧게 표시할 이름입니다. (예: title="Relative Strength Index", shorttitle="RSI") |
overlay | bool | false | 가장 중요한 옵션. 메인 가격 차트 위에 그릴지(true), 하단 별도 패널에 그릴지(false) 결정합니다. |
format | string | format.inherit | 축에 표시되는 수치 포맷을 설정합니다. (format.price, format.volume, format.percent 등) |
precision | int | none | 소수점 아래 표시할 자릿수를 지정합니다. (예: precision=2) |
explicit_implements_timeframe | bool | false | 멀티 타임프레임(MTF) 계산 시 지표가 해당 타임프레임을 직접 제어함을 명시할 때 사용합니다. |
timeframe | string | "" | 지표 계산의 기본 타임프레임을 고정합니다. (예: timeframe="D"로 설정 시 5분봉 차트에서도 일봉 데이터를 계산) |
timeframe_gaps | bool | true | 상위 타임프레임 데이터 사용 시 봉 사이에 발생하는 빈 곳(Gap) 처리 여부를 결정합니다. |
indicator() 활용3. 차트 오버레이(Overlay) 개념과 작동 메커니즘
Pine Script를 처음 작성할 때 가장 흔히 하는 실수 중 하나가 오버레이 옵션 설정 오류입니다.
1) overlay = true (메인 차트 오버레이)
개념: 주가 캔들스틱(Price Candles)이 위치한 메인 차트 창 위에 지표를 직접 포개어 그리는 방식입니다.
주요 용도: 가격(Price)과 동일한 단위를 공유하는 지표에 사용됩니다.
이동평균선(SMA, EMA)
볼린저 밴드(Bollinger Bands)
일목균형표(Ichimoku Cloud)
엔벨로프, 피봇 포인트 등
주의사항: 가격 축(Y축)을 주가와 공유하므로, 값이 0~100 사이로 고정된 오실레이터 지표를
overlay=true로 설정하면 주가 차트 바닥에 납작하게 누워서 표시되어 식별이 불가능해집니다.
2) overlay = false (하단 별도 패널)
개념: 메인 가격 차트 아래에 독립된 새로운 패널(Panel)을 생성하여 지표를 표시합니다.
주요 용도: 가격과 단위가 다르거나 0을 기준선으로 상하 움직임을 보이는 오실레이터 지표에 사용됩니다.
RSI (Relative Strength Index)
MACD (Moving Average Convergence Divergence)
스토캐스틱 (Stochastic)
거래량(Volume - 메인 차트와 분리할 경우)
4. Pine Script의 핵심 실행 구조: 봉 단위(Bar-by-Bar) 실행
Pine Script는 일반적인 프로그래밍 언어와 다른 고유한 실행 모델을 가지고 있습니다. 이를 'Bar-by-Bar Execution(봉 단위 실행)'이라고 합니다.
[차트의 첫 봉 (Bar Index 0)] -> [두 번째 봉] -> ... -> [현재 진행 중인 봉 (Real-time Bar)] │ │ │ 코드 1회 실행 코드 1회 실행 가격 변동마다 반복 실행
역사적 데이터(Historical Bars) 계산: 차트에 로드된 과거 데이터의 가장 첫 번째 봉(Bar 0)부터 시작하여, 마지막 완료된 봉까지 스크립트 전체가 봉 1개당 1회씩 순차적으로 실행됩니다.
실시간 봉(Real-time Bar) 계산: 현재 진행 중인 봉에서는 가격이 변할 때마다(Tick 단위) 스크립트 전체가 계속 다시 계산됩니다. 봉이 종가(Close)를 확정 짓는 순간 해당 값이 저장되고 다음 봉으로 넘어갑니다.
이 동작 메커니즘을 이해해야 ta.sma(), ta.rsi() 같은 내장 함수들이 봉이 이동할 때마다 과거 값을 기억하고 연속적인 선을 그릴 수 있는 이유를 이해할 수 있습니다.
5. 실전 응용 예제
오버레이 유무에 따른 두 가지 지표를 각각 작성해보며 구조 차이를 확인해보겠습니다.
예제 1: 메인 차트에 그려지는 '이중 지수이동평균(EMA) 지표' (overlay=true)
overlay=false)요약 정리
Pine Script v5는
//@version=5명시로 시작해야 합니다.indicator()함수는 지표의 이름과 표시 방식을 설정하는 메타데이터 선언부입니다.overlay=true는 이동평균선처럼 주가 차트에 포개어 그릴 때 사용하며,overlay=false는 RSI/MACD처럼 하단 패널에 별도로 나타낼 때 사용합니다.파인 스크립트 코드는 차트의 과거 봉부터 현재 봉까지 한 봉씩 순차적으로 순회하며 실행됩니다.
댓글
댓글 쓰기