RSI 지수와 MACD 으로 매수 매도 시점 알기

마지막 업데이트: 2022년 5월 27일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기

그림 10-53 LineEdit의 수평 정책 설정

RSI 지수와 MACD 으로 매수 매도 시점 알기

모멘텀 지표 및 선물 · 옵션 지표

정의 : 고객예탁금이란 증권회사가 유가증권의 매매거래와 관련하여 고객으로부터 받아 일시보관중인 금전을 말하는데, 투자자가 주식을 사기 위해 증권회사에 맡겨 놓은 돈이나 주식을 매도한 후 인출하지 않은 돈으로 대체로 주식을 매입하기 위해서 대기하고 있는 돈이라는 개념으로 주가 지표가 될 수 있다.

산출방법 : 고객예탁금에는 위탁자 예수금, 청약자 예수금, 환매조건부 예수금, 자기신용대주담보금, 신용거래계좌설정보조금, 신용공여 담보금 등으로 구성되며 증권업협회가 집계하여 발표한다.

정보제공 : 증권업협회가 발간하는 「증권시장」지와 일간지 등의 증권면에 전일의 고객예탁금과 전일대비수치, 연중최고, 연중최저치등이 백만원 단위로 발표된다.

투자활용 : 고객예탁금은 주가를 결정짓는 수요의 중요한 지표로서 고객예탁금이 증가하면 주식의 수요세력들이 적극적으로 주식시장에 유입되고 있다는 증거로 볼 수 있다. 반대로 고객예탁금이 유출되는 것은 향후 주가전망을 비관적으로 보고 빠져나가는 것이므로 주가에 악영향을 미치게 되는 것이다. 따라서 고객예탁금이 증가하고 있다면 시세의 상승을 예고하는 지표로서 이용될 수 있으며, 고객예탁금이 감소하고 있다는 것은 미래에 대한 시장을 비관적으로 보는 투자자가 많아 시장을 이탈하고 있다고 해석된다. 그러나 시장이 활황일 때 신규자금이 유입되고 시장이 침체기일 때는 매도자금이 유출되는 특성으로 고객예탁금이 주가의 선행지표라기 보다는 후행적인 성격이 있어 실제로 주가를 예측하는 지표로서의 역할을 충분히 발휘하지 못한다는 비판도 있다.RSI 지수와 MACD 으로 매수 매도 시점 알기

14. 모멘텀지표 : MACD (Moving Average Convergence Divergence)

정의 : MACD는 이동평균선이 서로 만났다가(converge), 벌어지는(diverge) 성질을 이용한 지표이다. 이동평균법에 따르면 단기이동평균선과 장기이동평균선이 서로 교차하는 시점을 천정이나 바닥으로 가정한다. 그러나 MACD에서는 장기이동평균선과 단기이동평균선의 차이가 최대가 되었을 때를 천정이나 바닥으로 가정하고 이 천정이나 바닥을 포착하기 위하여 두 이동평균선의 차이가 어떻게 변하는지에 대하여 주목하는 지표이다.

산출방법 : MACD는 통상 12일 이동평균과 26일 이동평균을 산출한 연후에 두 이동평균의 차이(이를 MACD라 부른다)를 9일간 이동평균(이를 신호선이라 부른다)한 값을 구한다. 단기(12일)이동평균과 장기(26일)이동평균의 차이를 구하는 것은 두 이동평균의 차이가 최대로 벌어졌을 때를 알아보기 위해서이다.

정보제공 : 대부분의 증권회사 온라인 증권매매단말기의 그래프화면에서 조회된다.

투자활용 : 두 이동평균의 차이(MACD)와 평균간의 차이를 다시 이동평균한 곡선(신호선)이 서로 교차하는 시기를 각각 매수, 매도시기로 인식한다. 즉 MACD가 신호선을 상향돌파하면 매수신호이고, MACD가 신호선을 하향돌파하면 매도신호가 되는 것이다. 또한 MACD가 양(+)의 값을 나타내면 시장의 상승세를 나타내고 음(-)의 값을 나타내면 시장의 하락세를 나타낸다. 그러나 일정한 값을 초과하면 초과매수, 초과매도상태가 되어 가격의 반전이 예상되기 때문에 초과매수수준에 진입하면 매도하고 초과매도수준에 진입하면 매수하는 전략을 사용한다. 한편 MACD는 12일, 26일 이동평균, 그리고 그 차이를 9일간 이동평균한 숫자를 이용하므로 단기적인 거래보다는 비교적 중, 장기적인 거래에 적합하다.

15. 모멘텀지표 : 스타캐스틱스(Stochastics)

정의 : 주어진 일정기간 동안 움직인 가격범위 내에서 당일의 종가가 상대적으로 어느 수준에 있는지를 알려주는 지표이다.

산출방법 : N일 기간동안의 절대가격범위(범위의 고가와 저가와의 차이)와 최근의 종가를 비교하여 모멘텀을 측정한다.

%K = 100(당일의 종가 - 과거 N일 동안의 최저가)/(당일의 종가 - 과거 N일 동안의 최고가)
%D = %K의 3일 이동평균

정보제공 : 대부분의 증권회사 온라인 증권매매단말기의 그래프화면에서 조회된다.

투자활용 : %D는 0과 100 사이의 범위를 갖는데, 주가가 계속 상승하면 100에 가까워지고 계속 하락하면 0에 가까워진다. 통상 과다매수수준은 80이고 과다매도수준은 20의 값을 갖는데, 과다매수수준은 매도기회를, 과다매도수준은 매수기회를 나타낸다. 또 다른 매매전략은 %K와 %D가 서로 교차할 경우 매매하는 것인데, %K가 %D를 상향돌파하면 매수를, %K가 %D를 하향돌파하면 매도를 취하는 매매기법이다.

16. 모멘텀지표 : RSI(Relative Strength Index)

정의 : 주가의 강세정도를 상대적으로 측정하기 위한 지표로서 주가가 상승세라면 얼마나 강세인지 혹은 하락세일 때 어느 정도의 약세인지를 백분율(%)로 나타냄으로서 주가가 너무 과열상태일 때에는 매수를 자제하고, 반대로 주가가 과매도상태라면 매수를 고려하는 지표이다.

