들어가며
이제 시작해 봅시다!
파인 스크립트란 무엇인가요?
설정하기
아주 간단히 파인 스크립트를 시작할 수 있습니다. 작성하는 모든 코드는 트레이딩뷰의 서버에서 작동하며, 별도의 다운로드나 추가 설정없이 브라우저에서 에디터에 접속해 스크립트를 개발할 수 있습니다.
여러분에게는 보다 최신 차트가 표시될 것입니다.
'모든 기능을 갖춘 차트'입니다. 하이라이트된 탭 위의 보기를 클릭하여 타임프레임을 조절할 수 있습니다.
파인 에디터
study("My Script")
plot(close)
이제 다음을 확인해 보도록 하겠습니다.
//@version=4
study("My Script", overlay=true)
plot(open, color=color.purple)
많은 트레이더들이 캔들스틱 차트를 선호하는데, 이는 앞서 우리가 표시한 것보다 더 많은 정보를 제공하기 때문입니다. 이를 추가해보겠습니다.
//@version=4
study("My Script", overlay=true)
plotcandle(open, high, low, close)
//@version=4
study("My Script", overlay=true)
colors = open >= close ? color.red : color.green
plotcandle(open, high, low, close)
이는 모든 캔들스틱의 시가가 종가보다 크거나 같은 지 확인합니다. 시가가 종가보다 높다면 가격이 하락했다는 의미이므로 캔들스틱은 빨간색일 것입니다. 반대의 경우에는 초록색일 것입니다. plotcandle() 함수를 수정하여 다음 색상 체계를 적용합니다.
//@version=4
study("My Script", overlay=true)
colors = open >= close ? color.red : color.green
plotcandle(open, high, low, close, color=colors)
다른 지표를 아직 삭제하지 않았다면 삭제하고, 이를 차트에 추가합니다. 이제 다음과 같은 일반 캔들스틱 차트가 표시됩니다.
훌륭합니다!
이동 평균(MA) 표시하기
단순 이동 평균(SMA)
나중에 두 가지를 비교하기 위해 단순 이동 평균 또한 표시할 수 있습니다. 스크립트에 다음을 추가합니다.
plot(sma(close, 10))
이는 지난 10일 간의 평균을 표시합니다. 다양한 길이에 따른 곡선의 변화 정도를 확인하려면 괄호 안의 숫자를 변경합니다.
지난 10일 기준 단순 이동 평균
지수 이동 평균(EMA)
지수 이동 평균은 이해하기 조금 더 까다롭지만, 걱정마시기 바랍니다. 먼저 공식을 살펴보도록 하겠습니다.
지수 이동 평균 = (종가 - 이전 일의 지수 이동 평균) * 승수 - 이전 일의 지수 이동 평균
이는 어떤 의미일까요? 우리는 매일 이전 일의 이동 평균을 기반으로 새로운 이동 평균을 계산합니다. 승수는 가장 최근 기간에 대한 “가중치”이며 이는 다음 공식을 따라 계산됩니다.
승수 = 2 / (지수 이동 평균의 길이 + 1)
단순 이동 평균과 마찬가지로 지수 이동 평균에도 기간을 지정해야 합니다. 단순 이동 평균의 구문론과 유사한 방법으로 지수 이동 평균을 표시할 수 있습니다. 이를 단순 이동과 함께 표시하여 둘을 비교할 수 있습니다.
//@version=4
study("My Script", overlay=true)
plot(sma(close, 10))
plot(ema(close,10))
두 가지 이동 평균이 약간의 차이를 보이고 있습니다.
내장 스크립트
이제까지 우리는 이해를 위해 코드를 직접 작성했습니다. 그러나 시간을 절약할 수 있는 방법이 있습니다. 특별히 복잡한 스크립트를 작성할 때, 처음부터 이를 다시 작성하고 싶지 않을 때 유용한 방법입니다.
이를 차트에 추가합니다.
상대적 강도 지수(RSI) 지표 표시하기
백테스팅
우리가 만든 개별 지표를 테스트할 수 있는 방법이 존재합니다. 과거의 실적이 미래의 결과를 보장하지는 않지만, 백테스팅을 통해 우리의 스크립트가 신호를 발견하는 데 얼마나 효과적인지 알 수 있습니다.
아래의 간단한 스크립트를 예로 들어 보겠습니다. 우리는 BTC 가격이 11,000 달러 아래로 하락할 때 롱 포지션에 진입하고, 11,300 달러 이상으로 상승할 때 포지션을 종료하는 간단한 전략을 만들어 볼 것입니다. 그리고 이 전략이 역사적으로 얼마나 수익성이 있었는지 확인할 수 있습니다.
//@version=4
strategy("ToDaMoon", overlay=true)
enter = input(11000)
exit = input(11300)
price = close
if (price <= enter)
strategy.entry("BuyTheDip", strategy.long, comment="BuyTheDip")
if (price >= exit)
strategy.close_all(comment="SellTheNews")
따라서 가격이 원하는 진입가 이하일 경우, 첫 번째 표현식이 참이므로 롱 포지션이 개설됩니다. 가격이 원하는 종료가 이상일 경우, 두 번째 표현식이 실행되어 모든 미결제 포지션이 종료됩니다.
이제 차트 위에 지표가 표시됩니다. 이를 확대할 수도 있습니다.
우리가 진입하고 종료한 포지션입니다.
모두 종합하기
지금까지 살펴본 몇 가지 개념을 사용하여 우리만의 스크립트를 작성해 볼 차례입니다. 지수 이동 평균과 상대적 강도 지수를 조합할 것이며, 이 값을 캔들스틱 색상을 통해 표현하고 쉽게 시각화할 수 있는 인사이트를 만들어볼 것입니다.
이는 결코 투자 조언이 아니며, 이 지표를 사용하는 객관적으로 올바른 방법은 존재하지 않습니다. 다른 지표와 마찬가지로 자신만의 전략을 개발하기 위해 이를 다른 도구와 함께 사용해야 합니다.
이제 우리의 새 스크립트를 만들어 보겠습니다. 모든 지표를 차트에서 제거하고, Bitcoin/BUSD 차트 또한 감춥니다. 이제 작업할 깨끗한 캔버스가 보일 것입니다.
study(title="Binance Academy Script", overlay=true)
study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
이 새로운 변수를 사용해 차트의 각 캔들의 지수 이동 평균 값을 계산할 수 있습니다.
study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
좋습니다. 이제 상대적 강도 지수 차례입니다. 비슷한 방법으로 길이를 지정할 것입니다.
study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)
이제, 이를 계산할 수 있습니다.
study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)
rsiVal = rsi(close, rsiLength)
이 단계에서 지수 이동 평균 및 상대적 강도 지수 값에 따라 캔들스틱 색이 변하는 논리를 추가하겠습니다. 캔들의 종가 (a)가 지수 이동 평균과 상대적 강도 지수가 50 이상인 (b) 보다 높은 상황을 가정해 보겠습니다.
이어지는 코드는 다음과 같습니다.
study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)
rsiVal = rsi(close, rsiLength)
colors = close > emaVal and rsiVal > 50 ? color.green : color.red
다음으로 지수 이동 평균을 표시합니다.
study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)
rsiVal = rsi(close, rsiLength)
colors = close > emaVal and rsiVal > 50 ? color.green : color.red
plot(emaVal, "EMA")
study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)
rsiVal = rsi(close, rsiLength)
colors = close > emaVal and rsiVal > 50 ? color.green : color.red
plot(emaVal, "EMA")
plotcandle(open, high, low, close, color=colors)
스크립트가 완성됐습니다! 이를 차트에 추가하여 살펴봅니다.
EMA/RSI 지표를 사용한 BTC/BUSD 차트.
마치며
이번 아티클에서 우리는 트레이딩뷰의 파인 에디터를 사용하여 진행할 수 있는 몇 가지 기본적인 예시들을 살펴봤습니다. 이제 가격 차트에 대한 주석을 표시하여 여러분만의 지표에서 추가적인 인사이트를 얻을 수 있습니다.
영감이 필요하신가요? 다음 아티클을 통해 여러분의 다음 프로젝트의 아이디어를 발견해 보시기 바랍니다.