▶문자열 split

mystr = "a.b.c.d"

str_split = mystr.split('.')

print(str_split)

▼결과

['a', 'b', 'c', 'd']

→ 문제 풀이할때 꼭 쓰는 함수.

 

▶문자열 출력 두가지 방식

name = "흐이애"
age = 120
print("이름: %s, 나이: %d" % (name, age))
print("이름: {}, 나이: {}".format(name, age))

print(f"이름: {name}, 나이: {age}") #Python 3.6v 이상

▼결과

이름: 흐이애, 나이: 120
이름: 흐이애, 나이: 120
이름: 흐이애, 나이: 120

→ 자주 쓰는거 말고는 잘 안 외워짐.

 

▶공백 제거하기

my_str = "        공  백         "
strip_str = my_str.strip()
print(strip_str)

▼결과

공  백

→ 알고 있으면 유용할듯

 

 

▶확장자 확인

file_name = "C:\내파일\보고서.xlsx"
file_name.endswith(("xlsx", "xls"))

▼결과

True

→ 알고 있으면 유용할듯2

반응형

K-효율성을 위한 선 3줄 요약

1. 개발 환경 설정했음(아나콘다 가상환경/키움 API/파이참/모의 주식 신청)

2. 책&유튜브 따라서 코드 작성함. 계좌 정보 가져오기까지 성공

3. 복잡해 보이지만 쫄지 말 것.

-----------------------------------------------------------------------------------------------

키움증권의 시스템이 만들어진 당시에는 32비트가 최신 운영체제였다고 한다. 그런데 개발을 하다보면 64비트만 지원하는 특정 라이브러리를 사용해야 할 때도 있다고. 때문에 64비트 버전의 아나콘다를 설치하고 아나콘다 안에서 32비트 파이썬 가상환경을 만들어서 사용해야 한다고 한다. 좋은 말로 할 때 통일했으면 좋겠건만.(아나콘다 설치와 가상환경 설정은 꽤 많은 시간이 걸리므로 (최소 30분~1시간 이상) 다른 일을 하면서 동시에 하기를 권한다.)

키움API는 홈페이지에서 로그인 후 신청하면 바로 다운로드 받을 수 있다. 참고로 키움API는 윈도우 OS 환경에서만 이용 가능하며 리눅스, MacOS에서는 에러가 발생한다고 한다.

http://www3.kiwoom.com/nkw.templateFrameSet.do?m=m1408000000

 

키움증권-대한민국 주식시장 점유율 1위

 

www3.kiwoom.com

이 외에도 KOA Studio(주식 코딩에 필요한 함수들이 설명된 문서)와 상시 모의투자도 신청했다.(참고로 모의투자시 수수료가 0.35%라고 안내하는데, 이는 내 사이버머니에서 0.35%를 차감한다는거지 나의 실제 돈이 들어가는 것은 아니다.)

개발은 책을 따라해도 되고, 저자가 직접 운영하는 유튜브 채널을 이용해도 된다. 아무래도 영상으로 설명해주는걸 보는게 편한듯.(그럴거면 책을 왜 샀지?.. 그래도 책이 더 자세한 느낌이다.....라고 위안을 삼았다)

프로그램 동산 35강 ~ 38강

https://youtu.be/7x3Dzaix8x0

 

매우 복잡해보이지만 그냥 받아적기만 한 것임. 코드를 이해하고 싶다면 Class에 대해 공부하면 도움이 될 듯.
가상계좌와 예수금 정보 불러오기를 성공한 모습.

KOA를 통해 API 함수 상세 정보를 확인할 수 있다.

 

반응형

국가 번호가 +82 이신 분들을 위한 선 3줄 요약

1. 주식 시작함. 잘 모르겠고 어려움. 최소한의 노력만 들여서 최대한의 수익을 내고 싶었음. 그래서 주식 자동 매매&분석 관련 책 샀음.

2. 손가락 하나 까딱하지 않는 주식 거래 시스템 구축 - 장용준 : 자동 매매 구축, 파이썬 증권 데이터 분석 - 김황후 : 웹 스크레이핑, 딥러닝 등을 이용한 분석

3. 혼자 못 할 것 같아서 팀 만들어서 모집했음. 반응이 좋았다. 끝. (세 줄 넘어버렸네.)