산출방법 : RSI=(N일간의 상승폭합계)/ <(N일간의 상승폭합계)+(N일간의 하락폭합계)>×100이 된다. 여기서 N일은 5일, 9일, 14일을 사용하나 구하는 기간이 짧을수록 예민해지기 때문에 일반적으로 9일을 사용한다. 만일 9일 동안 주가가 계속 오르기만 하였다면 RSI의 값은 100이 될 것이고, 9일간 하루도 남기지 않고 연일 하락하기만 하였다면 RSI는 0이 된다. 따라서 대부분의 경우는 0과 100사이에 위치하게 된다.

정보제공 : 대부분의 증권회사 온라인 증권매매단말기의 그래프화면에서 조회된다.

투자활용 : 일반적으로 RSI가 70이상을 과열상태, RSI가 30이하일 때에는 과매도상태라고 한다. 따라서 RSI가 70이상일 때에는 매수를 자제하고 매도시기를 노려야 할 것이며, 반대로 RSI가 30이하라면 매도를 자제하고 매수기회를 모색할 시기다.

정의 : 증권투자수익률은 크게 시장전체의 변동과 연관된 부분과 개별기업 특유요인에 의해서 발생되는 부분으로 구분할 수 있는데, 베타는 시장전체에서 기인한 공통적 요인에 대한 민감도를 나타내는 지표이다. 예를 들어 개별종목의 투자수익률이 전체 시장수익률(종합주가지수 수익률)과 동일한 움직임을 보일 때를 1로 하고, 1보다 크거나 작은 것은 시장수익률 변동보다 더 민감하거나 둔감한 것으로 볼 수 있다.

산출방법 : 일정기간 동안의 개별종목의 주가수익률과 전체 시장수익률(예를 들면 종합주가지수 수익률)과의 통계적 방법(회귀분석)을 통해서 산출한다.

정보제공 : 상장기업 분석자료와 증권회사 온라인 단말기에서 각 기업의 베타값이 제공된다.

투자활용 : 베타값이 1보다 큰 주식을 공격적 주식이라 하고, 1보다 작은 주식을 방어적 주식이라 한다. 따라서 전체 주식시장이 상승세인 경우에는 베타값이 1보다 큰 공격적 주식이 유리하나, 시장의 하락이 예상되는 경우에는 베타값이 ‘-‘이거나 최소한 1미만인 종목이 전체 시장하락률보다 덜 떨어지기 때문에 유리하다고 할 수 있다. 그러나 베타 산출기간이나 시장의 구조적 상황에 따라 활용은 유연하여야 한다.

18. 선물 및 옵션지표 : 약정수량, 약정금액, 미결제약정수량

정의 : 주가지수는 실제로 주고 받는 실물이 아니기 때문에 주가지수에 일정한 금액을 곱한 것을 매매단위화 하여 거래를 하고 있는데 이를 거래단위라 하며 단위는 계약으로 RSI 지수와 MACD 으로 매수 매도 시점 알기 표시한다. 주가지수선물시장에서도 일정기간에 매매거래된 계약수량을 약정수량이라 하고 약정금액은 약정가격에 약정수량을 합한 것으로 단위는 원이며 주식시장에서의 거래대금에 해당된다.
미결제약정수량은 선물매매가 이루어진 뒤 반대매매를 통하여 차감결제되지 않고 최종거래일 이전까지 미결제인 상태로 남아있는 계약 수이다.

산출방법 : 약정수량은 결제월별로 매매거래된 계약 수를 누계하고, 약정금액은 약정수량에 약정금액을 합한 금액이다. 미결제약정수량은 약정수량에서 반대매매로 결제된 수량을 차감한 수량이다. 산출시 매도, 매수는 동일한 거래로 간주되어 매매된 계약의 편도만을 계산한다.

정보제공 : 시장전체와 결제월종목별로 「증권시장」지와 「주식」, 일간신문의 경제면과 증권회사의 단말기를 통해서 볼 수 있다.

투자활용 : 약정수량과 미결제약정수량, 둘 다 선물시장의 유동성을 나타내는 척도인 동시에 시장전체 위험의 총량이다. 따라서 거래소는 시장과열방지를 위해서 필요한 경우에 미결제약정수량을 제한할 수 있도록 하고 있다.

정의 : 신용거래로 현금을 빌려 유가증권을 산 사람이나 주권을 빌려 판 사람은 각각 소정의 기한까지 변제를 해야만 하는데 아직 변제하지 않은 주권의 수량이나 현금액을 신용거래잔고라 하며, 전체 상장주식에서 신용거래잔고가 차지하는 비율을 신용거래잔고비율이라 한다.

산출방법
신용거래 잔고 비율 = 신용거래잔고 / 총 상장주식 수

정보제공 : 증권업협회에서 발행하는 「증권시장」지에 전 종목에 대한 누계가 게재되며 개별기업별로는 증권회사 온라인 매매단말기에서 제공된다.

투자활용 : 신용거래를 이용해서 차입한 돈을 변제하려면 현금으로 상환할 수도 있지만 반대매매에 의해서도 변제할 수 있다. 반대매매란 신용거래로 매입한 사람이 증권회사에 담보로 있는 주권을 다시 팔아 그 대금으로 변제에 충당하는 거래이다. 따라서 신용거래 매수잔고(융자)는 가까운 장래에 시장에서 잠재적인 매도세력이 되기 때문에 전체시장서의 비율과 개별종목에 대한 비율은 장래의 수급파악에 유용한 지표가 된다.

소요파(가칭)-주식투자(단타) 비법 수련

미중 무역협상 1차 합의 소식에 미국 다우와 나스닥이 신고가를 기록했는데.. 우리 시장은 오히려 파란불.. 코스닥을 보니 외국인과 기관이 매도를 많이 하고 있으니 지수가 올라갈 수가 없죠..

이럴 때 중요한 것이 좋은 검색식입니다.. 지수가 밀려도 살아 움직이는 종목을 알려주니까요..^^

​ 컬러레이 입니다.. 상승이 너무 빠른 탓에 추가 매수 못해서.. 수익률은 높지만 금액은 크지 않습니다..

​ 쌍용정보통신 .. 이틀 연속 10%대 상승 을 보여주었네요.. 이런 종목이 아주 좋습니다..

편안하게 분할 매수도 가능하고..

전날 이미 10% 이상의 수익을 확보했기 때문에.. 그 수익을 다 날려도 본전이니.. 기꺼이 다음날로 가져갈 수 있으니 말이죠..^^

