빙구처럼 트레이딩: 코인 차트 "처음부터" 공부하기 #24- 간단한 보조지표 만들기 (ADX III)

in #sct5 years ago

image.png


ADX 에 대해서 이어서 알아봅시다. 변수도 많고, 사용할 수 있는 전략들이 많기에 어떤 식으로 수익을 낼 수 있을지 찾아봅시다! 저번 포스팅에서는 고점에서 과매도 구간을 식별하고 활용하는 방법에 대하여 다뤘다면, 이번에는 ADX와 DI 들이 매우 민감하게 움직인다는 점을 이용하여 추세의 시작점을 찾는 방법에 대하여 연구해보겠습니다.


먼저 상승 추세를 시작하게 되면 +DI 부터 움직이게 됩니다. +DI 에 대하여 잠깐 다시 간단하게 설명을 해드리면

image.png

DI 의 경우 고점을 얼마나 높여줬니~ 와 저점을 얼마나 낮춰줬니~ 의 값을 비교하여, 얼마나 높였니가 크면 +DI 가 커지고, 얼마자 낮췄니가 크면 -DI 가 커지는 시스템 입니다. 즉 위로 얼마나 많이 갔는지, 아래로 얼마나 많이 갔는지에 따라 DI 가 결정되죠.

다른 말로 지속적인 상승을 위해서는 +DI 가 계속 상승해야하며, 이 뜻은 계속하여 고점과 저점을 높였다를 의미하게 됩니다. 파동과 비슷하죠? 저는 이런 부분을 작은 추세 또는 미세 추세 이런식으로 부르기도 하는데, 캔들과 캔들 사이의 관계를 이용하여 분석하는 것 입니다.


image.png

들여쓰기 어떻게 하죠? ㅠㅠ 코드를 복붙했더니, 들여쓰기된 부분이 한 줄로 나오네요....

adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
up = change(high)
down = -change(low)
truerange = rma(tr, len)
plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
[adx, plus, minus]
[sig, up, down] = adx(dilen, adxlen)

위 코드를 새로운 페이지에 붙여주세요!! 여기있는 sig = ADX, up = +DI , down = -DI 라는 변수들을 활용하여 보조지표를 만들어보겠습니다!


상승 조건에는 "+DI 가 지속적으로 상승하고 있다!" 가 나와줘야 하는군요. 코드로 작성해보면

upcondition1 = up > up[1]

첫 번째 조건 입니다. +DI 가 상승하고 있어야 (캔들 들의 고점과 저점이 높아지고 있어야) 상승 이기 때문이죠. 전체적인 캔들의 추세를 보는 것이 아닌 단 두개의 캔들에서 나오는 정보를 14 주기로 평균을 내는 것 이기 때문에, 장기 추세가 아닌 단기 시그널에 해당하는 값으로 사용할 수 있습니다.

다시 매수 진입 공식을 가져와 본다면

매수 조건 = (변동성) * (진입 조건) * (추세)

진입 조건에 해당하는 값이 되는 것이죠!


또한, +DI 가 총 추세의 평균인 ADX 값보다는 크면 좋겠습니다. 만약 +DI 가 ADX 보다 작다면 두 가지의 상황으로 나눠볼 수 있습니다.

  • 저번 포스팅에서 알아본 과매수 구간
  • 비추세 구간에서 진폭이 굉장히 작아 조금만 움직여도 평균 관련된 모든 지표가 같이 흔들리는 경우.

현재 저희가 찾아내고 싶은 구간은 추세가 발생한 상황에서, 다시 추세가 이어가는 구간으로

image.png

그림으로 볼 경우 선행 추세가 "상승" 일 경우에, 조정을 주고, 추세를 다시 이어나가는 부분을 캐치하는 것 입니다. 사진의 주황색 구간을 오늘 제작할 보조지표가 영역으로 찾아내는 것이 목표지요.

image.png

그러기에 과매수 구간은 절대 피하고 싶습니다.

두 번째는 변동성이 작을 경우 모든 평균이 조밀해져, 조금만 가격이 움직여도 모든 평균이 움직이는 현상이 나타납니다. 이러한 구간은 보조지표가 해석 의미가 없어짐으로 과감하게 발현이 되지 않도록 조절해줍니다.

image.png

위와 같은 비트코인 2018년 8월 구간을 잘 관찰해보시면, 3가지의 선이 모두 교차하며, 조금만 가격이 움직여도 따라 움직이는 현상을 보실 수 있습니다. 이런 구간을 피하기 위하여 변동성에 대한 부분은 ATR 로 처리해줄 것 입니다. 현재는 매수 진입 식에 대하여 알아보고 있기에, 변동성에 대한 부분을 추가할 때 걸러질 것 입니다!

