본문 바로가기
취미/주식

tradingview Pine Script 파인스크립 처음 사용해보기 및 나스닥 100 트레이딩 뷰 예시

by icebear3000 2025. 5. 31.
반응형

TradingView Pine Script & Pine Editor

입문자 가이드

트레이딩뷰에서 제공하는 Pine Script는 사용자 정의 지표와 트레이딩 전략을 개발하기 위한 전용 프로그래밍 언어입니다

Pine Script는 JavaScript와 유사한 구문을 사용하며, TradingView 차트 환경 내에서 직접 실행되어 금융 데이터 분석에 최적화되어 있습니다


Pine Script란 무엇인가?

Pine Script는 트레이딩뷰에서 개발한 프로그래밍 언어로, 트레이딩 알고리즘, 지표, 전략 등을 생성하기 위해 설계되었습니다

 

금융 데이터 분석을 위한 다양한 내장 변수와 함수를 제공하며, 대규모 커뮤니티에 의해 기여된 오픈 소스 스크립트들이 풍부하게 제공됩니다. Pine Script의 주요 장점은 직관적인 문법, 함수들, 그리고 TradingView 차트에 직접 적용 가능하다는 점입니다

Candlestick chart showing TradingView's Pine Script analysis

차트의 각 바(타임프레임에서 한 개의 데이터)마다 실행되며, 트레이더들이 자신만의 맞춤형 지표와 전략을 개발할 수 있도록 해줍니다


Pine Editor 시작하기

Pine Editor 접근 방법

TradingView 차트 하단에 위치한 "Pine Editor" 탭을 클릭하여 접근할 수 있습니다

Pine Editor는 Pine Script 작성을 위해 특별히 설계된 에디터로, 코드 하이라이팅, 문법 힌트, 자동완성 기능 등 다양한 편의 기능을 제공합니다

Creating a new indicator in TradingView's Pine Editor

Creating a new indicator in TradingView's Pine Editor


새로운 스크립트 생성

 

드롭다운 메뉴에서 "새로 만들기"를 선택한 후, "인디케이터", "전략", 또는 "라이브러리" 중 원하는 유형을 선택할 수 있습니다. 키보드 단축키로는 Ctrl+K 후 Ctrl+I를 연속으로 눌러 새로운 스크립트 작성 창을 열 수 있습니다


Pine Editor 주요 기능

  • 문법 하이라이팅: Pine Script 문법에 따른 코드 색상 구분
  • 자동완성: Ctrl+Space(또는 Cmd+Space) 키를 통한 함수 및 변수 자동완성
  • 문법 힌트: 함수에 마우스를 올릴 때 나타나는 도움말
  • 버전 관리: 스크립트의 여러 버전을 저장하고 관리
  • 빠른 참조: Ctrl+Click으로 Pine Script 참조 매뉴얼 팝업 접근

Pine Script 기본 구조와 문법

스크립트 기본 구조

모든 Pine Script는 다음과 같은 기본 구조를 따릅니다

//@version=5
indicator("스크립트 이름", overlay=true)

// 변수 선언
length = input.int(20, title="기간")

// 계산
sma_value = ta.sma(close, length)

// 출력
plot(sma_value, color=color.blue)

 

버전 선언: //@version=5는 사용할 Pine Script 버전을 명시합니다. 버전 번호는 1부터 6까지 있으며, 최신 버전 사용을 권장합니다

선언문: indicator() 또는 strategy() 함수를 사용하여 스크립트 유형을 정의합니다. overlay=true 옵션은 지표를 메인 차트 위에 표시하며, false인 경우 별도 패널에 표시됩니다

변수와 함수: Pine Script는 느슨한 타입 언어로, 변수 선언 시 별도의 타입 지정이 필요 없습니다. 기본 데이터 타입으로는 정수(int), 실수(float), 문자열(string)이 있습니다


내장 변수와 함수

Pine Script는 다양한 내장 변수를 제공합니다

  • open, high, low, close: 현재 바의 시가, 고가, 저가, 종가
  • volume: 거래량
  • bar_index: 바의 인덱스 번호

기술적 분석을 위한 내장 함수들도 풍부하게 제공됩니다

  • ta.sma(): 단순 이동평균
  • ta.ema(): 지수 이동평균
  • ta.rsi(): 상대강도지수
  • ta.macd(): MACD 지표

Pine Script 기능별 사용빈도와 중요도를 나타낸 막대 차트

Pine Script 기능별 사용빈도와 중요도를 나타낸 막대 차트


첫 번째 지표 만들기

단순 이동평균 지표 작성

가장 기본적인 예제로 단순 이동평균(SMA) 지표를 만들어보겠습니다. Pine Editor에서 새로운 인디케이터를 생성한 후 다음 코드를 입력합니다

//@version=5
indicator("Simple Moving Average", shorttitle="SMA", overlay=true)

length = input.int(200, minval=1, title="Length")
smaValue = ta.sma(close, length)
plot(smaValue, title="SMA", color=color.blue)

 

이 코드는 사용자가 조정 가능한 기간으로 단순 이동평균을 계산하고 파란색 선으로 차트에 표시합니다


기본 전략 작성하기

전략과 지표의 차이점