어제도 그랬지만 요즘 단타에 따른 변동성이 심한 것 같습니다.. 오늘의 텔콘RF의 경우 8% 급등했다가 0% 까지 떨어졌는데요.. 대응을 잘해야 될 것 같습니다..

아무튼 검색식이 뜨면 매수해서 적당한 위치에서

분할 매도하면 이렇게 밀려도 수익이 납니다..

​ - 씨트리 : -3% 자동 매도(60%)된 후 관망 중..

- 윌비스 : 다른 종목 차트보고 분석하다가 놓침..

리켐 입니다.. 의견(댓글) 을 말해주세요..

주식추천종목 - 제가 매수한 종목도 있고 매수하지 않은 종목도 있습니다..

그리고 아침부터 네이블과 디에이테크놀로지 추천하려고 맘먹고 있었는데.. 장 마감전에 갑자기 7%, 6% 로 뛰어버렸네요.. 아쉽습니다..

(1) 주식투자는 반드시 자기 자신의 판단과 책임하에 하여야 하며, 투자의 최종적인 책임은 투자자 본인에게 있습니다.

(2) 장 초반에 갭 상승한 종목은 추격매수 하지 않는게 좋습니다.

(3) 매수도 되도록 9시 30분이 지나서 하시면 좋습니다.

(4) 매수 후에는 반드시 손절을 설정하셔서 만일의 사태에 대비하시기 바랍니다.

(5) 매수 후 급등 혹은 갭 상승하면 일부를 매도하고 대응하시면 좋습니다.RSI 지수와 MACD 으로 매수 매도 시점 알기 RSI 지수와 MACD 으로 매수 매도 시점 알기

(6) 시장의 변동성이 클 때는 너무 오래 보유하는 것은 바람직하지 않습니다.

이동평균(moving average)은 추세를 알기 쉽도록 구간을 옮겨가면서 내는 평균이다. 만일 A주식의 5일 이동평균이 3만원이라고 하면, 이는 오늘을 기점으로 5일 동안의 과거 주가를 평균 낸 값이 3만원이라는 뜻이다. 이동평균값은 날짜가 RSI 지수와 MACD 으로 매수 매도 시점 알기 변할 때마다 조금씩 변하지만 주가의 가격 움직임보다는 변화의 폭이 작다.

따라서 차트상에 나타나는 이동평균선(moving average line)은 들쑥날쑥 한 주가보다 매우 완만한 곡선의 형태로 나타나게 된다. 이러한 완만한 형태가 주가의 향방을 보다 직관적으로 알 수 있게 도와준다.

이동평균선은 구간을 어떻게 잡느냐에 따라 천차만별로 만들어질 수 있지만, 우리나라에서는 대개 5일선, 20일선, 60일선, 120일선을 쓴다. 5일선은 생명선, 20일선은 심리선, 60일선은 수급선, 120일선은 경기선이라는 별칭을 가지고 있다. 하지만 미국의 선물 트레이더들은 4일선, 9일선, 18일선을 많이 쓴다. 4-9-18일선을 쓸 경우 5-10-20일선을 쓰는 대다수의 트레이더보다 한 발 앞서서 매매 포인트를 잡을 수 있다.RSI 지수와 MACD 으로 매수 매도 시점 알기

이동평균선을 이용한 가장 단순한 매매기법은 주가가 이평선 위에 있을 때 매수, 이평선 아래에 있을 때 매도를 하는 방법이다. 단기매매를 할 때는 5일선이나 10일선을 쓰고, 중장기 매매를 할 때는 20일선이나 60일선을 쓰면 된다. 어떤 이동평균선을 쓸 것인지는 자신의 매매스타일과 투자종목의 움직임을 감안해야 할 것이다.

또 다른 방법은 단기 이평선과 장기 이평선의 교차를 이용하는 방법이다. 단기 이평선이 장기 이평선을 아래에서 위로 뚫고 올라올 때를 '골든 크로스', 반대로 단기 이평선이 장기 이평선을 위에서 아래로 뚫고 내려갈 때를 '데드 크로스'라고 한다. 골든 크로스에서는 매수를, 데드 크로스에서는 매도를 하는 것이 교과서적인 방법이다.

이동평균선과 주가의 여덟 가지 법칙을 정리한 '그랜빌의 법칙' 또한 초보자가 반드시 숙지하고 넘어가야 할 중요한 원리다.

제럴드 애펠(Gerald Appel)이 개발한 MACD(Moving Average Convergence/ Divergence)는 이동평균선의 수렴과 확산을 이용한 기술적 지표다. MACD는 MACD선과 시그널 선의 교차를 매수/매도 시점으로 판단하는데, 스토캐스틱, RSI와 함께 가장 많이 쓰이는 기술적 지표로, 신뢰성이 높고 안정적인 매매신호를 제공한다.

주의해야 할 것은 이동평균선을 지지나 저항의 기준으로 삼아서는 안 된다는 것이다. 이동평균선은 주가의 움직임을 완만하게 보여주는 가상의 선이므로 5일선, 10일선처럼 특정한 구간의 이평선이 실제로 지지나 저항의 힘이 있다고 보기는 어렵다. 따라서 이동평균선 눌림목 매매는 동전 던지기처럼 위험한 도박이라는 점을 밝혀둔다.

10-7 통합 화면

이번 절에서는 직접 제작한 세 개의 위젯 (OverviewWidget, ChartWidget, OrderbookWidget)을 사용하여 최종 결과물을 만들어 보겠습니다. 메인 윈도우는 위젯 중에서도 최상위 위젯을 의미합니다. 디자이너에서 그림 10-41과 같이 Main Window를 생성해 주세요.


그림 10-41 메인 위젯의 생성

메인 윈도우의 왼쪽에는 OverviewWidget과 ChartWidget이 위치하며 두 위젯은 세로 방향으로 배치돼야 합니다. 디자이너에서 그림 10-42와 같이 Vertical Layout과 Widget을 좌우로 나란히 배치합니다.


그림 10-42 실시간 가격이 포함될 레이아웃과 호가창의 배치

레이아웃과 위젯을 같은 크기로 배치하기 위해 최상위 메인 윈도우를 그림 10-43과 같이 격자형으로 배치합니다. 레이아웃 설정을 했으니 메인 윈도우의 크기가 변경되더라도 자동으로 나머지 위젯의 크기가 확장됩니다.


그림 10-43 Vertical Layout과 QWidget의 레이아웃 설정