-----------------------------------------------------------------------------------------------

 주식 투자를 본격적으로 시작한지는 얼마 되지 않았지만, 나름 재미를 느끼고 월급의 반 정도를 꾸준히 씨드로 넣고 있다. 덕분에 고질병이었던 저혈압도 나았고... 지금은 마치 돈을 벌기 위해 주식을 하는 것이 아닌, 주식을 하기 위해 돈을 벌고 있는 것과 같은 모습이다. '인생은 한강 아니면 한강뷰' 따위의 말들을 마음에 새기며.

 그러나 아무래도 직장인이다보니 주식 분석하는데 많은 시간을 쏟을 순 없었다, 라고 핑계를 대고 있지만 사실은 아주 귀찮았다. 언제 종목 관련 기사 찾아보고, 차트 분석하고, 매수/매도 적정 시기를 간 보다가 매매를 하지? 21세기인데 뭐 더 효율적인 방법이 있지 않을까? 그러던 차에 문득 예전에 파이썬을 공부할 때 스쳐 지나가듯 보았던 주식 API가 떠올랐다.

https://wikidocs.net/3835

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

(파이썬으로 배우는 알고리즘 트레이딩)

더 찾아보니 역시나, 자동매매 기법 관련된 책과 정보들이 많았다. 인공지능이 분석을 해주고 자동으로 매매까지 해준다니 정말 엄청난 세상이었다. 주변 분들에게 이런 내용을 공유했더니, 한 분께서 이런 의문을 표하셨다.

"그럼 인공지능으로 주식하신 분들은 다 부자됐어요?"

그러게요...?

심지어 더 찾아보니, 이미 플레이 스토어에 딥러닝을 이용한 분석 서비스를 제공해주는 어플리케이션도 있었다! (그러나 분석 내용이 그다지 설득력 있진 않았다.) 그럼 이런 분석 시스템을 많은 노력을 들여 만드는 게 의미가 있을까...? 라는 의문이 잠시 들었지만, 한 번 만들어보기로 결정했다. 이러한 시스템을 갖는다는 것을 공구에 비유하자면, 남들이 수동 드라이버로 닦고 조이고 기름칠 때 나는 이름이 각인된 스위스제 맥가이버 칼과 전동드릴을 갖고 있는 것과 비슷하다고 생각하기 때문이다. 물론 나에게 나사와 건전지가 없다면 그것들은 무용지물이겠지만.(현재는 나사는커녕 조립 설명서도 없는 상태라고 할 수 있다.)

최악의 경우라도 최소한 파이썬 실력과 딥러닝을 사용해 본 경험은 남겠지...? 라는 생각으로, 우선 감을 잡아 보고자 책을 구매했다.

(사은품으로 받은 미니언즈 배스타올 예쁘고 보드랍고 맘에 든다. 담요 대용으로도 좋음)

위와 같이 두 권을 샀는데, 각각 자동 매매 시스템과 분석 시스템을 위해 구매했다.

◈손가락 하나 까딱하지 않는 주식 거래 시스템 구축 - 장용준 : 자동 매매 구축

(책 제목이 참 마음에 든다. 특히 '손가락 하나 까딱하지 않는' 이 부분. 참고로 내가 가장 좋아하는 파이썬 책은 '파이썬 프로그래밍으로 지루한 작업 자동화하기'이다.)

파이썬 증권 데이터 분석 - 김황후 : 웹 스크레이핑, 딥러닝 등을 이용한 분석

(가장 최신판이면서 웹 스크레이핑과 딥러닝을 다뤄볼 수 있어 선택했다.)

그런데 목차를 살펴보니 상당히 난이도가 있어 보였다. 이건 도저히 혼자선 못할 것 같은데..? 사람을 좀 구해서 같이 해볼까? 싶어 동호회에 글을 올려보았다. 반응은 가히 폭발적이었다. (단톡 방에 서른 명이 넘게 들어왔다) 주식에 관심 있는 사람이 이렇게나 많다니. 감투 쓰면 부담받아하면서 열심히 하는 편인데, 이 기회에 부담 느끼면서 열심히 해봐야겠다..!

반응형

라즈베리 파이를 구매했습니다.
Rasberry Pi 3B+가 가장 최신 버전이라하여 3B+로 구매하였고, 입출력 키트도 같이 구매했습니다.

TV에 HDMI를 연결하면 될 것 같아 LCD는 구매하지 않았는데, 그렇게 했더니 집 아닌곳에서는 개발이 불가능한 단점이 있더라구요.

노트북으로도 안 됩니다...

다음은 구매한 부품 목록입니다.

랜선, 마우스/키보드 USB, TV와 연결한 HDMI 케이블, 전원, MICRO SD를 연결한 모습입니다.

