주식 자동매매 시스템

파이썬을 이용한 주식 자동매매 시스템

이미지
파이썬을 이용한 주식 자동매매 시스템 INDEX 환경구축 키움증권 API - 연결테스트 키움증권 API - 계좌정보 조회 키움증권 API - 주문 키움증권 API - 종목정보 가져오기 포트폴리오 - 종목, 업종별 자산 포트폴리오 한국투자증권 API API reference 키움 OpenAPI+ 개발가이드 한국투자증권 OpenAPI 다운로드 및 가이드 Design https://www.design-seeds.com/in-nature/succulents/cacti-color-2/ https://create.piktochart.com/dashboard

파이썬을 이용한 주식 자동매매 시스템4 - 주문

파이썬을 이용한 주식 자동매매 시스템 - 주문 SendOrder 함수를 통해 주문을 전송하고, OnReceiveChejanData라는 이벤트핸들러에서 GetChejanData라는 메서드를 호출해 체결된 데이터를 얻어오면 된다. 주식 주문 Tr LONG SendOrder( BSTR sRQName, BSTR sScreenNo, BSTR sAccNo, LONG nOrderType, BSTR sCode, LONG nQty, LONG nPrice, BSTR sHogaGb, BSTR sOrgOrderNo) def send_order(self, rqname, screen_no, acc_no, order_type, code, quantity, price, hoga, order_no): self.dynamicCall("SendOrder(QString, QString, QString, int, QString, int, int, QString, QString)", [rqname, screen_no, acc_no, order_type, code, quantity, price, hoga, order_no]) 체결 이벤트 핸들러 OnReceiveChejanData에서는, 아래와 같은 입력값이 주어진다. sGubun – 체결구분 – 0: 주문체결통보, 1: 국내주식 잔고통보, 4: 파생상품 잔고통보 nItemCnt - 아이템갯수 sFidList – 데이터리스트 - 데이터 구분은 ‘;’ 이다. def _set_signal_slots(self): self.OnReceiveChejanData.connect(self._receive_chejan_data) def _receive_chejan_data(self, gubun, item_cnt, fid_list): print(gubun) print(self.get_chejan_data(9203))

파이썬을 이용한 주식 자동매매 시스템 3 - 계좌정보 조회

이미지
키움 API의 기본적인 통신 'CommRqData'라는 Method를 통해 데이터를 송신하고,  'OnReceiveTrData'를 통해 데이터를 받아와 처리하는 방식이다.  LONG CommRqData(BSTR sRQName, BSTR sTrCode, long nPrevNext, BSTR sScreenNo) sRQName – 사용자구분 명  sTrCode - Tran명 입력  nPrevNext - 0:조회, 2:연속  sScreenNo - 4자리의 화면번호  void OnReceiveTrData(LPCTSTR sScrNo, LPCTSTR sRQName, LPCTSTR sTrCode,LPCTSTR sRecordName, LPCTSTR sPreNext, LONG nDataLength, LPCTSTR sErrorCode, LPCTSTR sMessage, LPCTSTR sSplmMsg) sScrNo – 화면번호  sRQName – 사용자구분 명  sTrCode – Tran 명  sRecordName – Record 명  대부분의 TR 통신은 위 두개의 함수로 조회하고 받아볼 수 있다. 파이썬으로 구현하기 위해 이 전에 작성했던 KiwoomTrade class에 아래 함수들을 추가 했다. CommRqData def set_input_value(self, id, value): self.dynamicCall("SetInputValue(QString, QString)", id, value) def comm_rq_data(self, rqname, trcode, next, screen_no): self.dynamicCall("CommRqData(QString, QString, int, QString)", rqname, trcode, next, screen_no) self.tr_event_loop = QEventLoop() self.

파이썬을 이용한 주식 자동매매 시스템

이미지
파이썬을 이용한 주식 자동매매 시스템 INDEX 환경구축 키움증권 API - 연결테스트 키움증권 API - 계좌정보 조회 키움증권 API - 주문 키움증권 API - 종목정보 가져오기 포트폴리오 - 종목, 업종별 자산 포트폴리오 한국투자증권 API API reference 키움 OpenAPI+ 개발가이드 한국투자증권 OpenAPI 다운로드 및 가이드 Design https://www.design-seeds.com/in-nature/succulents/cacti-color-2/ https://create.piktochart.com/dashboard

파이썬을 이용한 주식 자동매매 시스템 2 - 연결테스트