지금까지 작업한 내용은 그림 10-44와 같습니다. 메인 윈도우를 호가창과 현재가 위젯이 들어갈 정도의 적당한 크기로 확장해 주세요. 세부 설정은 뒤에서 하니 부담 없이 크기를 조정해 주세요.


그림 10-42 호가창과 나머지 위젯의 분리

왼쪽 Vertical Layout에 실시간 현재가 (OverviewWidget)이 포함될 위젯을 추가합니다. Vertical Layout 안에 추가되는 첫 번째 위젯이니 레이아웃을 꽉 채우겠죠? 생각보다 레이아웃안에 정확히 위젯을 추가하기란 쉽지 않습니다. 잘못된 위치에 추가했다면 Ctrl + Z를 눌러 되돌린 후 다시 작업해 주세요. 혹은 그림 10-45와 같이 위젯을 객체 탐색기 안의 Vertical Layout (QVBoxLayout)으로 '드래그&드롭'하면 쉽게 원하는 위치에 삽입할 수 있습니다.


그림 10-45 객체 탐색기를 사용한 위젯의 추가

이어서 차트를 그릴 위젯까지 Vertical Layout에 추가하면 그림 10-46과 같이 두 개의 위젯이 5:5 비율로 채워집니다.RSI 지수와 MACD 으로 매수 매도 시점 알기


그림 10-46 세 개의 위젯이 배치된 상태

앞서 우리가 만들었던 차트/호가창/가격정보 위젯을 추가한 세 개의 위젯에 연결해 봅시다. 마우스 오른쪽 키를 눌러 승격 (Promote To) 메뉴로 진입해 주세요. "승격된 클래스 이름" 항목에 구현한 클래스 이름을 입력하고 "헤더 파일"에는 클래스가 정의된 파일 (모듈) 이름을 입력합니다. 그림 10-47은 chart.py 안에 있는 ChartWidget 클래스를 지정하는 예제입니다. 같은 방식으로 OrderbookWidget과 OverviewWidget을 추가해 주세요.


그림 10-47 사용자 정의 모듈로 승격

세 개의 위젯을 그림 10-48과 같이 각각 승격해 줍니다. 위치에 맞는 클래스를 연결해 줘야 합니다. 오른쪽 끝 위젯에는 OrderbookWidget, 왼쪽 위에는 OverviewWidget, 왼쪽 아래는 ChartWidget입니다.


그림 10-48 위젯 승격하기

객체 탐색기를 참고하면 그림 10-49과 같이 QWidget이 지정한 사용자 정의 위젯으로 승격된 것을 확인할 수 있습니다.


그림 10-49 객체 탐색기에서의 승격된 위젯

제대로 설정하고 있는지 중간 점검을 해 봅시다. 지금까지 디자이너에서 작업한 UI 파일을 resource 폴더의 main.ui에 저장하고, 파이썬에서 이를 출력해 보겠습니다.

코드를 실행하면 그림 10-50과 같이 출력됩니다. 신기하죠? 각각의 Widget을 따로 만들어서 모듈로 정리하고 정리한 모듈을 하나로 합쳐서 출력한 겁니다. 프로그램의 규모가 커짐에 따라 목적에 맞는 코드를 나눠서 정리하는 것이 당연히 유지 보수에 좋습니다.


그림 10-50 구현된 클래스를 종합한 중간 결과

차트 위젯 아래쪽 공간이 남아 차트 위젯이 설계 의도와 달리 세로로 길게 출력됐습니다. 이 위치에 버튼과 텍스트 메시지를 출력할 위젯을 넣어 봅시다. 그림 10-51과 같이 차트 위젯 위치 아래에 Horizontal Layout을 추가합니다. 주의할 점은 그림과 같이 Vertical Layout 끝에 Horizontal Layout을 넣어줘야 한다는 사실입니다. 드래그한 채로 인내심을 갖고 마우스를 조금씩 움직여가며 시도해 보세요. 잘못 넣었을 경우에는 Ctrl + Z로 되돌릴 수 있습니다.


그림 10-51 구현된 클래스를 종합한 중간 결과

정상적으로 진행했다면 그림 10-52 과 같이 왼쪽 아래에 Horizontal Layout이 추가돼야 합니다.


그림 10-52 RSI 지수와 MACD 으로 매수 매도 시점 알기 추가된 Horizontal Layout

api key와 secret key를 입력할 두 개의 LineEdit과 시작 버튼을 Horizontal Layout에 추가해 주세요. Horizontal Layout이라는 이름에서 알 수 있다싶이 가로 방향으로 위젯이 추가됩니다. LineEdit으로 인해 오른쪽 호가창의 위치가 줄어들 경우, 그림 10-53과 같이 두 LineEdit의 크기 정책을 Expanding에서 Preferred로 변경해주세요. Preferred는 RSI 지수와 MACD 으로 매수 매도 시점 알기 Expanding 옵션과 유사한데 화면이 커질 경우 Expanding 정책을 가진 위젯에 우선 양보합니다. 추가된 모든 위젯이 Preferred로 선택되어 균일하게 영역을 나눠 확장됩니다.


그림 10-53 LineEdit의 수평 정책 설정

로그 메시지가 출력될 TextEdit을 Vertical Layout에 추가하고 가로와 세로의 sizePolicy를 Preferred로 변경해 주세요. 그림 10-54와 같이 LineEdit 아래쪽에 추가해야 합니다. 또한 OverviewWidget과 ChartWidget의 maximumSize의 높이를 제한해서 전체 메인 윈도우에서 차지하는 비율을 고정하는 것이 보기 좋습니다. 제공해 드린 코드에서는 OverviewWidget의 높이에 120, ChartWidget에 150을 적용했지만 원하는 경우 자유롭게 크기를 조정해도 됩니다. 디자이너 툴에서 직접 제작한 위젯의 구조를 알 수 없어서 메인 윈도우에 의도한 대로 렌더링이 안되는 것 같지만 코드를 실행하면 반영된 결과를 확인할 수 있습니다.


그림 10-54 Overview, Chart, TextEdit 위젯의 크기 설정

API 키를 입력할 두 개의 LineEdit에 apiKey, secKey라는 이름을 부여합니다. 버튼 또한 이름을 지정하고 버튼에 출력될 문자열을 "매매시작"으로 초기화합니다. 그림 10-55의 객체 탐색기에서 수정된 위젯의 이름을 확인할 수 있습니다.


그림 10-55 이름을 부여한 위젯

