minimimi
[TradingView] 06.파인 스크립트 자료구조 - 지표표시부터 자동매매까지 파인 스크립트와 함께(with pine script) 본문
[TradingView] 06.파인 스크립트 자료구조 - 지표표시부터 자동매매까지 파인 스크립트와 함께(with pine script)
99mini 2023. 4. 16. 22:42자료구조는 여러 변수를 한 번에 관리하기 위한 구조입니다. 예를 들어 비트 코인의 최근 종가를 변수 하나씩에 담는 다면 매우 비효율적일것입니다.
//@version=5
indicator("내 스크립트")
btc1 = 1000000
btc2 = 2000000
btc3 = 3000000
btc4 = 4000000
btc5 = 5000000
위 코드는 5개라서 가능할 수 있겠지만 최근 20개 봉을 사용하고자 한다거나 혹은 극단적으로 2만개의 봉을 보고 싶다고 할 때 모두 변수에 저장하는 것을 불가능할 것입니다. 자료구조는 여러개의 변수를 담을 수 있는 하나의 큰 바구니, 컨테이너 박스라고 생각하면 됩니다.
1. 시리즈(Series)
앞의 예제에서 close
라는 내정 변수를 사용했었습니다. close
는 하나의 변수가 아닌 여러 개의 변수를 담고있는 자료구조(series float
)입니다. 파인 스크립트는 close
라고만 사용했을 때 가장 최근의 값을 반환하도록 도와줍니다. 가장 최근 종가가 아니라 5개 이전 봉의 종가를 구하고 싶으면 다음과 같이 사용하면 됩니다.
//@version=5
indicator("내 스크립트")
plot(close[5])
1.1. 시리즈 연산
//@version=5
indicator("내 스크립트")
diff = high - low
plot(diff)
시리즈 자료형 역시 다른 자료형과 마찬가지로 연산을 수행할 수 있습니다. diff
변수에 high
시리즈와 low
시리즈의 차이를 담을려고 합니다. diff
는 고가와 저가의 차이를 나타내는 시리즈 자료형이 될 것입니다.
2. array
array
는 동일한 타입의 여러 데이터를 저장할 수 있는 자료구조입니다.
//@version=5
indicator("내 스크립트")
my_array = array.new_int(3)
array.set(my_array, 0, 1)
array.set(my_array, 1, 2)
array.set(my_array, 2, 3)
val = array.get(my_array, 0)
plot(val)
my_array = array.new_int(3)
: int
자료형의 크기가 3
인 array
를 my_array
라는 변수명으로 생성합니다.array.set(my_array, 0, 1)
: my_array
변수에 0
번 째 순서의 값을 1
로 세팅합니다.array.get(my_array, 0)
: my_array
라는 배열 변수의 0
번 째 순서의 값을 가져옵니다.val = array.get(my_array, 0)
: val
변수에 my_array
라는 배열 변수의 0
번 째 순서의 값을 세팅합니다.
일반적이 프로그램 언어와 동일하게 인덱스의 순서는 0부터 시작합니다.
array
자료형의 원소 추가 및 삭제 함수
구문 | 설명 |
---|---|
array.push(name, value) | array의 마지막에 값 추가 |
array.unshift(name, value) | array의 시작에 값 추가 |
array.insert(name, index, value) | array의 특정 위치에 값 추가 |
array.shift(name) | array의 시작 부분의 원소 제거 |
array.pop(name) | array의 마지막 부분의 원소 제거 |
array.remove(name, index) | array의 특정 위치의 원소 제거 |
array.clear(name) | array의 모든 원소 제거 |
✅ 트레이딩 뷰 파인 스트립트 공식 레퍼런스
https://kr.tradingview.com/pine-script-reference/v5/
✅ 트레이딩 뷰 유료플랜을 원하신다면 아래의 링크로 가입해주세요.
https://kr.tradingview.com/gopro/?share_your_love=itman390
저와 여러분 모두 최대 30달러를 지급 받을 수 있습니다!