upcondition2 = up > sig

그래서 위와 같은 2번째 매수 조건식을 넣어볼 수 있습니다.


세 번째는 제 포스팅 단골 매수 시그널인 양봉 입니다. 최소한의 매수세를 보여줬으면 좋겠다는 양봉을 마지막으로 세 가지 매수 조건을 완성시켜봅시다.

image.png

upcondition3 = open < close

종가가 시가보다 크면 세 번째 조건이다!


이제 세 가지의 조건들을 합쳐봅시다.

buy = upcondition1 and upcondition2 and upcondition3
bgcolor(color = buy ? #FFA500: na, transp = 85)

그리고 시그널을 프린트!


image.png

먼저 변동성 항이 필요한 이유! 위 사진을 보시면, 변동성이 작은 구간에서 조밀해진 평균값 때문에 시그널이 마구잡이로 발생하게 됩니다. 변동성 파트를 넣어줍시다!

atrshort= atr(5)
atrlong= atr(50)
highvolatility = atrshort > atrlong
https://www.steemcoinpan.com/sct/@roostermine/20-atr

넣은 후 buy 변수에 highvolatility 도 넣어주면,

buy = upcondition1 and upcondition2 and upcondition3 and highvolatility

변동성이 충분할 경우만 시그널을 만들어라!! 라고 컴퓨터에게 시킵니다.

image.png

변동성이 없는 구간에서 발생했던 많은 시그널들이 사라졌습니다. 변동성이 충분히 제공되어야 매매가 가능한 것이지요!

전체적으로 봤을때 한개의 시그널 빼고는 거의 완벽한 거래 기회를 제공하고 있습니다. 생각보다 결과가 좋게 나오겠군요.


마지막으로 추세 파트 입니다. 이동평균선을 활용하여 만들어 보겠습니다.

trend = close > sma(close,200) and sma(close,200) > sma(close,200)[1]
buy = upcondition1 and upcondition2 and upcondition3 and highvolatility and trend
https://www.steemcoinpan.com/sct/@roostermine/16

그리고 buy 변수까지 바꿔줍니다.

일봉 이하의 단기 봉을 사용할 경우 ADX 보조지표는 매우 민감한 단기 지표 이기 때문에, 둔감한 이동평균선을 사용해줍니다. 저는 200일을 사용하여 확실한 상승 추세에서 발생하는 매수세에만 반응하도록 해보겠습니다.

image.png
image.png

30분봉 비교

몇 몇 비추세 구간의 선과, 역추세 구간의 선들이 사라진 것을 확인하실 수 있습니다.


image.png

일봉

일봉에서 200일 선에 대한 추세 기준을 적용해준다면, 더 정확도 높은 시그널들을 확인하실 수 있습니다.


image.png
image.png

5분봉

5분봉에서도 역시 꽤나 쓸만해보입니다. 특히, 손절이 나가기 매우 쉬운 비추세 구간에서 진입 시그널을 만들지 않고 있다는 점에서 상당한 유용함이 보입니다.

하지만 역시 진폭이 큰 수렴 구간에 대해서는 추세로 인식하여, 필터링을 충분히 해내지 못하는 한계점이 있습니다.

이번 보조지표도 동일하게 상승 추세에서 매수 포인트를 잡아주는 친구 이기에, 어느정도 상승 추세에 대한 정의를 알고 있어야 매매를 하실 수 있습니다. 아무것도 모르겠다! 라면 고점 돌파 후 매수 전략이 가장 좋은 방법으로 보입니다.


거래량과의 가격의 관계

여기는.. 스님 @bystyx 이 내주신 과제로... 거래량과 함께 보았을 때의 관계를 찾아보겠습니다.

image.png

먼저 거래량은 위 사진처럼 보통 캔들 아래에 막대 그래프로 표시됩니다. 의미하는 바는 한 캔들 (예시에서는 30분) 동안 몇 개의 코인/주식/계약 이 거래되었는가를 뜻합니다. 어차피 상대적인 양을 비교하는 만큼 정확한 수치는 크게 의미를 부여하지 않고 있습니다. 거래소별로 거래량이 다르며, 거래소의 규모에 따라 거래되는 코인이 다르기에, 절대량 분석 보다는 상대량 분석을 통하여 따져보겠습니다.

일단 모든 분석은 평균부터 시작하는게 저는 좋아보입니다.

shortvolume = sma(volume,20)
longvolume = sma(volume,50)
strong = longvolume < shortvolume
bgcolor(color = strong ? #FFA500: na, transp = 50)

image.png

클래시컬한 20/50 평균을 넣어 거래량 분석을 해보았습니다. 20 이하로 떨어뜨려 좀 더 민감한 분석을 할 수도 있지만, 크게 의미가 없다고 생각했습니다. 위 사진과 같이 20 주기 평균 거래량이 50 주기 평균 거래량 보다 높을 경우 주확생으로 칠해지며, 추세의 방향으로 흐를때 표기가 되는 것을 보실 수 있습니다.

image.png

일단 기본적인 컨셉은, 거래량이 추세의 방향으로 흐를때 상승한다 인데, 어디서 본 내용과 비슷하네요. 변동성! 그럼 변동성과 함께 붙여서 확인해봅시다.

image.png

색깔을 바꿔서 봤으나 직관적으로 안보이기에, 겹치는 부분만 보이게 한다면

image.png

요런식으로 구성이 됩니다. 필터로 사용할때 거래량도 같이 확인하며 보면 될 것 같습니다.


image.png

거래량에 대한 필터를 적용하여 아까 만든 보조지표에 적용해본다면 네시간 봉도 상당히 유용해집니다. 진폭이 과하게 작아져 보조지표가 무의미해지는 11월 구간을 제외하고는 전부 수익마감할 수 있는 것으로 보입니다.


매수 시그널에 대한 필터를 좀 만들어보고 싶으니, 거래량이 튀는 경우를 캐치해보겠습니다.

spike = volume > longvolume

image.png

재미있는 것은 강한 상승은 거래량과 함께 나온다는점. 강한 상승 이전에 선들이 붙어있다는 점을 관찰할 수 있습니다.

image.png

이런 거래량이 몰려있는 구간만 표시하고 싶으니, 붙어있는 경우만 나오게 해보겠습니다. 보조지표는 무조건 선행 지표로 만들어야 합니다. 종가에 지금 사야되? 말아야되? 이걸 결정해줘야 합니다. 미래 데이터로 과거를 만들어봤자 무쓸모죠.

spike3 = spike and spike[1] and spike[2]

이런식으로 거래량이 터지는 구간에 세번 연속될 경우를 표기해줍니다.

image.png

여전히 잡 신호가 많군요. 5개로 바꿔줍니다.

spike5 = spike and spike[1] and spike[2] and spike[3] and spike[4]

image.png

이제 주요 거래량이 어디서 터지는지 관찰할 수 있습니다. 저에게 저변동성 구간에서 발생하는 시그널들은 무의미 함으로, ATR 시그널로 문질러 버립니다.

이제 해석을 해야하는데, 거래량이라는게 참.. 해석하기가 모호 합니다. 하지만 전 단순화 시키는 것을 참 잘하기에,

  • 간단하게 상승 추세의 저점에서 발생하는건 매수 거래량, 상승 추세의 고점에서 발생하는건 매수 청산 거래량
  • 하락 추세의 저점에서 발생하는 건 매도 청산 거래량, 고점에서 발생하는 것은 매도 거래량.

image.png

사진으로 보면 상승 추세에서는, 저점에서 발생하는 거래량은 트레이더/투자자들이 주체적으로 사는 거래량이며, 고점에서 발생하는 것은 저점에서 산 물량을 파는 거래량 입니다. 즉, 저점에서 산 물량을 고점에서 파는 것이죠.

image.png

반대로 하락 추세에서의 거래량의 경우 고점에서는 주체적으로 공매도 진입 거래량이며, 저점에서는 공매도 청산 거래량입니다. 즉, 하락추세의 저점에서는 주체적 매수가 아닌 공매도 청산 거래량에 해당하게 됩니다.

image.png

image.png

상승 추세일 경우 이렇고

image.png

변곡 지점에는 이런식이 나오겠고. 손절 파트는 누군가에게 매수가 될 수 있겠네요. 스탑 헌팅에 해당하는 자리. 손절 자리에서 매수를 받은 스탑헌팅 친구들이 매도 진입 자리에서 매수 청산 (매도) , 대중의 방향성 (매도 진입) 을 하게 되며 매도 추세가 생기고, 매도 청산을 하게 됩니다.

상승 추세일 경우 매수는 돌파/되돌림 두 개 다 해당하기에, 여러가지 보조지표를 활용할 수 있으나, 상승 추세의 끝자락을 잡아내는 것은 상당히 어렵습니다. 하지만 이것 역시 단순화 하여 RSI 14주기가 85 이상일 경우만 표시해보겠습니다.

image.png

매수는 고점을 돌파하며, 매수 또는 되돌림 / 매도는 RSI 과매수 구간이라고 가정하면 좀 더 단순화가 되죠.

image.png
이런식으로.

매매 방법으로는 상승 추세임을 "확인" 하고 거래량이 터지는 음봉 또는 고점을 돌파하는 양봉 에서 매수를 하여, 거래량이 터지는 고점 갱신한 양봉에서 팔아라 가 컨셉인듯 합니다. 느낌은 직관적으로 알겠는데, 수식이나 논리적으로 표현하기는 아직 애매한 부분 같습니다. 좀 더 연구를 통하여, 거래량의 이동/매수 거래량이 어디서 청산하느냐 를 찾아봐야겠습니다.

만약 추세구간이 아닌 비추세 구간에서의 거래량은 위 아래에서 쌍방향으로 매매가 일어나며, 대부분 거래량이 거의 없다 라는 점이 특징입니다. :)


Sort:  

딱 지치는 오후 3시 시원한 커피와 함께 한번에 쑤욱 읽어내려갔습니다. 아주 좋내요.

헤헿 감사합니다! 거래량은 역시 어렵습니다~

Posted using Partiko iOS

일기도 매일 올려주세요.

저 급등하면서 거래량이 터진다는 것은, 누군가가 이익 실현하며 팔 때, 다른 누군가는 신나게 사고 있다는 말이겠죠? 그때 사면 이득보기 힘들지 않나 하는 생각이 들어서요. 물론 단타하는 사람들이 많은 부분을 차지하긴 하겠지만요.

음... 상당히 어려고 복잡한 부분을 질문을 주셨네요. 일단 가격이 움직이는 원리를 생각하셔보면 단순화를 하실 수 있습니다. 가격이 형성되는 원리가 누군가는 지정가로 (호가 창에 올려두는 것) 누군가는 시장가로 (호가 창에 있는 매물을 더 비싸게 사는 혹은 싸게 파는 행위) 매매를 합니다. 여기서 포인트는 가격은 시장가로 거래가 얼마나 되는지에 따라 움직이게 되는데, 단순화를 해보면 시장가를 때리는 사람의 비율이 현재 추세에서 누가 주도권을 잡고있는지에 대한 척도를 나타내게 됨니다. 즉, 매수 시장가를 때리는 사람이 더 많으면 양봉이, 매고 시장가를 때리는 사람이 더 많으면 음봉이 나타나게 되죠.

이제 거기에 거래량이 포함되게 되면 한 차원 더 높여서 생각하시면 됩니다. 매수세=x축, 매도세=y축, 거래량 =z축 으로 두시면, 매수세가 크긴한데 “얼마나” 더 많이 샀는지에 대한 척도로 보실 수 있습니다. 거래량이 큰 양봉이면 (급등) 파는 사람이 많았음에도 불구하고 주체적 매도자가 더 많았다 하고 해석할 수 있죠.

이제 단기봉에서 이런 기술을 사용할 경우 세력? 이 반대로 꼬아서 사용할 가능성이 좀 있습니다. 그래서 거래량이나 캔들을 분석하실 때는 저는 무조건 일봉 이상을 보라고 조언을 드립니다. 일단 표본이 크면 세력들 도 ㄲ분산되는 효과가 있어서 낚시가 불가능하거든요!

단타는 정말 어렵습니다! ㅠㅠ 제일 최근 포스팅 보시면 일봉에서 장대양봉 이후에 어떤 현상이 나타나는지 시각적으로 시스템화를 해뒀어요! :)

Posted using Partiko iOS

와우 장문의 답변 감사합니다.
생각보다 복잡하군요! 지정가와 시장가의 세력 대결이라는 생각은 전혀 못하고 있었습니다 ^^

저는 개인적으로 세력이라는 단어를 좋아하지 않는게, 개개인이 뭉치면 세력처럼 보이기도 하는 것 같고... 잘 모르겠습니다 ㅋㅋㅋㅋ 근데 저것들도 다 제 이론이자 논리라... 정답이 읎는 ㅠㅠ

시장가는 더 비싸게 사는 거다 라는 느낌을 넣으면, 굳이 비싸게 사야할 이유가 있으니 비싸게 산다 로 연결되고, 그럼 그만큼 현재 가격이 그만큼 싸구나 라고 연결을 해서 저는 해석하고 있습니다!

Coin Marketplace

STEEM 0.31
TRX 0.12
JST 0.033
BTC 64485.37
ETH 3156.53
USDT 1.00
SBD 4.05