비밀번호와 같이 LineEdit에 입력된 텍스트를 가리려면 그림 10 56와 같이 echoMode를 Password로 변경합니다.


그림 10-56 비밀번호 입력 모드

파이썬 코드는 변경사항 없지만 UI 파일을 업데이트했으므로 main_0.py 코드를 실행해서 결과를 확인해 봅시다. 그림 10-57와 같이 overview와 chart의 크기가 줄어든 것을 확인할 수 있습니다. 크기가 줄어들지 않으신 분들은 두 위젯의 maximumSize를 다시 확인하세요.


그림 10-57 사이즈가 조절된 위젯 화면

이번에는 버튼 이벤트를 연결해서 매매 알고리즘을 시작하는 이벤트를 정의해 봅시다. "매매시작" 버튼을 클릭하면 "매매중단"으로 변경되고 다시 클릭하면 "매매시작"으로 토글돼야 합니다. 코드를 실행해 보면 버튼을 클릭할 때마다 이름이 변경됩니다.

API key와 Secret key를 입력하고 매매시작 버튼을 눌렀을 때의 로그인 처리를 추가해 보겠습니다.

  • 라인 21~25: GUI에 입력한 API 킷값의 유효성 검사를 수행합니다. 킷값은 반드시 32글자여야 유효합니다.
  • 라인 27~31: 입력한 킷값으로 잔고를 조회합니다. 만약 잔고 조회에 실패했다면 API 키가 잘못된 것이므로 에러 메시지를 출력합니다.
  • 라인 33~35: 성공적으로 잔고를 조회했다면 보유 중인 원화를 출력합니다.

코드를 실행해서 api key와 secret key를 입력한 뒤 매매시작 버튼을 클릭하면 그림 10-58과 같이 Text Edit에 보유한 비트코인의 수량 정보가 출력됩니다.


그림 10-58 잔고 조회 기능 추가 화면

로그인 API 키를 입력하거나 복사해서 붙여넣는 방식은 불편할 수밖에 없습니다. 메인 윈도우가 시작될 때 파일에서 읽어와서 자동으로 입력되는 기능을 추가해 봅시다. 다음은 bithumb.txt 파일을 읽어 LineEdit에 두 개의 API 키를 입력합니다. API 키는 텍스트 파일 안에 한 줄에 하나씩 저장돼 있어야 합니다. 초기화자 안에 코드를 입력했기 때문에 프로그램이 시작될 때 암호를 로딩합니다.

변동성 돌파 전략을 GUI와 연결해 봅시다. 6장에서 작성한 변동성 돌파 전략을 모듈로 정리합니다. 코드 06_20.py에서 정리해 놓은 코드를 수정해서 사용하며, 수정된 부분을 위주로 설명합니다. 수정된 코드는 volatility.py 이름으로 저장해 주세요. 변동성 돌파전략이 기억나지 않으시는 분은 6장을 복습해 주세요.

  • 라인 18: 빗썸의 시장가 API는 수수료 이외에도 30%의 여유가 존재해야 주문이 가능합니다. 보유 현금의 100%를 채워서 주문하면 "주문량이 사용 가능 KRW을 초과하였습니다" 에러 메시지를 반환합니다.
  • 라인 19, 23: 기존에는 전역 변수로 사용하던 것을 API 키로 로그인한 Bithumb 객체를 입력받도록 수정합니다. API 조회 결과를 반환합니다.

변동성 돌파 전략을 실행하는 Work 쓰레드를 추가해 보겠습니다. VolatilityWorker는 코인의 가격을 비교해서 특정 조건을 만족하면 매수하고 다음 날 정해진 시간에 매도합니다. 매수/매도 결과를 메인 쓰레드로 전달하려면 시그널을 정의해야 되겠죠?

  • 라인 12: tradingSent 시그널은 세 개의 문자열 (날짜/주문타입/주문량)을 전송합니다.
  • 라인 22~23: 1초에 한 번씩 날짜, 매수, 수량의 고정된 값을 전송합니다. VolatilityWorker의 동작을 확인하기 위한 테스트 코드입니다.

VolatilityWorker는 사용자가 로그인 버튼을 클릭하고, API 잔고 테스트까지 성공한 다음 실행합니다.

  • 라인 63~65: VolatilityWorker 객체를 생성하고 시그널을 발생하면 연결될 슬롯을 정의합니다.
  • 라인 68: 매매중단 버튼을 누르면 VolatilityWorker를 종료합니다.
  • 라인 72~74: 시그널과 연결된 슬롯으로 문자열을 포매팅해서 출력합니다.

코드를 실행하면 그림 10-59와 같이 1초에 한 번씩 문자열이 Text Edit에 출력됩니다.


그림 10-59 고정값이 출력되는 Work 쓰레드

1초에 한 번씩 고정된 문자열을 전송하던 VolatilityWorker에서 RSI 지수와 MACD 으로 매수 매도 시점 알기 변동성 돌파 전략을 수행하도록 수정해 봅시다. 전체적인 구조는 6장과 크게 다르지 않습니다.

  • 라인 21~25: 변동성 돌파 전략의 초기 진입 가격을 결정합니다. wait_flag는 반복된 매수 시도를 방지하기 위해 사용합니다. wait_flag가 False일 경우 매수를 시도하고, 매수한 이후에는 값이 True가 되어 더는 매수 시도를 하지 않습니다.
  • 라인 30~41: 자정 부근에 매도를 시도합니다. 34라인에서 sell_crypto_currency 함수로 Bithumb 객체를 전달하는 것이 수정됐습니다. 시장가 매도를 수행한 뒤에 36라인에서 get_order_completed 메서드로 주문의 체결 여부를 다시 한번 조회합니다. 체결됐다면 정상적인 값이 전달되어 40라인에서 시그널을 발생합니다. 만약 주문 체결이 완료되지 않았다면 result에는 None 값이 들어있어 KeyError를 일으켜서 54라인의 except 구문으로 이동합니다. 이후 다시 매도를 시도합니다.
  • 라인 44~52: 변동성 돌파전략의 조건을 만족하면 매수를 시도합니다. 매수 또한 매도와 동일하게 주문의 정상 처리 여부를 확인한 뒤 매수를 확정 짓습니다. 주문이 성공적으로 처리되면 wait_flag 값을 변경하여 반복적인 매수 시도를 막습니다.