라즈비안 OS설치를 위해, MICRO SD 카드에는 미리 NOOBS LITE 파일을 다운받아 넣어두었습니다.


TV에서 외부입력을 선택했더니, 아무런 설정 없이 바로 설치 화면이 나오네요. 첫번째 항목인 라즈비안 FULL 앞부분에 체크를 하고 INSTALL을 선택하여 설치합니다.

유선 네트워크라 그런지 확실히 빠르네요. NOOBS LITE가 아닌 NOOBS 는 2기가가 넘어서 무선 인터넷으로 다운받는데 2시간 뜨던데... 

저처럼 노트북에 랜선 연결이 불가능하신 분들은 NOOBS LITE로 설치하는게 효율적이겠네요.

NEXT 버튼을 눌러 설정을 진행합니다.

저는 한국에 사는, 한국어를 사용하는 한국인이라 아무런 거리낌없이, 당연히 저렇게 설정했습니다. 만약 해당 항목에서 이 글을 보고 계신다면 Back을 눌러 Language를 English로 변경해주세요. 그 이유는 밑에서 나옵니다.

비밀번호를 설정해주시고,,

창 모서리에 까만색 틈새가 보인다면(화면에 창이 꽉 차게 보이지 않는다면) 체크하라고 써있어서 체크하였습니다. (나중에 대참사가 일어납니다)

만약 보시기에 불편함이 없다면 그냥 두시는걸 추천합니다... 이에 대해선 후술하겠습니다.


무선 네트워크 설정입니다. 이 부분은 좀 이상했는데, 맨 처음 라즈비안 설치 시에는 자동으로 무선 네트워크 목록을 보여주었었는데, 이때는 한참을 기다려도 뜨질 않더라구요. 우선 Skip하였습니다.


Software Update 여부를 묻네요. 사람을 제외하고선, 모든 것은 항상 최신의 새 것이 좋지요.

그러나 가끔은 구관이 명관일 때도 있습니다. 이전 버전이 안정화도 잘 되어 있구요. 제가 절대로 해결하기 귀찮아서 그런 것은 아닙니다...

제가 진행할 기초적인 내용에서는 굳이 최신 버전이 필요할 것 같지 않아 업데이트는 나중으로 미루도록 하겠습니다.

설치가 완료되었으니 재시작합니다.

한국인은 안 된다?

재시작해서 이것저것 켜보니, 한글이 깨져서 내용이 보이질 않더라구요. 이럴거면 대체 옵션에 Korean은 왜 넣어둔건지...?

모서리에 까만 부분이 남아 보이던 문제는 해결되었습니다. 아주 극단적으로 방향으로요. 해상도가 제 실제 화면보다 너무 커져버려서, 이제 라즈비안 아이콘이 옆으로 사라져 보이질 않아요... 아이콘이 보이질 않으니 라즈비안을 끌 수 조차 없게 되었습니다.....

다행히 키보드의 window 키를 누르니 종료버튼이 보여서 끌 수 있었습니다. MICRO SD카드를 포맷하여 재설치하는 과정이 필요하겠네요....


반응형

사무업무 자동화의 꽃 엑셀 VBA(Visual Basic for Application) 공부를 드디어 시작했습니다!

아주 기본적인 내용부터 공부할 예정이며, 배우게 된 내용을 정리해서 블로그에 업로드할 예정입니다.

같이 공부하시는 분들에게 도움이 되었으면 좋겠습니다.

 

VBA 이용을 위해서는 명령어 목록에 '개발 도구'항목을 추가해야 하는데, 아마 기본적으로는 설정이 안되어 있을 겁니다.

 

 

엑셀을 켠 뒤, 파일->옵션으로 들어가서 '리본 사용자 지정'의 오른쪽 항목 중 '개발 도구' 항목에 체크한 후 확인을 누르시면 됩니다.

 

 

 엑셀에 개발 도구가 생겼습니다! 이제 VBA사용할 준비가 다 되었습니다.

 

매크로 이름을 적당히 작성합니다. 첫 글자는 영문자로 해주세요.

바로 가기 키는 Ctrl+j,m 등을 추천드립니다. 왜냐하면 엑셀의 다른 명령어와 겹치지 않기 때문이지요!

만약 다른 명령어와 겹치게 되면 매크로 명령어가 우선시 됩니다. Ctrl+S는 저장 단축키이지만, 새로 작성하는 매크로의 단축키를 Ctrl+S로 설정하시면 저장 단축키는 해당 엑셀 상에서 사용하지 못하게 됩니다.