이미지
연결, 로그인 테스트 먼저 키움API를 사용하여 HTS 시스템에 연결, 로그인하는 과정이 필요하다. * 설치해두었던 KOAStudioSA.exe 파일을 실행시켜 먼저 버전처리 작업을 해주어야 정상적으로 연결이된다. 로그인 자동화를 위해 작업표시줄에서 계좌비밀번호 저장을 눌러 자동로그인 설정을 해주어야 한다.  버전처리를 위해 일주일에 한번정도 수동 로그인을 해주어야 하는 것 같다. OCX방식의 API를 파이썬에서 사용하기 위해서는 PyQt5가 필요하다. pip install로 설치 후, 'QAxWidget' Class를 상속받아 만드는 방식이 가장 편리하다. 키움증권HTS 연결 테스트를 위한 가장 기본이되는 코드이다.  class KiwoomTrade(QAxWidget): def __init__(self): super().__init__() self._create_kiwoom_instance() self._set_signal_slots() def _create_kiwoom_instance(self): self.setControl("KHOPENAPI.KHOpenAPICtrl.1") def _set_signal_slots(self): self.OnEventConnect.connect(self._event_connect) self.OnReceiveTrData.connect(self._receive_tr_data) def comm_connect(self): self.dynamicCall("CommConnect()") self.login_event_loop = QEventLoop() self.login_event_loop.exec_() def _event_connect(self, err_code): if err_code == 0:

파이썬을 이용한 주식 자동매매 시스템 1 - 환경구축

이미지
준비단계 파이썬을 이용한 주식 자동매매 시스템 환경 구축을 위해서는 크게 파이썬과 증권사 API가 필요하다.  1. 파이썬 작업을 스케쥴링해서 자동으로 주식을 매수/매도 하도록 한다. 매수/매도하는 전략 또한 파이썬을 통해 구현한다. 2. 증권사 API 증권사에서 제공하는 API를 설치하여 python에서 로그인, 매수/매도 등 작업을 할 수 있도록 환경을 구축한다. 환경구축을 시작하기에 앞서, 증권사를 선택해야 한다. 증권사에서 제공하는 API는 크게 OCX, COM, DLL 방식 이 있는데 잘 정리된 글을 발견해 증권사 선택에 참고하면 좋을 것 같다.  파이썬으로 개발하기엔 COM 방식이 가장 편리한 것 같다. OCX 의 경우 PyQt5를 이용해야해서 복잡하다. 우선 대신증권계좌를 개설하기 귀찮아서 키움증권(OCX) 방식으로 개발을 시작하게 됐다. 파이썬, 증권사 API 설치 및 환경 설정 증권사 API 키움증권 파이썬 1. 파이썬 설치 3.8 (32bit)  Creon(대신투자증권)은 32bit 밖에 지원하지 않기 때문에, 32bit로 설치했다.  2. 파이썬 모듈 설치 pip install pywinauto pip install pandas 3. 참고한 코드 파이썬 주식 투자 자동화 - 조코딩 파이썬 증권 데이터 분석 github W/A - com/ocx 방식 키움증권용, 대신투자증권용 api를 전부 개발하려고 하다보니,  pywinauto와 PyQt5를 둘다 import해서 사용하고 있었는데, 그로인한 오류가 발생했다. QWindowsContext: OleInitialize() failed:  "COM error 0x80010106 RPC_E_CHANGED_MODE (Unknown error 0x080010106)" 내용만 보면, 발생 원인을 짐작하기 어려운데 두 모듈을 동시에 import하면 발생하는 error이다. 아래 내용을 참고 해서 수정하면 된다. https://swlock.blogspot.com/2020/07/q

안드로이드 아키텍쳐

이미지
안드로이드 앱을 개발을 위해 참고하기 좋은 아키텍쳐 샘플들을 모아둔 github이다.    https://github.com/android/architecture-samples Android Studio에서 sample을 실행시키기 위해서는, git clone 후 branch를 이동해 root directory를 오픈하면된다. MVP , MVVM architecture를 기반으로한 다양한 아키텍쳐 sample들이 있다. usecases b ranch usecases branch에는, Kotlin으로 작성된 architecture sample들이 있다. ViewModel LiveData Data Binding Navigation Room

영어공부하기 좋은 사이트

https://breakingnewsenglish.com/ http://www.manythings.org/ https://www.coursera.org/?authMode=signup https://youtu.be/kzEsyJYkLHY Please complete the following grammar quiz about conjunctions. Please remember to check your score!!!!!!! https://www.myenglishpages.com/site_php_files/grammar-exercise-conjunctions-and-but-or.php

