파인스크립트로 가장 기초적인 sma(단순이동평균), ema (가중이동평균)을 만들어 보도록 하겠습니다.
SMA(단순이동평균) - 단순 평균값을 계산하여 만든선입니다.
//@version=5
indicator("Thxbot script")
// sma20=ta.sma(close,20) //이평선은 파인스크립트 내장함수로 기본으로 제공합니다.
//아래는 기초학습을 위해 파인스크립트 사용자정의 함수로 만들어본 이평선 예제입니다.
sma_custom(src, length) =>
sum = 0.0
for i = 0 to length-1
sum := sum + src[i]
sma = sum / length
sma
sma20 = sma_custom(close, 20)
plot(sma20,color = color.red)
EMA(가중이동평균) - 최근 데이터에 더 큰 가중치를 부여하는 방식계산되는 이동평균
//@version=5
indicator("Thxbot script")
//ema20=ta.ema(close, 20) //파인스크립트에서 기본적으로 제공하는 ema 내장함수
ema_custom(src, length) =>
alpha = 2 / (length + 1)
ema = src
if na(ema[1])
ema := src
else
ema := alpha * src + (1 - alpha) * ema[1]
ema
ema20 = ema_custom(close, 20)
plot(ema20,color = color.blue)
"NaN"은 "Not a Number"의 약자로, 숫자로 정의되지 않은 값을 나타냅니다. 일반적으로 연산이 정의되지 않은 경우 이 값이 발생합니다.
예를 들어, 0을 0으로 나눌 때의 결과는 "정의되지 않음"으로 간주되고, 이러한 경우에 NaN 값이 반환됩니다.
또는 NaN값과 연산을 하는경우에도 NaN값을 리턴합니다
//@version=5
indicator("Thxbot script")
a=na +1 //na는 내장변수입니다.(NaN값)
plot(a)
결과 : 아무런 값도 출력되지 않습니다.
na함수
na 함수는 시계열 데이터에서 누락된 값이나 undefined 값이 있는지 확인하는 데 사용됩니다.
na는 Not Available의 약자입니다.
예제1:
//@version=5
indicator("Thxbot script")
x = na(close[1]) ? close : na
plot(x)
이 스크립트에서 na(close[1])는 이전 (1 기간 전)의 종가(close[1])가 누락되었는지 확인합니다. 만약 누락되었다면(na(close[1])가 참이라면), 현재 종가(close)를 x에 할당하고, 그렇지 않다면 na (즉, 누락된 값)를 x에 할당합니다.
따라서 이 스크립트는 이전 종가가 누락된 경우에만 현재 종가를 플롯하고, 그렇지 않은 경우에는 값을 플롯하지 않습니다.
예제2:
//@version=5
indicator("Thxbot script")
sma20 = ta.sma(close, 20) //파인스크립트 버전5이전에는 sma(close,20) 이렇게 작성
plot(na(sma20) ? na : sma20)
이 예제에서는 20기간의 단순 이동 평균(SMA)을 계산합니다. 그런 다음, na 함수를 사용하여 이동 평균이 유효한지 확인합니다. 만약 20기간의 데이터가 충분하지 않아 이동 평균을 계산할 수 없다면(na(sma20)가 참이라면), 그래프에 아무것도 플롯하지 않습니다(na). 그렇지 않다면, 이동 평균을 플롯합니다(sma20).
이렇게 na 함수를 사용하면 충분한 데이터가 없어 계산을 할 수 없는 초기 기간 동안에는 이동 평균을 플롯하지 않는 등, 누락된 데이터를 적절하게 처리할 수 있습니다.
nz함수
nz 함수는 "na" 함수와 유사한 역할을 하지만, 누락된 값을 다른 값으로 대체하는 기능을 가지고 있습니다.
nz 함수는 첫 번째 인수로 시계열 데이터를 받고, 선택적으로 두 번째 인수를 받아 시계열 데이터에 누락된 값이 있을 경우 이를 대체합니다.
이 스크립트는 현재 종가와 20기간 단순 이동평균(SMA) 간의 차이를 플롯합니다. 만약 이동평균이 유효하지 않다면(sma20가 na라면), 이동평균을 현재 종가(close)로 가정하고 계산합니다. 이렇게 nz 함수를 사용하면 누락된 값을 적절하게 처리하고, 연산을 계속할 수 있습니다.
파인스크립트에서 시리즈(series)는 시간에 따라 변화하는 값의 순서를 나타내는 데이터 유형입니다.
이는 주로 가격 데이터와 같은 시계열 데이터를 다루는 데 사용됩니다.
예를 들어, close, open, high, low와 같은 기본 제공 변수들은 모두 시리즈입니다.
시리즈는 일련의 값들을 나타내며, 각 값은 특정 시간에 해당합니다. 시리즈의 가장 최근 값은 현재 시간(즉, 현재 바)에 해당하며, 이전의 값들은 과거의 시간에 해당합니다.
시리즈를 사용하면 시간에 따른 데이터의 변화를 쉽게 처리할 수 있습니다. 예를 들어, 이동 평균을 계산하거나 과거의 가격을 현재 가격과 비교하는 등의 작업을 할 수 있습니다.
시리즈의 특정 값을 접근하려면 대괄호([])를 사용하고, 대괄호 안에 원하는 시간을 지정합니다. 0은 현재 바를, 1은 이전 바를, 2는 그 이전 바를 가리킵니다.
예를 들어, close[1]은 이전 바의 종가를 나타냅니다.
다음은 시리즈를 사용하는 간단한 파인스크립트 예제입니다
//@version=5
indicator("Thxbot script")
difference = close - close[1] // 현재 바의 종가와 이전 바의 종가의 차이를 계산합니다.
//difference = close[0] - close[1] // 위 소스와 현재 소스는 같은 결과값을 보여줍니다.
plot(difference) //계산한값을 그래프로 나타냅니다.
파인스크립트에서 조건문은 특정 조건이 참인지 거짓인지에 따라 다른 코드를 실행하는 데 사용됩니다. 조건문은 주로 if, else if, else 키워드를 사용하여 작성되며, 조건은 대개 비교 연산자나 논리 연산자를 사용하여 표현합니다.
if문
//@version=5
indicator("Thxbot script")
a=100
if a>=100
a := 200 //재할당이므로 (:=)를 사용
결과
200
if, else if
//@version=5
indicator("Thxbot script")
a=100
if a > 100
a := 200 //재할당이므로 (:=)를 사용
else if a <= 100
a := 50 //재할당이므로 (:=)를 사용
결과
50
if, else if, else
//@version=5
indicator("Thxbot script")
a=100
if a > 100
a := 200 //재할당이므로 (:=)를 사용
else if a < 100
a := 50 //재할당이므로 (:=)를 사용
else
a := 1000
plot(a)
결과
1000
아래는 트레이딩뷰에 스크립트를 넣고 결과 화면입니다. plot함수는 차후에 배우겠지만 간략하게 설명드리면 인자로 입력한 값을 차트에 그려주는 함수입니다.
조건에 따라 두 개의 다른 값을 선택할 수 있게 합니다.
condition ? result1(true) : result2(false)
condition이 참이면 result1실행, 거짓이면 result2실행
예)
age=26
whatAge=(age >21) ? "Up" : "Down"
결과 : "Up"
NFT(Non-Fungible Token)는 블록체인 기술을 기반으로 한 고유하고 교환 불가능한 디지털 자산입니다.
암호화폐와 관련된 이 개념은 대부분의 암호화폐와는 달리, 각 NFT는 고유한 가치를 가지며 서로 대체할 수 없습니다. 일반적인 암호화폐(예: 비트코인, 이더리움)는 대체 가능한 자산으로 간주되며, 어떤 단위도 다른 단위와 동일한 가치를 가집니다.
NFT는 주로 디지털 아트, 게임 아이템, 수집품, 음악, 도메인 이름 등 다양한 디지털 자산의 소유권을 나타내기 위해 사용됩니다.
블록체인 기술의 활용으로 인해 NFT는 소유권 및 출처를 추적할 수 있으며, 저작권과 소유권에 대한 높은 수준의 투명성을 제공합니다.
고유성: 각 NFT는 고유한 식별자를 가지며, 그에 따라 고유한 가치를 가집니다.
불가연성: 블록체인 기술을 활용하여 NFT의 출처와 소유권 정보가 영구적이고 변경 불가능하게 저장됩니다.
소유권: NFT는 소유권을 증명하며, 전송 가능하고 거래 가능한 디지털 자산입니다.
투명성: NFT 트랜잭션은 블록체인에 기록되므로 투명하게 추적할 수 있습니다.
NFT는 이더리움 블록체인을 기반으로 한 ERC-721 및 ERC-1155 토큰 표준을 사용하여 구현되며, 다른 블록체인 플랫폼에서도 지원됩니다. 최근 몇 년 동안 NFT 시장은 급격한 성장을 경험했으며, 디지털 아트 및 수집품 시장의 혁신과 함께 큰 주목을 받았습니다.
대표적인 NFT관련 프로젝트는 다음과 같습니다.
이더리움 (ETH): 이더리움은 가장 널리 사용되는 스마트 계약 플랫폼으로, ERC-721 및 ERC-1155 토큰 표준을 통해 NFT를 구현합니다. 대부분의 NFT 프로젝트와 거래가 이더리움 블록체인에서 발생합니다.
플로우 (FLOW): 플로우는 NFT 및 디지털 자산에 특화된 블록체인으로, 크립토 키티(CryptoKitties) 개발자가 만들었습니다. 이 플랫폼은 NBA Top Shot, UFC, Dr. Seuss 등의 인기 프로젝트를 지원합니다.
엔진코인 (ENJ): 엔진코인은 NFT 및 디지털 자산을 생성, 관리, 거래할 수 있는 플랫폼인 엔진(Enjin)의 기반 토큰입니다. 게임 아이템, 가상 상품 및 디지털 수집품을 만들고 거래하는 데 사용됩니다.
디센트럴랜드 (MANA): 디센트럴랜드는 가상 현실 플랫폼으로, 사용자가 가상 세계에서 땅을 소유하고, 건물을 짓고, 아바타를 사용하여 상호 작용할 수 있습니다. MANA 토큰은 플랫폼에서의 거래 및 상호 작용에 사용되는 토큰입니다.
샌드박스 (SAND): 샌드박스는 가상 세계를 구축하고, 게임을 만들고, 디지털 자산을 거래하는 데 사용되는 플랫폼입니다. SAND 토큰은 플랫폼 내에서 교환 및 거래를 위한 토큰입니다.
이 외에도 Rarible (RARI), Chiliz (CHZ), Axie Infinity (AXS) 등 다양한 NFT 관련 코인이 있습니다.
파인스크립트(Pine Script)는 TradingView에서 사용되는 프로그래밍 언어로, 주로 주식, 가상화폐, 외환 등의 거래 차트에 기술적 분석을 위한 사용자 정의 인디케이터와 전략을 작성하는 데 사용됩니다. 파인스크립트에서 변수(variables)는 값을 저장하고 참조하기 위한 메모리 공간을 가리키는 이름입니다. 변수를 사용하면 코드를 작성할 때 동일한 값에 대해 반복적으로 기입하는 대신 값을 한 번 할당하고 여러 번 참조할 수 있습니다.
파인스크립트(Pine Script)는 거래뷰(TradingView)의 독특한 프로그래밍 언어로, 사용자가 원하는 기술적 지표, 전략, 경고 및 시각적 도구를 작성하는 데 도움이 됩니다. 파인스크립트를 사용하면 금융 차트에 다양한 추가 기능을 적용할 수 있습니다. 이를 통해 트레이더와 투자자들이 시장 분석을 보다 효과적으로 수행할 수 있습니다.
파인스크립트의 주요 기능
1. 지표(Indicators): 거래뷰에서 기본으로 제공하는 지표 외에도, 사용자는 파인스크립트를 사용하여 새로운 지표를 생성할 수 있습니다. 이를 통해 트레이더들은 자신만의 독특한 지표를 만들어 시장 분석에 활용할 수 있습니다.
2. 전략(Strategies): 파인스크립트를 사용하여 전략을 작성할 수 있습니다. 이를 통해 트레이더들은 거래 전략을 자동화하고, 과거 데이터를 기반으로 전략의 성능을 평가할 수 있습니다. 전략은 엔트리(entry)와 익스잇(exit) 조건을 정의하며, 전략 테스터를 통해 성능을 확인할 수 있습니다.
3. 경고(Alerts): 사용자 지정 조건에 따라 경고를 설정할 수 있습니다. 이를 통해 트레이더들은 중요한 시장 상황 변화에 신속하게 대응할 수 있습니다.
4. 시각적 도구(Visual Tools): 파인스크립트를 사용하여 차트에 다양한 시각적 요소를 추가할 수 있습니다. 이를 통해 트레이더들은 차트를 보다 쉽게 이해할 수 있습니다.
파인스크립트 작성 방법
1. 스크립트 구조: 스크립트는 study() 또는 strategy() 함수로 시작합니다. 이 함수는 스크립트의 속성과 설정을 정의합니다. 그 다음, 스크립트는 변수, 함수, 계산식, 그리고 그래픽 요소를 포함할 수 있습니다.
2. 변수 선언: 변수는 시장 데이터를 저장하거나 계산 결과를 저장하는 데 사용됩니다. 변수를 선언하려면, 변수의 유형과 이름을 지정해야 합니다.
3. 함수 정의: 함수는 특정 작업을 수행하는 코드 블록입니다. 함수는 입력 값을 받아 처리한 후 결과를 반환합니다.
4. 계산식:계산식은 변수, 함수, 상수, 연산자 등을 조합하여 특정 값을 계산하는 표현식입니다. 계산식을 사용하여 지표 및 전략에서 필요한 수치를 도출하거나, 차트에 그리기 위한 좌표를 계산할 수 있습니다.
5. 출력 및 그래픽 요소: 결과값이나 계산식을 차트에 시각적으로 표현하기 위해, 파인스크립트에서는 다양한 그래픽 요소를 사용할 수 있습니다. 예를 들어, plot() 함수를 사용하여 선이나 점을 그릴 수 있고, hline()이나 vline() 함수를 사용하여 수평선이나 수직선을 그릴 수 있습니다. 또한, text() 함수를 사용하여 차트에 텍스트를 추가할 수 있습니다.
6. 공유 및 적용: 스크립트를 완성한 후, 거래뷰의 스크립트 편집기에서 "저장 및 적용" 버튼을 클릭하여 차트에 스크립트를 적용할 수 있습니다. 스크립트를 다른 사용자와 공유하려면, "공유" 버튼을 클릭하여 공개 또는 비공개로 설정할 수 있습니다.
파인스크립트를 배우는 데 도움이 되는 리소스
1. 거래뷰 공식 문서: 거래뷰의 공식 문서에서는 파인스크립트의 기본 개념과 문법, 함수 및 예제를 제공합니다.
2. 거래뷰 커뮤니티: 거래뷰의 커뮤니티에서는 다른 사용자가 작성한 스크립트를 참고하거나, 질문을 통해 도움을 받을 수 있습니다.
3. 온라인 강좌 및 튜토리얼: 인터넷에서는 파인스크립트를 배울 수 있는 다양한 강좌 및 튜토리얼을 찾을 수 있습니다. 이러한 자료를 통해 파인스크립트를 보다 심층적으로 이해하고 익힐 수 있습니다.
파인스크립트는 금융 시장 분석에 필요한 다양한 기능을 제공하며, 트레이더와 투자자들이 시장에 대한 독특한 시각을 얻을 수 있도록 도와줍니다. 이를 통해 개별 투자자와 전문가들은 자신만의 기술 분석 도구와 전략을 만들어 시장에서 경쟁력을 갖출 수 있습니다. 또한, 거래뷰 플랫폼을 통해 파인스크립트를 사용하는 사용자들은 서로 소통하고 협력할 수 있으며, 이를 통해 전략과 아이디어를 공유하고 발전시킬 수 있습니다.
파인스크립트를 사용하여 시장 분석을 더욱 효과적으로 수행하고, 금융 시장에서 자신만의 독특한 기술 분석 도구와 전략을 만들어 보세요. 초보자부터 전문가까지 다양한 수준의 사용자를 지원하는 간단한 문법, 많은 예제 및 커뮤니티 지원을 통해 파인스크립트를 쉽게 배울 수 있습니다. 이를 통해 차트 분석을 보다 정확하고 효과적으로 수행하며, 시장에서의 성공을 이룰 수 있습니다.
디파이(DeFi, Decentralized Finance)는 분산화된 금융을 의미하며, 블록체인 기술을 기반으로 한 금융 서비스를 제공하는 생태계를 말합니다. 디파이는 전통적인 금융 기관의 중개 과정 없이 금융 서비스를 이용할 수 있도록 지원하며, 이를 통해 효율성, 접근성, 투명성을 높이고 비용을 낮추는 것이 주요 목표입니다.
디파이의 주요 서비스와 컨셉은 다음과 같습니다:
1. 스마트 컨트랙트: 디파이는 블록체인 기술을 활용하여 스마트 컨트랙트를 구현합니다. 스마트 컨트랙트는 자동화된 약속이며, 코드로 작성된 계약입니다. 이를 통해 거래의 신뢰성을 높이고, 중개자의 개입을 줄일 수 있습니다.
2. P2P 거래: 디파이에서는 전통적인 금융 기관이 아닌 분산화된 네트워크를 통해 거래가 이루어집니다. 이를 통해 사용자 간의 직접적인 거래를 가능하게 하여 거래 비용을 절감하고 속도를 높일 수 있습니다.
3. 예금 및 대출: 디파이 플랫폼에서는 사용자들이 암호화폐를 예금하고, 이를 통해 이자를 얻을 수 있습니다. 또한, 담보를 제공하여 대출을 받을 수도 있습니다.
4. 스테이킹: 사용자들은 특정 암호화폐를 스테이킹하여 네트워크 보안에 기여하고, 이에 대한 보상을 받을 수 있습니다.
5. 디센트럴라이즈드 거래소(DEX): 중앙화된 거래소와 달리, 디센트럴라이즈드 거래소는 중앙 서버가 없이 P2P 방식으로 거래가 이루어지는 거래소입니다. 이를 통해 거래의 투명성과 보안을 높일 수 있습니다.
6. 신용 평가 및 보험: 디파이에서는 블록체인 기술을 활용하여 신용 점수를 평가하고, 이를 바탕으로 보험 상품을 제공하는 서비스도 등장하고 있습니다.
디파이 생태계는 아직 초기 단계이지만, 많은 프로젝트와 기업들이 디파이 생태계를 발전시키고 있습니다. 유명한 디파이 프로젝트 몇 가지를 소개합니다:
1. MakerDAO: 대표적인 디파이 프로젝트로, 이더리움 기반의 안정화폐 DAI를 발행하고 대출 서비스를 제공합니다. 사용자들은 이더리움을 담보로 DAI를 차용할 수 있으며, DAI를 예금하여 이자를 얻을 수도 있습니다.
2. Compound: 분산화된 금융 시장을 제공하는 플랫폼으로, 이더리움 기반의 토큰을 예금하거나 대출받을 수 있습니다. 사용자들은 자산을 예치하여 이자를 얻거나, 담보를 제공하여 대출을 받을 수 있습니다.
3. Uniswap: 인기 있는 디센트럴라이즈드 거래소로, 이더리움 기반의 토큰을 거래할 수 있습니다. Uniswap은 스마트 컨트랙트를 활용하여 중앙화된 거래소의 중개자 역할 없이 거래를 가능하게 합니다.
4. Aave: 분산화된 대출 및 예금 플랫폼으로, 다양한 암호화폐를 지원합니다. 사용자들은 자산을 예치하여 이자를 얻거나, 담보를 제공하여 대출을 받을 수 있습니다.
5. Synthetix: 파생 상품 거래를 위한 디파이 플랫폼으로, 실제 자산의 가격을 추적하는 합성 토큰을 생성하고 거래할 수 있습니다. 이를 통해 금, 주식, 외환 등 다양한 자산에 대한 거래를 암호화폐로 가능하게 합니다.
디파이는 앞으로 더 많은 혁신과 발전이 기대되는 금융 기술입니다. 그러나, 아직 초기 단계이기 때문에 시장의 변동성, 보안 문제, 규제에 대한 불확실성 등의 리스크를 감안하여 투자를 결정해야 합니다.
- 디파이 코인과 토큰 종류 -
디파이(DeFi) 생태계에서 사용되는 코인과 토큰은 매우 다양합니다. 아래는 주요 디파이 코인과 토큰들을 나열한 것입니다. 이 목록은 시간이 지남에 따라 변화할 수 있으며, 더 많은 디파이 프로젝트와 코인이 추가될 것입니다.
1. Chainlink (LINK): 오라클 네트워크를 제공하는 플랫폼으로, 블록체인과 실제 세계 데이터를 연결합니다. LINK 토큰은 네트워크 참여자들에게 보상으로 제공됩니다.
2. Uniswap (UNI): 디센트럴라이즈드 거래소로, 이더리움 기반의 토큰 거래를 지원합니다. UNI 토큰은 플랫폼 거버넌스와 보상에 사용됩니다.
3. Aave (AAVE): 대출 및 예금 플랫폼으로, 다양한 암호화폐를 지원합니다. AAVE 토큰은 플랫폼 거버넌스와 보상에 사용됩니다.
4. Maker (MKR): MakerDAO 프로젝트의 거버넌스 토큰으로, 이더리움 기반의 안정화폐 DAI 발행과 대출 서비스를 제공합니다.
5. Compound (COMP): 분산화된 금융 시장을 제공하는 플랫폼으로, 이더리움 기반의 토큰을 예금하거나 대출받을 수 있습니다. COMP 토큰은 플랫폼 거버넌스와 보상에 사용됩니다.
6. Yearn.Finance (YFI): 사용자들의 자산을 최적의 이자율을 제공하는 다양한 디파이 플랫폼에 자동으로 배분하는 프로토콜입니다. YFI 토큰은 플랫폼 거버넌스와 보상에 사용됩니다.
7. Synthetix (SNX): 파생 상품 거래를 위한 디파이 플랫폼으로, 실제 자산의 가격을 추적하는 합성 토큰을 생성하고 거래할 수 있습니다. SNX 토큰은 플랫폼 거버넌스와 보상에 사용됩니다.
8. SushiSwap (SUSHI): Uniswap과 유사한 디센트럴라이즈드 거래소로, 이더리움 기반의 토큰 거래를 지원합니다. SUSHI 토큰은 플랫폼 거버넌스와 보상에 사용됩니다.
9. Curve Finance (CRV): 이더리움 기반의 안정화폐 거래에 최적화된 디센트럴라이즈드 거래소입니다. CRV 토큰은 플랫폼 거버넌스와 보상에 사용됩니다.
10. Balancer (BAL): 자동화된 시장 메이킹(AMM) 프로토콜로, 사용자가 암호화폐를 예치하고 거래에 참여할 수 있는 유동성 풀을 제공합니다. BAL 토큰은 플랫폼 거버넌스와 보상에 사용됩니다.
11. UMA (UMA): 사용자 지정 파생 상품 및 합성 자산을 생성하고 거래할 수 있는 프로토콜입니다. UMA 토큰은 플랫폼 거버넌스와 보상에 사용됩니다.
12. 1inch (1INCH): 다양한 디센트럴라이즈드 거래소에서 최적의 거래 가격을 찾아주는 애그리게이터입니다. 1INCH 토큰은 플랫폼 거버넌스와 보상에 사용됩니다.
이 목록은 디파이 생태계의 일부를 보여주는 것에 불과하며, 지속적으로 새로운 프로젝트와 토큰이 등장하고 있습니다. 따라서 투자를 결정하기 전에 각 프로젝트와 토큰에 대한 연구를 철저히 수행하고, 리스크를 고려해야 합니다.