라벨이 Develop인 게시물 표시

주식 자동매매 시스템

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

이미지
파이썬을 이용한 주식 자동매매 시스템 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

Batch script에서 문자열 string을 큰따옴표(“”) 안에 쓰는 이유

Batch script에서 문자열 표현방법 배치 스크립트에서는 큰따옴표("")를 사용하거나 사용하지 않는 것에 대한 차이가 일반적으로 없습니다. 단, 문자열에 특수 문자나 공백이 없는 경우에는 두 가지 형태 모두 배치 해석기에 의해 문자열 리터럴로 해석됩니다. 큰따옴표를 꼭 사용해야하는 경우 배치 스크립트에서 큰따옴표는 공백이 포함된 문자열이나 선행/후행 공백을 보존해야 하는 문자열, 이스케이프 처리해야 하는 특수 문자를 포함하는 문자열과 같은 경우에 주로 사용됩니다.  첫 번째 답변을 번역하면 다음과 같습니다: 배치 스크립트에서는 큰따옴표("")를 사용하거나 사용하지 않는 것에 대한 차이가 일반적으로 없습니다. 단, 문자열에 특수 문자나 공백이 없는 경우에는 두 가지 형태 모두 배치 해석기에 의해 문자열 리터럴로 해석됩니다. 예를 들어, 다음과 같은 배치 스크립트를 고려해 봅시다: ```batch @echo off set myString=Hello, World! echo %myString% 이 스크립트에서 "Hello, World!" 문자열이 큰따옴표 없이 `%myString%` 변수에 할당됩니다. `echo` 명령이 실행될 때, 어떠한 문제 없이 "Hello, World!" 문자열이 출력됩니다. 그러나 큰따옴표 사용이 필요한 경우도 있습니다. 다음은 그 몇 가지 예입니다: 1. 공백이 포함된 문자열 처리: 문자열에 공백이 포함된 경우, 공백이 하나의 단위로 취급되도록 큰따옴표로 감싸야 합니다.  예를 들어: batch @echo off set myString="Hello, World!" echo %myString% 이 경우 출력에는 큰따옴표가 포함됩니다: "Hello, World!". 2. 선행 또는 후행 공백 보존: 문자열의 선행 또는 후행 공백을 보존해야 하는 경우, 전체 문자열을 큰따옴표로 감싸면 됩니다.  예를 들어: batc

Refactoring 참고 사이트

Refactoring 참고 사이트 Refactoring https://refactoring.com/catalog/ Refactoring 2nd Edtion을 기반으로 한 온라인 카탈로그이다. 작가가 직접 책에 있는 내용을 공유하기 위해 쓴 글로  다양한 기법에 대한 스케치와 예제 코드(java)가 있다. (+): 스케치로 개념을 이미지화 해서, 내용을 이해하기 수월하다. (-): 기법에 대한 Description이 없고 스케치와 코드만 있다 Refactoring, Design Pattern https://refactoring.guru/  리팩토링, 디자인 패턴, SOLID 원칙 및 기타 스마트 프로그래밍 주제에 대해 알아야 할 모든 정보를 얻을 수 있으며,  java, C#, php, python, typescript 등의 언어로 예제 코드를 지원한다. 리팩토링 기법에 대해 아래와 같은 순서로 설명이 되어 있다. Problem > Solution Why Refactor Benefits When Not to Use How to Refactor (+): Refactoring을 위한 방법을 순차적으로 친절하게 설명해준다. (+): 다양한 언어의 예제코드가 지원된다.  SourceMaking https://sourcemaking.com/ 디자인 패턴, 리팩토링에 대한 정보를 얻을 수 있으며, 위 사이트와 거의 유사하다. Signs and Symptoms Reasons for the Problem Treatment Payoff Performance (+): 다양한 문제에 대한 해결 방식과 payoff (-): 예제 코드가 없다

ERD 설계하기 좋은 Web Site

이미지
ERD Database 설계, ERD (Entity–relationship model) 설계 및 Visualization하기 유용한 사이트 aquerytool 로그인을 하지 않고 ERD를 만들어서 사진, excel로 저장할 수 있다. MySQL 등으로 저장하기 위해서는 로그인이 필요하다. UI가 간편해서 사용하기 쉽다. table간의 연결 관계는 FK를 drag&drop 해서 설정할 수 있다. dbdiagram 로그인이 필요하다.(google, github) Diagram을 직접 만들기엔 interface가 어렵다. MySQL, PostgreSQL, rails 등 만들어 둔 database를 import해서 볼 수 있다. erdcloud 로그인이 필요하다.(google, github) 마찬가지로 database를 import해서 볼 수도 있고, 직접 만들 수도 있다.

파이썬을 이용한 주식 자동매매 시스템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

Install Hive

이미지
1. MariaDB 설치 (Install) MariaDB installation file download http://www.mariadb.org/ 다운로드 폴더에 mariaDB 설치파일 다운 MariaDB-10.0.15-centos7_0-x86_64-client.rpm MariaDB-10.0.15-centos7_0-x86_64-common.rpm MariaDB-10.0.15-centos7_0-x86_64-server.rpm mariadb-java-client-1.3.5.jar 압축풀기, 설치하기 # cd 다운로드/ # yum -y remove mariadb-libs # yum -y localinstall Maria* Hive library 넣어주기 # mv mariadb-java-client-1.3.5.jar /usr/local/hive-1.0.1/lib HIVE가 접근할 수 있는 hive 계정 생성 # systemctl restart mysql # systemctl status mysql 서비스 상시가동 # chkconfig mysql on # mysqladmin -u root password '111111' # mysql -u root -p MariaDB [(none)]> use mysql hive 계정 권한 변경 localhost 에서 들어오는 모든 접근에 hive 계정 권한을 열어준다 MariaDB [mysql]> grant all privileges on *.* to hive@'localhost' identified by '111111'; 모든ip에서 들어오는 접근에 hive 계정 권한을 주겠다. MariaDB [mysql]> grant all privileges on *.* to hive@'%' identified by '111111'; Hive 계정에서 사용할 database 생성 MariaDB [mysql]> create databas

Start Developer blog

이미지
Start Developer blog 1. highlighting souce code with javascript ref :  highlightjs 테마(Template)에 HTML 편집에서 <head> 부분에 script 추가 <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/ default .min.css"> <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script> <script>hljs.initHighlightingOnLoad();</script> </link> default.min.css 에 원하는 style로 코드 변경 2. How to write code write in HTML and add tag prefix, suffix <pre><code class = "Java"> Your Code </code></pre> public static void hello() { System.out.println("Hello World"); } 3. Quick Escape ref :  Quick Escape It's a tool that lets you quickly paste in HTML and for that to be converted to escaped characters - for example converting <a> to &lt; a&gt ; 4. Style Test   Arta public static void hello() { System.out.prin