마지막으로 프로그램이 종료될 때 각 서브 위젯들의 정상 종료를 위해 이벤트 처리까지 해줘야 합니다.

코드를 실행하면 그림 10-60과 같이 동작하는 것을 확인할 수 있습니다.


그림 10-60 거래 성공 메시지가 출력된 나만의 HTS

파이썬 기본 문법을 배워서 알고리즘을 개발하고, GUI 인터페이스로 연결하는 방법을 배웠습니다. 물론 아쉬운 점도 많이 남아 있습니다. 현재 구현한 알고리즘은 구현의 편의를 위해 시장가로 매수/매도를 체결하는데, 이는 슬리피지 (slippage)가 발생해서 의도치 않은 손실이 누적될 수 있습니다. 이동 평균선과 조합해서 상승장을 판별한 뒤, 상승장에서만 변동성 돌파 전략을 적용하는 등의 추가적인 알고리즘을 개발해야 합니다. 또한 비트코인만을 조회하는 프로그램이라 다른 코인으로의 확장도 필요해 보입니다. 여러분들에게 물고기 잡는 법을 소개해 드렸으니 이러한 응용을 직접 해보실 것을 추천해 드리면서 마무리 짓겠습니다.

왜인지는 잘 모르겠으나 이 마지막 통합화면에서 오류가 납니다ㅠㅠ 오류 내용은 아래와 같습니다. C:\stockauto>Traceback (most recent call last): File "", line 1, in File "C:\python38-32\lib\multiprocessing\spawn.py", line 116, in spawn_main exitcode = _main(fd, parent_sentinel) File "C:\python38-32\lib\multiprocessing\spawn.py", line 126, in _main self = reduction.pickle.load(from_parent) File "C:\python38-32\lib\multiprocessing\connection.py", line 962, in rebuild_pipe_connection handle = dh.detach() File "C:\python38-32\lib\multiprocessing\reduction.py", line 131, in detach return _winapi.DuplicateHandle( PermissionError: [WinError 5] 액세스가 거부되었습니다 왜 이러는지 잘 모르겠습니다. 도대체 무엇이 문제일까요?ㅠㅠ - 재웅, 2021년 4월 5일 2:00 오전

main_2.py 부분의 코드관련 질문 드립니다. balance = self.b.get_balance(self.ticker) 이 부분에서 ticker는 앞에서 선언을 하지 않았는데 어떤 값이 저장되어 있나요? 그리고 else의 위치가 부적절해 보이는데 확인 부탁드리겠습니다. 혹시 이 단락 부분 전체 코드를 확인하고 싶은데 어떻게 확인할 수 있을까요?? - 영근, 2021년 5월 29일 8:49 오후

@영근님 말씀하신 부분을 반영해서 main_1.py에 self.ticker = "BTC" 부분을 추가했습니다. else의 위치 (오타)도 수정했구요. - 유대표, 2021년 5월 30일 2:53 오후

전체적으로 이해가 안 되는 부분들이 있는데 질문 드립니다. 1. volatility.py 를 생성했는데, VolatilityWorker 객체와 연결점이 안 보이는데 volatility.py를 여는 명령어가 필요해보입니다. 2. main_5.py 에서 self.bithumb은 선언이 된 적이 없는데 혹시 기존의 self.b를 말씀하시는 걸까요?? 그리고 else 구문의 위치가 올바른 거 같지가 않습니다. 3. 바로 위의 main_5.py에서 기존의 6장의 변동성 돌파 전략의 내용이 있는데 해당 내용은 volatility.py에 기재되어야 되는 내용이 아닌 지 문의드립니다. 여태까지 감사하게 잘 따라오면서 만들고 있는데 이번 챕터가 조금 이해 안 되는 부분들이 많아 해메고 있습니다 ㅠㅠ 꼭 확인 부탁드릴게요. 그리고, 이번 내용은 Github에 업로드 안 되어 있는데 참고할 수 있는 py파일도 업로드 해주실 수 있으실까요?? - 영근, 2021년 6월 2일 2:10 오후

안녕하세요~ 비쥬얼스튜디오코드로 해보고 있습니다~ PS C:\coding\pyhthon> c:; cd 'c:\coding\pyhthon'; & 'C:\Users\pgt\AppData\Local\Programs\Python\Python310\python.exe' 'c:\Users\pgt\.vscode\extensions\ms-python.python-2021.12.1559732655\pythonFiles\lib\python\debugpy\launcher' '10696' '--' 'c:\coding\pyhthon\main.py' Traceback (most recent call last): File "c:\coding\pyhthon\main.py", line 5, in form_class = uic.loadUiType("C:/coding/pyhthon/main.ui")[0] File "C:\Users\pgt\AppData\Local\Programs\Python\Python310\lib\site-packages\PyQt5\uic\__init__.py", line 204, in loadUiType exec(code_string.getvalue(), ui_globals) File "", line 39, in ModuleNotFoundError: No module named 'chart' 위와 같은 오류가 나는데요~ 저는 제가 폴더를 만들어서 직접 작업을 하고 있어 ui경로를 form_class = uic.loadUiType("C:/coding/pyhthon/main.ui")[0] 이렇게 주었습니다~ 경로 설정에 문제가 있을까요~? - 규태, 2021년 12월 12일 4:21 오후

ch10/main_2.py 에서 27: self.b = Bithumb(apiKey, secKey) 28: balance = self.b.get_balance(self.ticker) 29: if balance == None: 30: self.textEdit.append("KEY가 올바르지 않습니다.") 31: return 32: 33: self.button.setText("매매중지") 34: self.textEdit.append("------ START ------") 35: self.textEdit.append(f"보유 현금 : 원")

투자기법 - 볼린저밴드(Bollinger band)(심화3)

폭이 좁아지는 구간의 길이를 볼린저는 약 6개월 정도로 잡았습니다.
하지만, 비트코인의 경우는 조금 더 짧은 기간으로 형성되는 것을 확인할 수 있었습니다.
변동성이 좁아진 이후에는 변동성이 확대되며 큰 폭으로 하락하거나 상승하는 것을 볼 수 있습니다.

가격은 Cycle을 형성하지 않지만, 변동성(volatility)은 상승/하강을 반복하는 Cycle을 형성한다고 말합니다. 이러한 원리로 변동성이 심각하게 축소될 경우, 반드시 변동성 상승이 기대되는 것입니다.
따라서, 변동성 축소되는 squeeze 구간에서 벗어나 변동성이 확대되면서 하락할경우 매도를, 상승할 경우 매수를 하는 전략을 사용 할 수 있습니다.

하지만, 주의하셔야 할 점은, head fake라고 불리는(눌림목라고 생각하시면 됩니다.) 일시적으로 잠깐 하락을 주었다가 급격히 상승하는 경우 가 있을 수 있습니다. 비트코인의 경우에는, 아직 시장이 형성된지 얼마안되서 일봉차트로는 아직 그런 부분을 확인하기가 어려웠습니다. 단기적으로는 그런부분이 존재할 수도 있습니다. (알트코인은 head fake가 꽤나 자주 확인되더군요.)
이러한 경우를 대비하기 위해, 다른 보조지표를 활용하거나 하강이 발생하는 경우, 다시 상승하는 것을 확인한 후 매수하는 전략을 사용할 수 있습니다.

9) 다른 보조지표와 볼린저밴드의 결합