Pine Script에서 전략(Strategy)과 지표(Indicator)는 서로 다른 목적을 가집니다. 지표는 차트에 시각적 요소를 추가하지만 거래 신호는 생성하지 않는 반면, 전략은 백테스팅 및 자동매매를 위한 거래 신호를 생성합니다

이동평균 크로스오버 전략

두 개의 이동평균선 교차를 이용한 기본 전략을 작성해보겠습니다

//@version=5
strategy("MA 크로스오버 전략", overlay=true)

short_ma = input.int(10, title="단기 MA")
long_ma = input.int(20, title="장기 MA")

sma_short = ta.sma(close, short_ma)
sma_long = ta.sma(close, long_ma)

long_condition = ta.crossover(sma_short, sma_long)
short_condition = ta.crossunder(sma_short, sma_long)

if long_condition
    strategy.entry("Long", strategy.long)

if short_condition
    strategy.close("Long")

plot(sma_short, title="단기 MA", color=color.blue)
plot(sma_long, title="장기 MA", color=color.red)

A TradingView chart displaying the performance summary of a moving average crossover strategy.

A TradingView chart displaying the performance summary of a moving average crossover strategy.


백테스팅 결과 확인

전략을 작성한 후 "차트에 넣기" 버튼을 클릭하면 Strategy Tester 탭에서 백테스팅 결과를 확인할 수 있습니다.

총 수익률, 승률, 최대 손실폭 등 다양한 성과 지표를 분석할 수 있습니다


사용자 정의 함수

복잡한 계산을 위해 사용자 정의 함수를 만들 수 있습니다

함수는 한 줄 또는 여러 줄로 작성할 수 있으며, 다음과 같은 형식을 따릅니다

// 한 줄 함수
hl_average(high_val, low_val) => (high_val + low_val) / 2

// 여러 줄 함수
calculate_signal(rsi_val, ma_val) =>
    signal = 0
    if rsi_val > 70 and close > ma_val
        signal := 1
    else if rsi_val < 30 and close < ma_val
        signal := -1
    signal

hl_average(high_val, low_val) => (high_val + low_val) / 2

 

문법 구조

  • 함수명(매개변수1, 매개변수2) => 표현식 형태
  • => 화살표 연산자 뒤에 바로 반환값 표현식을 작성

기능

  • 고가(high_val)와 저가(low_val)를 입력받아 평균값을 계산하는 함수
  • 주로 캔들스틱의 중간 가격(midpoint)을 구할 때 사용
  • 반환값은 (고가 + 저가) / 2로 계산된 평균값

calculate_signal(rsi_val, ma_val) =>
    signal = 0
    if rsi_val > 70 and close > ma_val
        signal := 1
    else if rsi_val < 30 and close < ma_val
        signal := -1
    signal

 

문법 구조

  • 함수명(매개변수) => 다음 줄부터 함수 본문 시작
  • 마지막 문장(여기서는 signal)이 함수의 반환값이 됨

기능
이 함수는 트레이딩 신호를 생성하는 함수로, 다음과 같은 로직을 구현합니다

  • 초기값 설정: signal = 0 (중립 신호)
  • 매수 신호 조건: RSI가 70 초과이고 현재가가 이동평균보다 높으면 signal := 1 (매수)
  • 매도 신호 조건: RSI가 30 미만이고 현재가가 이동평균보다 낮으면 signal := -1 (매도)
  • 반환값
    • 1: 매수 신호
    • -1: 매도 신호
    • 0: 중립 (매매 신호 없음)

알림 기능

특정 조건이 충족될 때 알림을 설정할 수 있습니다. 이는 여러 보조지표 조건을 동시에 만족할 때 알림을 받고자 할 때 특히 유용합니다

golden_cross = ta.crossover(sma20, sma50)
if golden_cross
    alert("골든크로스 발생!", alert.freq_once_per_bar)

다중 조건 필터링

복합적인 매매 신호를 위해 여러 조건을 조합할 수 있습니다

price_above_ma = close > ta.sma(close, 20)
volume_spike = volume > ta.sma(volume, 20) * 1.5
rsi_oversold = ta.rsi(close, 14) < 30

buy_signal = price_above_ma and volume_spike and rsi_oversold

유용한 팁

코드 작성 팁

주석 활용: 코드의 가독성을 높이기 위해 주석을 적극 활용하세요. 특히 복잡한 계산 부분이나 매매 로직 부분에는 상세한 설명을 추가하는 것이 좋습니다

 

변수명 명명: 의미 있는 변수명을 사용하여 코드의 이해도를 높이세요. 예를 들어, ma1, ma2 보다는 short_ma, long_ma가 더 명확합니다

 

함수 모듈화: 반복되는 계산은 사용자 정의 함수로 만들어 재사용성을 높이세요


디버깅 방법

디버깅을 위해서는 log.info(), log.warning(), log.error() 함수를 활용할 수 있습니다. 이를 통해 변수값이나 조건 확인이 가능합니다


성능 최적화

복잡한 계산이 포함된 스크립트의 경우 성능 최적화를 고려해야 합니다. 불필요한 계산을 피하고, 조건문을 효율적으로 구성하여 실행 속도를 개선할 수 있습니다


커뮤니티 활용

 

TradingView의 Community Scripts에서 다른 사용자들의 코드를 참고하고 학습하세요. 오픈 소스 스크립트들을 분석하여 새로운 아이디어와 기법을 얻을 수 있습니다


반응형

댓글