R에서 통계분석 데이터 이용하기 (foreign package)

R에서 통계분석 데이터 이용하기  foreign 패키지 SPSS, SAS, STATA 등 통계분석 소프트웨어의 파일을 불러오기 위해서 'foreign' 패키지를 이용한다. install.packages('foreign') library(foreign)      # SPSS 파일 불러오기 library(dplyr)        # 전처리 library(ggplot2)    # 시각화 library(readxl)      # 엑셀 파일 불러오기 # SPSS 파일을 Dataframe으로 가져온다 raw_welfare <- read.spss(file = 'Koweps_hpc10_2015_beta1.sav', to.data.frame = T) # 복사본을 만든다 welfare <- raw_welfare # colume에 대한 정보 분석 str(welfare) # colume 명 변경 welfare <- rename(welfare,                   sex = h10_g3,                   birth = h10_g4,                   marriage = h10_g10,                   religion = h10_g11,                   income = p1002_8aq1,                   code_job = h10_eco9,                   code_region = h10_reg7                   ) # 성별 항목 이름 부여 sex : 1 -> male 2 -> female > welfare$sex <- ifelse(welfare$sex == 1, 'male', 'female') > table(welfare$sex) ## female male ## 9086 7578 qplot(welfare$sex

[R 함수] sqldf 사용 방법

이미지
How to use 'sqldf' function sqldf 는 R에서 sql 문법을 사용할 수 있도록 해주는 package이다. 1. Libarary load library(ggplot2) library(sqldf) mpg 데이터를 사용하기 위해 ggplot2 라이브러리를 로드한다. sqldf 함수를 사용하기 위해 sqldf 라이브러리를 로드한다. mympg <- sqldf('SELECT *, (cty+hwy)/2 AS total FROM mpg') mympg2 <- sqldf('SELECT total,                 CASE                 WHEN total > 20                 THEN "PASS"                 ELSE "FAIL"                 END AS "total2"                 FROM mympg') mympg2 <- sqldf('SELECT total,                 CASE                 WHEN total > 20                 THEN "PASS"                 ELSE "FAIL"                 END AS "total2"                 FROM mympg') mympg3 <- sqldf('SELECT total,                 CASE                 WHEN total > 30                 THEN "A"                 WHEN total > 20                 THEN "B&q

make와 Makefile

이미지
make란 make는 Program을 유지하는데 필요한 Utility이다. make 유틸리티는 프로그램이 커져서 파일들이 분리되어 있을 때, 어떤 파일들이 다시 컴파일 되어야 하는지 결정하고 컴파일하는 명령들을 자동으로 실행해준다. 프로그램 개발자는 make가 자동으로 컴파일하고 관리할 수 있도록 'Makefile'을 작성해야 한다.  make 는 cmd 창에서 make 명령을 실행하면 된다. 쉘 명령으로 실행 가능한 컴파일러는 make를 사용할 수 있다. GNU make는 파일명이 'GNUmakefile, Makefile, makefile'로 되어있으면 make가 찾아서 실행할 수 있다. 일반적으로는 'Makefile'을 추천한다. 어떤 파일을 어떻게 컴파일 할지 제어하기 위해서는 make 명령에 parameter들을 사용하면 된다. Makefile 'Makefile'은 make가 이해할 수 있도록 쉘 스크립트 언어처럼 되어 있다. Makefile에는 결과 파일 생성을 위해서 프로그램안에 있는 파일들간의 관계, 파일을 컴파일하는 명령어 등을 기술해줘야 한다. make의 필요성 프로그램 개발 시 여러 개의 파일로 나누어 개발을 하게되면, 파일들이 서로 관계를 갖고 있기 때문에 어떤 파일을 변경하면 그걸 이용하는 다른 파일도 새로 컴파일 되어야 한다. 이렇게 컴파일이 필요한 것과 아닌 것을 관리해준다는 장점이 있다. <ex> 아래 예제를 보면, write.c, read.c 파일이 io.h 파일을 include하고 있다. 컴파일을 하면 test.exe가 생성된다. 그 후 io.h 파일에 수정사항이 있을 경우, 모든 파일을 재컴파일 할 필요가 없다. io.h 파일과 의존관계에 있는 파일들만 재컴파일 하면 변경이 적용된 test.exe 가 생성된다.      Makefile 기본 작성법 Targets : Dependencies..