매크로 저장 위치는 크게 상관 없습니다. 다른 엑셀 창에서도 사용하고 싶다면 개인용 매크로 통합 문서에 저장하는 걸 추천드려요.

이제 매크로 기록 버튼을 통해 사용자의 작업을 자동으로 저장하고, 나중에 이를 반복 수행할 수 있습니다.

여기서 '상대 참조로 기록'을 누르면, 절대 참조가 아닌 상대 참조로 매크로 내용을 기록하게 됩니다. 예를 들어 설명해보겠습니다. A1 셀을 선택해둔 채로 매크로 기록 버튼을 누른 뒤, 바로 한칸 오른쪽에 있는 B1 셀을 클릭한 뒤 배경색상을 변경하는 매크로 작업을 진행했다고 합시다. 상대 참조로 기록한 경우 '오른쪽 셀의 색상을 변경한다.'라는 매크로가 입력되고, 절대 참조로 기록한 경우 'B1 셀의 색상을 변경한다.'라는 매크로가 입력될 것입니다.

이제 매크로 기록 버튼을 누르고, 옆 셀을 클릭한 뒤 셀의 배경색을 변경해봅니다.

그런 다음 기록 중지 버튼을 누르세요. 매크로 기록부터 기록 중지 버튼을 누르기 전까지, 웬만하면 다른 작업은 하지 말아주세요! 원치 않는 내용이 추가되어서 나중에 보기 어려워질 수가 있습니다.

기록 중지 버튼을 눌러도 아무런 변화가 없습니다. 작성된 매크로 코드를 확인하기 위해 개발 도구의 Visual Basic 버튼을 눌러봅니다.

 

뭔가 약간 구시대적인 느낌의 창이 뜨네요

왼편의 프로젝트 목록에서 Module1을 클릭하여 오른쪽의 창을 띄웁니다.

여기서 With ~ End With에 대해 잠깐 설명드리겠습니다. With 부터 End With 사이에 있는 항목들에 대해서 항목 앞에 .을 붙이면 With 뒤의 내용이 자동으로 따라 붙게 됩니다. 매 줄마다 같은 내용을 작성하기가 번거로우니까요.

설명을 위해 비유를 들자면, 성이 '이'씨인 친구가 나에게 "내 동생이 김태리 이름이 예쁘다고 자기도 태리로 개명을 하겠대. 어이 없지?" 라고 했을때, 친구가 굳이 나에게 동생의 성씨가 '이'씨임을 알려주지 않아도 친구 동생의 성씨를 알고 있기 때문에 친구의 얘기에 웃을 수 있을 것입니다.

여기서 '친구의 성을 이미 알고 있음'이라는 사실이 'With Selection.Interior'부분에 해당하고, 그 아래의 '.Color = 255'와 같은 내용들이 '친구 동생이 개명할 이름'에 해당하겠네요.

따라서 위 코드는 아래와 같이 바꾸어 쓸 수도 있습니다.

 물론 상당히 비효율적이겠지요.

또한 위 코드에서 Pattern이나 ColorIndex, Shade 따위와 같은 내용들은 굳이 없어도 됩니다. 제가 선택한 건 원색(RED, GREEN, BLUE)이라서 중요한건 Color 이므로, 이를 남기고 다 삭제해보았습니다.

 

이걸 With 함수 없이 바꾸면 아래와 같이 한 줄로 표시할 수 있습니다.

 

 Color = 에서 뒤의 숫자를 바꾸어 실행(Ctrl+j)해보았습니다..

매크로를 바로 불러오는 단축키는 위와 같이 파일->옵션에서 '빠른 실행 도구 모음'에서 추가할 수 있습니다.

 

Alt+6을 통해 빠른 실행도 가능하지요.

오늘 내용은 이것으로 마치겠습니다! 응원 댓글은 언제나 많은 힘이 됩니다.

감사합니다.

반응형



기적의 덧셈.jpg


2019/03/24


이전에 만들어본 항목들을 토대로 간단한 계산기를 만들어보았다.


Label setText부분 내부에 바로 input1+input2를 넣었더니

기적의 덧셈 결과가 나와버렸다.(문자열로 인식)


int(input.text())로 숫자로 바꾼 뒤,

setNum(result) 함수를 이용하여 해결하였다.



import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGridLayout,QLabel, QLineEdit

class MyApp(QWidget):
def __init__(self):
super().__init__()

self.initUI()