앞서, W패턴 ,M패턴, Squeeze에서 head fake 등의 식별은 볼린저밴드 상단/하단 지점에서의 거래량 보조지표를 결합하여 어느정도 예측 할 수 있음을 확인하였습니다. 보조지표로 거래량 지표에 대해서만 주로 설명하였지만, 보조지표를 카테고리로 나누면 여러가지 다른 독립변수를 가지는 보조지표들이 존재할 수 있습니다.

예를 들어, 모멘텀 지표, 거래량 지표, 추세 지표, 감정 지표, 과매수/과매도 지표 등 이 있습니다.

이러한 지표들을 볼린저 밴드와 함께 사용하여, 다이버전스를 확인 할 수 있습니다. 참고로 다이버전스는 가격과 지표가 다르게 방향으로 움직이는 것을 말합니다. 만약 볼린저 밴드 상단/하단 터치부분을 기준으로 모두가 같은 방향으로 움직이고 있다면 그것은 기존의 추세를 유지할 것이라는 신호로 받아들여지지만, 그렇지 않을 경우 추세가 반전될 가능성이 있을 것이라고 해석될 수 있습니다.

주의해야할 점은, 같은 카테고리의 지표를 2개 이상 사용하는 것은 좋지 않습니다 . 왜냐하면 그것은 근본적으로 같은 독립변수를 이용하는 것이기 때문에 각각이 새로운 정보를 제공한다기 보다는 같은 정보를 다른 방식으로 가공하여 보여주는 것이므로, 서로 높은 상관관계(collinearity)를 맺을 가능성이 매우 높기 때문입니다.

또한, 이러한 지표를 트레이딩 이전에 미리 선택하고 거래 하는 것이 좋습니다. 즉, 자신의 생각에 확신을 불어넣기 위해서 지표를 추가적으로 사용하는 것은 좋지 않다는 것입니다. 왜냐하면 머릿속에 이미 정답을 정해놓고 그것을 설명하기 위해 합리화시키는 과정으로 빠질 가능성이 매우 높기 때문입니다. 주변에서 들리는 말에 휘둘리지 말고 기존에 선택한 지표를 믿고 따라가야 합니다.

만약, 지표를 최적화(optimization) 해야할 경우 과대적합(overfitting)의 문제가 발생 할 수 있습니다. 예를 들어, 전체 데이터에 대해서 최적화하고 그 데이터에 대해서 수익성을 검토할 경우, 당연히 수익성이 좋을 것입니다. 이것이 overfitting입니다. 사실 이러한 문제의 해결방법은 볼린저밴드의 내용에서는 조금 벗어나므로, 다른 문서를 참고해주실 바랍니다.

10) 매매방법1 : Breakout 매매법

본격적인 매매방법을 소개하기 앞서, 모든 매매방법을 적용할 필요도 없고 자신에게 잘 맞게 변형하여 사용하는 것이 좋다는 것을 알려드립니다. 또한, 위험-보상 비율(risk-reward ratio)를 설정하여 리스크 관리를 하는 것을 추천드립니다.

Breakout 매매법이란 보통은, 밴드 상단을 돌파했을 때 매수하고 밴드 하단을 돌파했을 때 매도하는 전략 이라고 알고있을 겁니다.

볼린저는 이러한 Breakout을 Squeeze가 발생한 이후 변동성이 확대될 RSI 지수와 MACD 으로 매수 매도 시점 알기 때 적용 하는 것을 추천합니다.
상승의 경우에는 특별한 문제가 없지만, 하강할 경우 팔았는데 반대로 가격이 급격히 상승하는 head fake가 발생 할 수 있습니다. 이러한 문제점은 다른 거래량과 같은 보조지표를 통해 어느정도 대비할 수 있다고는 합니다. 하지만, 개인적으로 횡보구간에서는 보유하지 않고 있다가, 상승 breakout 또는 head fake 발생 이후 상승하는 움직임을 보여줄 때 매수를 하는 것이 좋을 것으로 생각됩니다.

11) 매매방법 2 : Trend Following 매매법

Trend Following매매법은, 추세를 따라가면서 매매 하는 기법입니다.
이것은 squeeze와 같은 특수한 경우가 아닌 보통의 경우에 해당합니다.

추세를 따라가면서, 지표가 강세를 나타낼 때 사고 약세를 나타낼때 팝니다.
볼린저는 %b가 0.8이상이고, MFI가 80이상일 때 강세로 보고 사는것을 추천했으며,
%b가 0.2미만이고, MFI가 20미만일 때 약세로 보고 파는것을 추천했습니다.
또한 MFI이외에 parabolic SAR등과 같이 다른것들을 이용할 수도 있습니다.
이 때, 지표계산시 일(day)수는 band 계산시 일(day)수의 절반정도로 RSI 지수와 MACD 으로 매수 매도 시점 알기 설정하는것을 추천 하였습니다.

이에 대한 몇가지 추가적인 아이디어가 있습니다.

***강세임을 확인하고 샀음에도 불구하고, 이후 조정에 의해 다시 하락하는 현상이 종종 일어납니다.
이러한 점을 방지하기 위해, 첫번째 강세확인은 '경고'로서 받아 들이고 하락이후 다시 상승을 할 때 사는 방법도 있습니다.

***볼린저는 리스크관리를 위해 먼저, Fundamental Analysis를 RSI 지수와 MACD 으로 매수 매도 시점 알기 통해 후보들을 추려낸 뒤, 그것들을 가지고 Technical Analysis를 하여 최종적으로 매수/매도할 것을 결정하는 'Rational Analysis' 방법을 추천 하였습니다.

