O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

주가 정보 다루기.pdf

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Carregando em…3
×

Confira estes a seguir

1 de 115 Anúncio

Mais Conteúdo rRelacionado

Semelhante a 주가 정보 다루기.pdf (20)

Mais de wonyong hwang (16)

Anúncio

Mais recentes (20)

주가 정보 다루기.pdf

  1. 1. 주가정보 다루기 한국폴리텍대학교 서울강서캠퍼스 스마트금융과(김효관 교수, 황원용 교수)
  2. 2. 실습 과정 ◦ matplotlib 등 주요 라이브러리 소개 ◦ FinanceDataReader ◦ 종목 코드 수집 ◦ 수익률 계산 ◦ BeautifulSoup + Naver 금융을 이용한 주가 및 재무 정보 수집 ◦ 중간 연습문제 ◦ 정량 지표 정보 수집 ◦ 정성 지표 정보 수집
  3. 3. 사전 준비 ◦ 실습 소스 git clone git clone https://github.com/wonyongHwang/kopoStockModel.git ◦ PyCharm 준비
  4. 4. 1. 파이썬 주요 라이브러리 소개 구분 라이브러리 비고 시각화 Matplotlib 차트 시각화 지원 분석 NumPy 수치 데이터 조작 배열 데이터 핸들링 Pandas 고성능 데이터 조작 라이브러리 크롤링 BeautifulSoup Requests 웹 데이터 크롤링
  5. 5. 1-1. Matplotlib ◦ 그래프나 2차원 데이터 시각화용 라이브러리 ◦ 특정부분확대 등 그래프 조작 등 인터렉티브 차트
  6. 6. 1-2. NumPy ◦ 빠르고 효율적인 다차원 배열 객체 ◦ 배열 또는 배열간 연산 수행 ◦ 데이터 Read/Write ◦ 선형대수 계산, 난수발생기 Pandas는 뒤에서 계속 다룰 예정…
  7. 7. 1-3. 간단 실습 File -> Settings -> Interpreter에서 필요한 라이브러리 설치 - numpy - matplotlib source : https://github.com/wonyongHwang/kopoStockModel/blob/master/lecture/01%20matplotlib%20test.py
  8. 8. 1-3. 간단 실습
  9. 9. 용어 알아보기 • 미국시장에서는 종목을 식별하기 위해 영문알파벳 조합된 코드 야후(yahoo.com), 포브스(forbes.com) 같은 모든 경제 사이트에서 사용 • F (포드 자동차) • GE (제너럴 일렉트릭) • BAC (뱅크오브 아메리카) • APPL (Apple inc, 애플), GOOG(Google, 구글), MSFT (Microsoft, 마이크로소프트)
  10. 10. 용어 알아보기 • ^KS11: KOSPI composite index (거래소 지수) <- 증권거래소에 상장된 상장기업 주식 벤처회사를 제외한 주식들을 시가총액 가중평균방식을 통해 코스피에 상장된 전 주식을 평균화한 지수 • ^KQ11: KOSDAQ composite index (코스닥 지수) <- 국내 장외 주식 (벤처) KOSPI에 상장이 불가능한 벤처기업들을 시가총액 가중평균 방식으로 산출하여 평균화 • 종목코드에 .KS가 붙는다 예를들어 삼성전자의 심볼은 005930.KS
  11. 11. 용어 알아보기 • 시가총액: 회사가 발행한 전체 주식의 가치 (1만원 * 100주 = 100만원) • 수정주가 (Adjusted Closing Price): 주가는 자본을 마련하기위해 새로 주식을 발행하거나(유상증자) 기존의 주주에게 무료로 배포하는(무상증자) 행위 또는 기존의 보유주를 2,3배로 바꿔주기도한다 (액면변경) 이처럼 시시각각 변하는 상황에 과거의 주가를 지금의 주식수를 기준으로 바꾸어주는 것을 수정주가라고 한다. • 분할, 배당, 배분, 신주 발행이 반영된 주식 가격 데이터의 연속성을 보장하기 때문에 데이터 분석에는 “수정주가” 를 사용한다.
  12. 12. 2. FinanceDataReader • KRX Stock Symbol listings: 'KRX', 'KOSPI', 'KODAQ', 'KONEX’ • Global Stock Symbol listings: 'NASDAQ', 'NYSE', 'AMEX' and 'S&P500', 'SSE'(상해), 'SZSE'(심천), 'HKEX'(홍 • KRX delistings: 'KRX-DELISTING'(상장폐지종목), 'KRX-ADMINISTRATIVE' (관리종목) • ETF Symbol listings(for multiple countries): 'KR', 'US', 'JP’ • Stock price(KRX): '005930'(Samsung), '091990'(Celltrion Healthcare) ... • Stock price(Word wide): 'AAPL', 'AMZN', 'GOOG' ... (you can specify exchange(market) and symbol) • Indexes: 'KS11'(코스피지수), 'KQ11'(코스닥지수), 'DJI'(다우존스지수), 'IXIC'(나스닥지수), 'US500'(S&P 500지 • Exchanges: 'USD/KRX', 'USD/EUR', 'CNY/KRW' ... (조합가능한 화폐별 환율 데이터 일자별) • Cryptocurrency price data: 'BTC/USD' (Bitfinex), 'BTC/KRW' (Bithumb) https://github.com/FinanceData/FinanceDataReader
  13. 13. 2-1. FinanceDataReader를 활용한 주가정보 수집 ◦ File  Settings  Interpreter 에 finance-datareader, beautifulsoup4 추가
  14. 14. 2-2. FinanceDataReader를 활용한 주가정보 수집 ◦ 현재일 기준 [720일 이전 ~ 1일전]의 주가 정보(시가, 고가, 저가, 종가, 거래량, 변화율)를 수집 today = date.today() startday = date.today() - timedelta(720) yesterday = date.today() - timedelta(1) ◦ 종목번호와 함께 시작일/종료일을 FinanceDataReader 함수의 인자로 전달 SEC = web.DataReader("207940", startday, yesterday) ◦ 종가와 거래량을 Matplotlib로 시각화 plt.subplot(211) SEC["2020-05-06":"2022-05-06"]['Close'].plot(figsize=(16,4), style='b’) plt.subplot(212) SEC["2020-05-06":"2022-05-06"]["Volume"].plot(figsize=(16,4), style='g') source : https://github.com/wonyongHwang/kopoStockModel/blob/master/lecture/02%20sample%20test.py
  15. 15. 2-3. FinanceDataReader를 활용한 주가정보 수집
  16. 16. 2-4. FinanceDataReader를 활용한 주가정보 수집 Q1> KOSPI, DJI 차트를 출력하세요. Q2> 환율(USD/KRW) 차트를 출력하세요. Q3> 비트코인(BTC/KRW) 차트를 출력하세요.
  17. 17. 2-5. FinanceDataReader를 활용한 주가정보 수집 고가(high) 종가(close) 시가(open) 저가(low) 고가(high) 시가(open) 종가(close) 저가(low) Candle Chart 한국에서는 양봉이 빨간색, 음봉이 파란색 미국은 양봉을 초록색, 음봉을 빨간색으로 표시
  18. 18. 2-6. FinanceDataReader를 활용한 주가정보 수집 Candle Chart
  19. 19. 사이트: https://kind.krx.co.kr/corpgeneral/corpList.do?method=loadInitPage 3. 종목코드 수집 타겟사이트
  20. 20. 3. 종목코드 수집 source : https://github.com/wonyongHwang/kopoStockModel/blob/master/lecture/03.%20Stock%20Price%20Info%20and%20MA.ipynb 필요 변수 및 함수 정의
  21. 21. 3. 종목코드 수집 실행
  22. 22. 3. 종목코드 수집 종목코드 수집 Q1> 전체 종목코드와 종목명을 저장하는 코드를 작성 하세요. Q2> 전체 업종의 개수와 업종명을 분류하는 코드를 작성 하세요.
  23. 23. 3. 종목코드 수집 연습문제(특정 조건에 해당하는 종목코드 가져오기)
  24. 24. 단기 평균선이 장기 평균보다 가격이 높다는 말은 최근 에 가격성장폭이 커졌다는 뜻! 3. MA (이동평균) 계산과 GC/DC 그리기 source : https://github.com/wonyongHwang/kopoStockModel/blob/master/lecture/03.%20Stock%20Price%20Info%20and%20MA.ipynb
  25. 25. 3. MA (이동평균) 계산과 GC/DC 그리기 ① N일 이동평균 구하기 - 값이 NaN일 경우 최소 하나의 데이터로 평균으로 가정 ② 단기이평과 장기이평의 차이를 구함 - 차이가 + : Golden Cross - 차이가 - : Dead Cross
  26. 26. 3. MA (이동평균) 계산과 GC/DC 그리기 종가, 5MA, 20MA 거래량(Volume) GC/DC
  27. 27. 수익률 = 초기가격 (미래가격 – 초기가격) 투자한 자본에 대한 수익(혹은 손실) 의 비율 예) 100만원에 사서 150만원이 되면 수익률은 + 50% → (150-100) / 100 4. 주가 수익률 계산하기
  28. 28. 일반 수익률 = (미래가격 – 이전가격) / 이전가격 → 수익률 합과 최종 손실률이 달라진다 ln 미래가격/이전가격 → 최종 수익률과 수익률 합이 일치 (금융분야에서 주로 사용) 거래일 가격 일반수익률 계산법 로그수익률 계산법 1일 1,000 2일 1,500 50 (1500-1000)/1000 40.54 ln(1500/1000) 3일 800 -46.67 (800-1500)/1500 -62.86 ln(800/1500) 4일 600 -25 (600-800)/800 -28.76 ln(600/800) 5일 1,500 150 (1500-600)/600 91.62 ln(1500/600) 수익률합계 78% 128.33% 50-46.67-25+150 40.54% 40.54-62.86-28.76+91.62 최종수익률 50% 50% (1500-1000)/1000 40.54% ln(1500/1000) 4. 주가 수익률 계산하기
  29. 29. plt.figure(figsize=(15,9)) today = date.today() startday = date(2018,4,1) endday = date(2018,6,27) SEC = web.DataReader("207940", startday, endday) SEC = SEC[SEC['Volume'] != 0] SEC['Close'].head() # 1 씩 shift SEC['Close'].shift(1).head() # 수익률 계산 SEC['Rate'] = np.log( SEC['Close'].astype(float) / SEC['Close'].shift(1).astype(float)) SEC.head() 4. 주가 수익률 계산하기 source : https://github.com/wonyongHwang/kopoStockModel/blob/master/lecture/04%20price-earnings%20ratio.ipynb
  30. 30. SEC["Rate"].plot(figsize=(16,4)) plt.show() 4. 주가 수익률 계산하기
  31. 31. 5. 재무 정보 수집하기 from bs4 import BeautifulSoup url = 'https://finance.naver.com/item/main.nhn?code=035720' table_df_list = pd.read_html(url, encoding='euc-kr')
  32. 32. 5. 재무 정보 수집하기
  33. 33. 금융 시장 분석 기본 분석 기술 분석 정서 분석
  34. 34. • 재무제표, 주가와 손익 • 경기, 사업동향 분석 • 기술 분석을 위한 기초분석 단계 • 주관적이고 검증이 어렵다 금융 시장 분석 – 기본 분석 마켓상황 분석
  35. 35. • 과거 데이터 활용하여 추세 예측 • 과거데이터를 활용하여 추세선을 그리고 예측하는 작업 • 가격은 모든 정보가 반영된 종속 변수이다. • 가격은 일정한 추세로 움직인다. 금융 시장 분석 – 기술 분석 과거 가격과 거래량의 변화를 분석하여 예측
  36. 36. • 자연어 처리, 텍스트 분석등을 통해 감성분석 후 정보를 추출 • 투자자들의 감성정보를 의사결정에 활용 금융 시장 분석 – 정서 분석 투자 심리 분석
  37. 37. 기술 분석을 위 한 지표
  38. 38. 용어 정리 ◦ EPS (Earnings Per Share 주당 순이익) 당기순이익/발행주식수 예> EPS 4,165원 : 주식 1주가 4,165원의 이익을 창출 ◦ PER (Price Earning Ratio 주가수익비율) 현재주가 / EPS 예> 19.14배 : 79,700원 / 4,165원 -> 현재 회사의 이익 대비 주가가 19.14배 비싸다는 의미 업종에 따라 PER 평균이 다름 ◦ BPS(Book-value Per Share 주당 순자산) (총자산 - 총부채) / 발행 주식수 예> BPS 39,126원 : 회사 자산 처분시 1주당 39,126원의 가치가 있음 ◦ PBR(Price Book-value Ratio 주가순자산 비율) 현재주가/BPS 예> PBR 2.04배: 회사 자산 처분시 주당 39,126원을 받을 수 있는 주식이 그보다 2배 정도 높은 가격에 거래되고 있다는 의미
  39. 39. 용어 정리 ◦ PBR(주가순자산비율: Price Book-value Ratio) - 현재자산 / BPS - 낮을수록 건전성 ↑, 동종업계 타기업과 비교해 봐야 함 - 성장 가능성이 높을 경우 높은 수치를 나타낼 수 있기 때문에 보조적 판단 수단으로 사용해야 함 ◦ PER(주가순익비율: Price Earning Ratio) - 현재주가 / EPS
  40. 40. 로직 구성에 참고할 만한 정량 지표 예시 ◦ EPS(주당순이익: Earning Per Share) * 10 - 당기순이익 / 발행주식수 ◦ ROE * EPS ± X ◦ PER * EPS ◦ 유동비율 : 최소 200% 이상 ◦ 유보율(  (자본잉여금+이익잉여금)/납입자본금 * 100) ◦ MA120 G/C 한 종목 || MA60이 MA120을 3번 근접 및 우상향 ◦ EPS 지속 증가하는 경우 || EPS 5년 연평균 성장률이 우상향 ◦ 연평균 성장률 대비 PER(주가수익비율)이 낮은 기업 적정 주가 산출 참고식 * ROE(Return On Equity) : 자기자본이익율 당기순이익/자본총액
  41. 41. EPS * 10 = 5,777 * 10 = 57,770원 ROE * EPS = 15.21 * 5,777 = 87,868원 PER * EPS = 11.37 * 5,777 = 65,684원 로직 구성에 참고할 만한 정량 지표 예시
  42. 42. 조별과제
  43. 43. 주가 예측 과제 ◦ 판단 로직 (예측 기준, 매수/매도 기준) ◦ 수집 대상 및 방법 ◦ 예측 결과(Back Testing) - 예측 모델(로직)의 수익성 판단을 위한 시뮬레이션 및 결과출력
  44. 44. 정량 지표 수집 출처 : 네이버 금융(finance.naver.com)
  45. 45. 정량 지표 수집 http://dart.fss.or.kr/ https://www.data.go.kr
  46. 46. [참고] 퀀트 테스트 (인텔리퀀트社) 출처 : 인텔리퀀트(https://www.intelliquant.co.kr/)
  47. 47. 실시간 트레이딩 이베스트 Xing API를 활용한 실시간 트레이딩
  48. 48. DISCLAIMER source : https://github.com/wonyongHwang/KopoScalpingTrader ※ 주가 정보 실습 목적으로 모의 투자만 진행합니다. 재학 기간 중, 실습 소소코드를 이용한 실 투자를 금합니다.
  49. 49. 비대면 계좌 개설 https://www.ebestsec.co.kr/guide/eDirect/newid/GUJoinNewid0_01.jsp?left_menu_no=321&front_menu_no=1402&parent_menu_no=322
  50. 50. XING API 사용등록
  51. 51. XING API 다운로드
  52. 52. XING API 설치
  53. 53. 모의투자 참가신청 ◦ 실습 목적으로 모의투자만 진행 ◦ 학교 실습 과정 중 실 투자 금지
  54. 54. API 명세 확인 및 테스트 ◦ 접속서버는 “모의투자“ ◦ 공인인증 : 필요없음(실서버 접속시에만 사용)
  55. 55. API Test (1/2) ◦ Res 파일 다운로드
  56. 56. API Test (2/2) ◦ 시세 조회 ◦ 필드 및 데이터 확인
  57. 57. Anaconda 32bit 설치(1/2) https://www.anaconda.com/products/distribution ※ 설치시 기 설치한 Anaconda 64bit 버전의 경로(C:ProgramDataAnaconda3)와 다른 경로에 설치
  58. 58. Anaconda 32bit 설치(2/2) ※ 체크 해제
  59. 59. 실습 소스파일 준비 ◦ git clone https://github.com/wonyongHwang/KopoScalpingTrader.git
  60. 60. 프로젝트 준비 ※ Anaconda 32 bit ※ 실습 소스 루트 디렉토리 ※ Anaconda 32 bit
  61. 61. ◦ 주요 라이브러리 확인 프로젝트 준비
  62. 62. 계좌 로그인 테스트 source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/pre parations/loginTest.py 이벤트 처리 클래스 로그인 호출(+ 이벤트처리 클래스 콜백등록) 로그인 응답시까지 이벤트 대기 루프
  63. 63. 주식종목조회(t8430) ※ 매우 주의!!!
  64. 64. 주식종목조회(t8430) source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/basicApiTest.py
  65. 65. 현재가 조회(t1102)
  66. 66. 현재가 조회(t1102)
  67. 67. 주식 차트 정보(t8413)
  68. 68. 주식 차트 정보(t8413)
  69. 69. 매매 체결의 법칙 ◦ 가격 우선 (매수는 높은 가격, 매도는 낮은 가격 우선) ◦ 시간 우선 ◦ 수량 우선 ◦ 가격 > 시간 > 수량
  70. 70. 호가 보는 방법 ◦ 매수 잔량 ◦ 매도 잔량 ◦ 총 매수 잔량 ◦ 총 매도 잔량
  71. 71. 호가 보는 방법
  72. 72. 거래 시간과 종류 출처 : https://securities.miraeasset.com/public/mw/guide/html/tradinghours.html
  73. 73. 호가 단위 출처 : https://md2biz.tistory.com/515
  74. 74. ◦ 일정시간 동안 거래를 모아서 적정가격을 자동으로 정함 ◦ 거래 폭증에 따른 가격 왜곡 현상을 예방하기 위하여 장 시작 전 , 마감 전 등 특정 시점에 적용 ◦ 변동성 완화장치 발동, 써킷 브레이커, 단기과열 지정, 투자위험종목 지정에도 적용 ◦ 동시호가가 상한가 또는 하한가일 경우는 정량 배분 기준에 따라 수량을 배분 66,600 66,500 66,400 66,300 1,000 400 1,000 1,000 Q1> 동시호가 가격은? 동시호가
  75. 75. 66,600 66,500 66,400 66,300 66,300 66,200 500 1,000 1,000 1,500 1,500 2,000 66,600 66,500 66,400 66,300 66,300 66,200 0 1,000 1,000 1,500 1,000 2,000 Q2> 동시호가 가격은? 동시호가
  76. 76. 66,600 66,500 66,400 66,300 66,200 66,100 0 0 1,000 1,500 0 2,000 66,600 66,500 66,400 66,300 66,200 66,100 0 0 1,000 0 0 500 동시호가
  77. 77. 66,600 66,500 66,400 66,300 66,200 66,100 0 0 1,000 0 0 500 직전 가격(전일 종가 또는 장종료전 체결가)으로 정함 동시호가
  78. 78. 체결 강도 체결강도 = 매수체결량 매도체결량 X 100
  79. 79. 주문 종류 ◦ 지정가(보통가) : 원하는 가격을 지정 ◦ 시장가 : 매도시 매수1호가 + α, 매수시 매도1호가 + α 에 체결 자동화 로직에서 시장가 주문시 슬리피지(Slippage) 발생에 유의 ◦ 조건부지정가 : 정규장에서 지정가로 체결하고, 마감시까지 미 성립된 거래에 대해서는 [장마감 동시호가]에 시장가로 자동 체결 ◦ 최유리지정가 : 매도시 매수1호가 체결시키고 남은 물량은 매도1호가 주문 매수시 매도1호가 체결시키고 남은 물량은 매수1호가 주문 ◦ 최우선지정가 : 매도시 매도1호가에 전량 주문 예약 매수시 매수1호가에 전량 주문 예약 66,600 66,500 66,400 66,300 66,200 66,100
  80. 80. 수수료와 거래세 출처 : https://namu.wiki/w/%EC%A6%9D%EA%B6%8C%EA%B1%B0%EB%9E%98%EC%84%B8 ※ 증권사별, 가입경로별 수수료에 차이가 있음
  81. 81. 데이터베이스 준비 ◦ 사전 설치 : MySql ◦ 스키마 준비 : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/Database/DB%20Schema.sql
  82. 82. 데이터베이스 준비 Run “pip install pymysql” at anaconda Prompt Result Check Run Test Code
  83. 83. Xing API 공통 클래스로 리팩토링 ◦ https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/orderManager.py
  84. 84. 기본 환경 준비 ◦ 모의투자 전용 HTS 다운로드
  85. 85. 기본 환경 준비 ◦ 모의투자 전용 접속 및 계좌비밀번호 확인
  86. 86. 계좌 잔고 조회(t0424) import orderManager orderManager.Login(id=accountId, pwd=password, cert=pkpwd) orderInstance = orderManager.t0424(accountNumber, accountPwd) source: https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/accountCheck.py
  87. 87. 매수 주문(CSPAT00600) source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/buyTest.py
  88. 88. [INFO] 포폴# 1 D2추정: 3106022 추정순자산 9921095 매수시도 종목코드: 005750 수량: 568 가격: 5460 CSPAT00600 C:eBESTxingAPIResCSPAT00600.res OnReceiveMessage : 0 01264 모의투자 귀 계좌의 금일 주문증거금이 매수가능금액을 초과합니다. OnReceiveMessage : 0 00000 조회가 완료되었습니다. OnReceiveData : t0424 CSPAQ12200 C:eBESTxingAPIResCSPAQ12200.res OnReceiveMessage : 0 00136 모의투자 조회가 완료되었습니다. OnReceiveData : CSPAQ12200 예수금(D2) : -557326 추정순자산 : 9891806 [INFO] 포폴# -1 D2추정: -557326 추정순자산 9891806 매수시도 종목코드: 004835 수량: 39 가격: 14150 CSPAT00600 C:eBESTxingAPIResCSPAT00600.res OnReceiveMessage : 0 01264 모의투자 귀 계좌의 금일 주문증거금이 매수가능금액을 초과합니다. 매수 주문 로직 구현시 고려 사항 매수前 D2 예수금 확인은 기본 + 현재 미체결된 종목들의 매수금액까지 D2예수금에 先 반영해야 함
  89. 89. 매도 주문(CSPAT00600) source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/sellTest.py
  90. 90. 선 매도주문이 미체결 상태인 경우에 발생 기존 매도주문 취소후 재 주문 해야 함 매도가능수량이 조회가 안되는 경우
  91. 91. ◦ 시스템 제약 확인 - 로직 <<<<<< 시스템 제약 - 280개 종목을 3~4가지 조건으로 검사할 경우 대략 40분 소요 - 시스템 제약을 우선 고려해야 함 - 전략적으로 조건을 정하고, 스캔 범위를 좁혀야 함 시스템 제약 확인은 필수
  92. 92. 슬리피지(Slippage)도 고려 대상 출처 : https://minsuksung-ai.tistory.com/9
  93. 93. ◦ 요청하는 시각에 따라 다른 데이터를 받을 수 있음에 주의한다. 0 60 요청 시점에 따른 데이터 수신 체결강도 127.49 체결강도 83.19
  94. 94. 매수시 RSI, RSI MA 매수/매도 시각 수익구간 수익률 : 3.35%, 기간 : 1시간 # 전략 검증 사례 1
  95. 95. 수익구간 매수/매도 시각 수익률 : 0.54 %, 기간 : 2시간 # 전략 검증 사례 2
  96. 96. 실시간 트레이딩 TA를 이용한 각종 지표 도출
  97. 97. TA Library 설치 ◦ Technical Analysis 라이브러리 ◦ 금융 시장 데이터의 기술적 분석을 수행 ◦ 공식 홈페이지 - http://ta-lib.org/ - https://mrjbq7.github.io/ta-lib/ 설치 - https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib
  98. 98. mpl finance 라이브러리 설치 ◦ 캔들 차트 등 주가 관련 차트 시각화 ◦ pip install mplfinance
  99. 99. ADX, RSI, OBV 계산하기 source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/talibTest.py taadx = ta.ADX(df['고가'], df['저가'], df['종가'], 9) taadxSig = ta.MA(taadx, timeperiod=9) taadx = np.asarray(taadx) taadxSig = np.asarray(taadxSig) rsi9 = ta.RSI(np.asarray(df['종가']), 9) rsi9 = rsi9[~np.isnan(rsi9)] # remove nan if rsi9.size == 0: print("rsi size exception") simpleMA9 = ta.MA(rsi9, timeperiod=9) obv = ta.OBV(np.asarray(df['종가'], dtype = np.double), np.asarray(df['거래량'], dtype = np.double)) obvSignal = ta.MA(obv, timeperiod=9)
  100. 100. ADX, RSI, OBV, Candle Chart 그리기 source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/talibTest.py
  101. 101. ADX(average directional index) - 평균 방향 지수 - 상승 또는 하락하는 추세의 강도를 측정 (상승인지 하락인지는 타 지표를 통해 확인 필요) - 횡보 국면 : 0 에 수렴 reference : https://www.hi-ib.com/systemtrade/st02090803view04.jsp image source : https://www.investopedia.com/articles/trading/07/adx-trend-indicator.asp
  102. 102. ADX(average directional index) image source : https://www.investopedia.com/articles/trading/07/adx-trend-indicator.asp
  103. 103. RSI(Relative Strength Index) ◦ 상대 강도 지수 ◦ 매도세 <-> 매수세 0 ~ 100 ◦ 과매도, 과매수 구간 30, 70 20, 80 ◦ 지표 기간(Time Span)이 짧아질 수록 민감하게 반응 reference : https://ko.wikipedia.org/wiki/RSI_(%ED%88%AC%EC%9E%90%EC%A7%80%ED%91%9C) image resource : https://www.investopedia.com/terms/r/rsi.asp
  104. 104. OBV(On Balance Volume) ◦ 거래량은 항상 주가에 선행한다는 것을 전제로 주가의 변동을 분석하는 기법 ◦ 매집 또는 분산 시기 판단에 참고 ◦ 해당 종가 상승 : OBV = 이전 OBV + 해당 거래량 ◦ 행당 종가 하락 : OBV = 이전 OBV – 해당 거래량 reference : https://www.hi-ib.com/systemtrade/st020908view04.jsp
  105. 105. MACD(Moving Average Convergence/Divergence) ◦ 단기 이동평균선과 장기 이동평균선이 상호 수렴 또는 발산을 반복하는 원리를 이용하여 추세 판단 ◦ MACD : 단기 이평 – 장기 이평 ◦ MACD Signal = n기간 동안의 MACD 평균 단기 이평과 장기 이평의 괴리가 큰 지점 파악 - MACD와 Signal 골든 크로스 : 매수 - MACD와 Signal 데드 크로스 : 매도 ◦ MACD = EMA (단기) -EMA (중기) image source : https://www.investopedia.com/terms/m/macd.asp
  106. 106. MACD(Moving Average Convergence/Divergence) macd, macdsignal, macdhist = ta.MACD(df['종가'], fastperiod=12, slowperiod=26, signalperiod=9) macd = macd[~np.isnan(macd)] macdsignal = macdsignal[~np.isnan(macdsignal)] macdhist = macdhist[~np.isnan(macdhist)] source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/talibTest.py
  107. 107. Bollinger Band https://ko.wikipedia.org/wiki/%EB%B3%BC%EB%A6%B0%EC%A0%80_%EB%B0%B4%EB%93%9C 중심선 : N 기간 동안의 이동평균 상단선 : 중심선 + 표준편차(3σ) 하단선 : 중심선 + 표준편차(3σ)
  108. 108. Bollinger Band upper, middle, low = ta.BBANDS(df['종가'], 20, 3, 3) # 3 sigma upper = np.asarray(upper) middle = np.asarray(middle) low = np.array(low) source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/talibTest.py
  109. 109. stochastic fast ◦ 주가의 변동을 기반한 분석지표 ◦ 특정 기간 가격등락의 중심으로 가격이 회귀하려는 특성을 활용한 지표 image resource : https://www.investopedia.com/terms/s/stochasticoscillator.asp
  110. 110. ◦ %K : 특정 기간 동안 현재의 가격 위치 ◦ %D : %K의 이동평균 stochastic fast
  111. 111. stochastic fast fastk, fastd = ta.STOCHF(high=df['고가'], low=df['저가'], close=df['종가'], fastk_period=12, fastd_period=3, fastd_matype=0) # SMA fastk = fastk[~np.isnan(fastk)] fastd = fastd[~np.isnan(fastd)] source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/talibTest.py
  112. 112. stochastic slow ◦ stochastic fast 가 가격변동에 민감 반응하는 부분을 완화시킨 지표 ◦ stochastic slow %K = stochastic fast %D ◦ stochastic slow %D = stochastic slow %K의 이동평균
  113. 113. stochastic slow source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/talibTest.py slowk, slowd = ta.STOCH(high=df['고가'], low=df['저가'], close=df['종가'], fastk_period=12, slowk_period=3, slowk_matype=0,slowd_period=3,slowd_matype=0) slowk = slowk[~np.isnan(slowk)] slowd = slowd[~np.isnan(slowd)]
  114. 114. CCI(COMMODITY CHANNEL INDEX) ◦ 상품 가격의 계절성, 주기성을 확인하기 위해 도출된 지표 ◦ CCI의 값이 100을 넘으면 과도매수로 보고 -100이하로 나타나면 과매도 cci = ta.CCI(high=df['고가'], low=df['저가'], close=df['종가'],timeperiod=14) cciSig = ta.MA(cci, timeperiod=9) cci = cci[~np.isnan(cci)] cciSig = cciSig[~np.isnan(cciSig)] source : https://github.com/wonyongHwang/KopoScalpingTrader/blob/main/preparations/talibTest.py
  115. 115. 감사합니다.

×