def initUI(self):

#덧셈 버튼. 누를때 작동.
add_btn = QPushButton(self)
add_btn.setText('Add') #단축키 Alt+2
#버튼이 click될때 label이 변경되어야 함.
add_btn.clicked.connect(self.click_add)

#뺄셈 버튼. 누를때 작동.
sub_btn = QPushButton(self)
sub_btn.setText('Subtract') #단축키 Alt+2
#버튼이 click될때 label이 변경되어야 함.
sub_btn.clicked.connect(self.click_sub)

#곱셈 버튼. 누를때 작동.
multi_btn = QPushButton(self)
multi_btn.setText('Multiply') #단축키 Alt+2
#버튼이 click될때 label이 변경되어야 함.
multi_btn.clicked.connect(self.click_multi)

# 나눗셈 버튼. 누를때 작동.
divi_btn = QPushButton(self)
divi_btn.setText('Division') # 단축키 Alt+2
# 버튼이 click될때 label이 변경되어야 함.
divi_btn.clicked.connect(self.click_divi)

#LineEdit선언부. 입력 부분.
self.input1 = QLineEdit(self)
self.input1.setText('6')

self.input2 = QLineEdit(self)
self.input2.setText('3')

#Label선언. 결과값 출력부.
self.lbl = QLabel(self)
self.lbl.setText('Result Here')


#layout 설정
grid = QGridLayout()
grid.addWidget(QLabel('Num :'), 0,0)
grid.addWidget(QLabel('Cal :'), 1,0)
grid.addWidget(QLabel('Result :'), 2,0)

grid.addWidget(self.input1,0,1)
grid.addWidget(self.input2,0,3)

grid.addWidget(add_btn,1,1)
grid.addWidget(sub_btn,1,2)
grid.addWidget(multi_btn,1,3)
grid.addWidget(divi_btn,1,4)

grid.addWidget(self.lbl,2,1)

#창 띄우는 부분
self.setLayout(grid)
self.setWindowTitle('숫자 두개밖에 못 쓰는 계산기')
self.setGeometry(300, 300, 400, 100)
self.show()

def click_add(self):
result = int(self.input1.text()) + int(self.input2.text())
self.lbl.setNum(result)
self.lbl.adjustSize()

def click_sub(self):
result = int(self.input1.text()) - int(self.input2.text())
self.lbl.setNum(result)
self.lbl.adjustSize()

def click_multi(self):
result = int(self.input1.text()) * int(self.input2.text())
self.lbl.setNum(result)
self.lbl.adjustSize()

def click_divi(self):
result = int(self.input1.text()) / int(self.input2.text())
self.lbl.setNum(result)
self.lbl.adjustSize()


if __name__ == '__main__':

app = QApplication(sys.argv)
ex = MyApp()
sys.exit(app.exec_())





반응형

2019/03/24


드디어 Pycharm-아나콘다 연동에 성공했다.

Path 설정, Pycharm 내부 인터프리터 설정 등... 환경 구축하는게 가장 어려운 일인 듯.

PyQt5에 익숙해지기 위해, 우선 기본적으로 입력창과 버튼 사용, 입력 내용을 출력해주는 Label에 대해 공부하였다.



참고사이트는 이 곳... GUI 익히기엔 최적의 사이트라고 생각한다.


https://wikidocs.net/21936




import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout,QLabel, QLineEdit
from PyQt5.QtGui import QIcon, QPixmap

class MyApp(QWidget):
def __init__(self):
super().__init__()

self.initUI()

def initUI(self):

#버튼. 누를때 작동.
btn = QPushButton(self)
btn.setText('Button&2') #단축키 Alt+2
#버튼이 click될때 label이 변경되어야 함.
btn.clicked.connect(self.on_click)




#LineEdie선언부. 입력 부분.
self.qle = QLineEdit(self)

#Label선언. 결과값 출력 예정.
self.lbl = QLabel(self)


#layout 설정
vbox = QVBoxLayout()
vbox.addWidget(self.qle)
vbox.addWidget(btn)
vbox.addWidget(self.lbl)

#창 띄우는 부분
self.setLayout(vbox)
self.setWindowTitle('Button누르면 Label에 표기')
self.setGeometry(300, 300, 300, 200)
self.show()

def on_click(self):
self.lbl.setText(self.qle.text())
self.lbl.adjustSize()

if __name__ == '__main__':

app = QApplication(sys.argv)
ex = MyApp()
sys.exit(app.exec_())


반응형

+ Recent posts