12) 매매방법 3 : Reversal 매매법

Reversal 매매법은, 추세가 전환되는 지점을 포착하여 매매하는 기법입니다.

이것은 앞선 포스팅 M, W패턴에서 설명하였듯이, 밴드의 상단/하단을 터치한 지점들을 비교하여, 가격의 흐름과 지표의 흐름이 반대의 방향을 나타내면 다이버전스(divergence)가 발생한것이고 추세가 전환되는것으로 판명 하여 매매하는 방법입니다. 또한, 추세의 전환을 포착하기 위해, 장단기 이동평균의 차이인 MACD나 VWMACD등을 이용하는 것도 추천하고 있습니다.

이것은 모든 가격의 부분을 비교할 필요 없이, 밴드를 터치한 부분끼리만 비교하면 되므로 간단하다는 장점이 있습니다.

투자기법 - 볼린저밴드(Bollinger band)(고급)

투자기법 - 볼린저밴드(Bollinger band)(심화3) 투자기법 - 볼린저밴드(Bollinger band)(심화2) 투자기법 - 볼린저밴드(Bollinger band)(심화1) 이번에는 저번에 이어서 볼린저 밴드의 심화내용을 다루어 보도록

[주식투자] 이동평균선, 골든크로스, 데드크로스에 대해서 알아보자

출생자수보다 사망자수가 많아지는 데드크로스가 발생했다는 기사

데드크로스라는 단어는 부정적인 지표가 긍정적인 지표를 넘어섰을때 쓰이는 단어 인데요. 인구지표에서 뿐만아니라 다른 곳에서도 많이 사용합니다.

주식에서도 데드크로스라는 단어를 쓰는데 주로 이동평균선에서 자주 나옵니다. (MACD라던지 RSI 등 차트지표에서도 자주 사용하고 재무지표에서도 가끔 씁니다. )

그럼 이동평균선과 골든크로스&데드크로스에 대해서 알아보겠습니다.

N 이동평균선 구하는 방법 = D 주가 + D-1 주가 + . D-N-1 주가 / N 으로 계산됩니다.

ex) 5일 이동평균선 = 금일 주가 + . + 4일 전 주가 / 5

주가이동평균선은 일정기간 동안의 주가를 산술 평균한 값인 주가이동평균을 차례로 연결해 만든 선으로, 주가의 평균치를 나타내는 지표가 된다 - 네이버 백과사전

계산하는 방법은 이렇다라는 것만 아시면 되고 차트에서 저절로 계산되니 직접계산할 일은 없습니다. HTS 없던 시절에는 이 정보 직접계산해서 모눈종이에 그리는 사람들도 있었다고 하더라구요.

아래는 네이버증권에서 캡쳐한 삼성전자 차트입니다.

5일 이동평균선(민트색), 20일 이동평균선(파란색) ,60일이동평균선(보라색), 120일 이동평균선(빨간색) 입니다.

5일 이동평균선은 해당날짜를 기준으로 5일 동안의 주가평균

20일 이동평균선은 해당날짜를 기준으로 20일 동안의 주가평균 . 60일. 120일. 입니다.

상승추세에서는 정배열이라고 하여서 5일 이동평균선이 가장 위에 올라오고 20일평균선이 그다음 60일 120일 순으로 정렬됩니다.

하락추세에는 역배열이라고 하여 5일 이동평균선이 가장 아래에 내려오고 20일 평균선이 그 다음 60일 120일 순이 됩니다.

상승했다가 하락했다가는 반복하게 되면 5일 이동평균선이 20일 이동평균선과 60일이동평균선 위아래로 올라갔다가 내려갔다가 하는 모습을 보이게 됩니다.

그리고 오른쪽 위의 보조지표를 누르면 설정을 변경할 수 있습니다.

이동평균선 MA1일 5로 설정되어 있는데 저걸 3으로 바꾸어서 3일 이동평균선으로 바꿀수도 있습니다. 남들 다쓰는 설정이 너무 흔해서 싫다거나 남들보다 좀더 빠른 신호를 얻고 싶을때 이동평균선을 줄여서 사용하기도 하고 반대의 경우도 가능합니다.

3일 이동평균으로 바꾼 차트 입니다.

마지막으로 골든크로스와 데드크로스에 대해서 알아 보겠습니다.

위의 그래프 기준으로 11월7일 부근에 3일 이동평균선이 20일 이동평균선을 돌파하는게 나오는데 짧은 이동평균선이 긴 이동평균선을 돌파하면 골든크로스라고 부르고 이를 매수 신호로 보고 매수합니다. 그리고 계속 보유하다가 2021년 1월 21일 쯤에 짧은 이동평균선이 긴이동평균선을 하향하면서 데드크로스가 나오네요. 매도 신호로 보고 매도를 하면됩니다.

그런데 이동평균선은 장중에 매매를 하게되면 그날 종가가 확정이 되지 않은 상태라서 이동평균선이 변하므로 잘못된 신호를 전달할 수 있습니다. 가령 장중에 꼬리를 달고 내려갈때 이동평균선도 같이 쳐져서 매도를 했는데 종가 기준으로 이동평균선이 확정이 되면 데드크로스가 아니었던 경우가 나올 수 있는 것이지요.

모든 차트지표가 그렇듯이 과거의 주가만을 가지고 매매를 하는 것이라서 골든크로스에서 매수를 했다고 좋은 결과만을 얻는 것은 압니다. 아래의 차트를 한번보시면

주가가 오르락 내리락 할때 골든크로스 데드크로스를 반복하면서 2달간 5번의 매수매도 신호를 보냅니다. 이렇게 매매를 하면 주가는 별로 오르지 않았거나 내렸는데 매수 매도를 반복하게 되므로 세금 및 수수료 손실이 합쳐져서 좌가 쪼그라 들게됩니다.

주식시장에 들어오지 얼마 되지 않았다면 이동평균선을 이용해서 소액으로 매매해보는 것도 추천합니다.

그런데 이동평균선으로 매수매도를 하게되면 상승장에서는 데드크로스가 발생하지 않으므로 아주 잘맞아 들어가고 횡보장에서는 수시로 골든크로스 데드크로스가 발생하므로 잘 안맞습니다. 폭락장에서는 매수신호가 안나오니까 매수할일이 없게되고요.


0 개 댓글

답장을 남겨주세요