반응형

파이썬 GUI PyQt5(1) - QtDesigner를 이용한 창 띄우기

 

1. PyQt5를 사용하기 위한 준비하기

- Python 개발 IDE인 PyCharm 설치하기 (다운로드 PyCharm: JetBrains가 만든 전문 개발자용 Python IDE)

- Qt Designer 설치하기 (Qt Designer Download for Windows and Mac (fman.io))
  (Qt Designer는 ui를 설치하

- pip install pyqt5 또는 PyCharm에서 pyqt5 설치하기 (File > Settings > Project > Python Interpreter > + )

2. QtDesigner 없이 창 띄워보기

QWidget 클래스를 상속한 클래스를 만들어, 창에 대한 설정을 하고,  show 함수로 창을 띄웁니다. 

import sys
from PyQt5.QtWidgets import QApplication, QWidget

class MyApp(QWidget):
    def __init__(self):  #클래스 인스턴스 생성시 자동적으로 호출됩니다.
        super().__init__()
        self.initUI()
    def initUI(self): # 창을 설정하는 함수를 만듭니다. 
        self.setWindowTitle('My First Application') # 창의 이름을 지정합니다.
        self.move(300, 300) # 창이 만들어질 위치를 지정합니다. 
        self.resize(400, 200) # 창의 크기를 설정합니다. 
        self.show() # 창을 보여주도록 합니다. 

if __name__ == '__main__':
   app = QApplication(sys.argv)
   ex = MyApp()
   sys.exit(app.exec_())

3. Qt Designer로 ui 파일을 만들고, ui 파일 로드하여 창 띄우기 

설치된 Qt Designer를 실행하여, 버튼 없는 대화창을 만들어 보겠습니다. 

[File] > [New]를 통해 ui 파일을 만들어 줍니다. 

오른쪽 속성창에서 windowTitle 속성을 찾아, 창의 이름을 만들어 봅니다. 

저장을 하고, 파일을 python project가 위치해있는 폴더에 이동시켜 줍니다. 

import sys
from PyQt5 import QtWidgets
from PyQt5 import uic

class MyApp(QtWidgets.QDialog):
    def __init__(self, parent = None):
        super().__init__(parent)
        self.ui = uic.loadUi("./file/myapp.ui") # Qt Designer로 만든 파일을 로드합니다.
        self.ui.show() # 만든 ui를 보여주도록 합니다.

app = QtWidgets.QApplication(sys.argv)
me = MyApp()
sys.exit(app.exec())

 

다음에는 버튼을 만들어 버튼 click에 대하여 signal / slot으로 동작하도록 해봅니다.

반응형
반응형

파이썬 알고리즘 / combinations(), permutations() - 모든 조합, 순열 구하기

 

combinations()

- 모든 조합을 구합니다. 

- 리스트 내의 원소 순서를 고려하지 않습니다.

from itertools import combinations

list(combinations(리스트, 조합하려는 원소 갯수))

 

permutations()

- 모든 순열을 구합니다. 

- 리스트 내의 원소 순서도 고려합니다.

from itertools import permutations

list(permutations(리스트, 순열하려는 원소 갯수))

 

예제

from itertools import combinations
from itertools import permutations

a = [1 ,2 ,3 ,4 ,5 ]
p = list(combinations(a, 3))
q = list(permutations(a, 3))

print(list(p))
#[(1, 2, 3), (1, 2, 4), (1, 2, 5), (1, 3, 4), 
#(1, 3, 5), (1, 4, 5), (2, 3, 4), (2, 3, 5), 
#(2, 4, 5), (3, 4, 5)]

print(list(q))
#[(1, 2, 3), (1, 2, 4), (1, 2, 5), (1, 3, 2), 
#(1, 3, 4), (1, 3, 5), (1, 4, 2), (1, 4, 3), 
#(1, 4, 5), (1, 5, 2), (1, 5, 3), (1, 5, 4), 
#(2, 1, 3), (2, 1, 4), (2, 1, 5), (2, 3, 1), 
#(2, 3, 4), (2, 3, 5), (2, 4, 1), (2, 4, 3), 
#(2, 4, 5), (2, 5, 1), (2, 5, 3), (2, 5, 4), 
#(3, 1, 2), (3, 1, 4), (3, 1, 5), (3, 2, 1), 
#(3, 2, 4), (3, 2, 5), (3, 4, 1), (3, 4, 2), 
#(3, 4, 5), (3, 5, 1), (3, 5, 2), (3, 5, 4), 
#(4, 1, 2), (4, 1, 3), (4, 1, 5), (4, 2, 1), 
#(4, 2, 3), (4, 2, 5), (4, 3, 1), (4, 3, 2), 
#(4, 3, 5), (4, 5, 1), (4, 5, 2), (4, 5, 3), 
#(5, 1, 2), (5, 1, 3), (5, 1, 4), (5, 2, 1), 
#(5, 2, 3), (5, 2, 4), (5, 3, 1), (5, 3, 2), 
#(5, 3, 4), (5, 4, 1), (5, 4, 2), (5, 4, 3)]
반응형
반응형

파이썬 암호화폐 / 빗썸 API를 이용하여 매수, 매도하기

 

빗썸 API를 이용하여 매수와 매도를 해보겠습니다. 

API key, Secret Key를 얻는 방법은 아래 링크에서 확인하시면 됩니다. 

 

zidarn87.tistory.com/153

 

파이썬 암호화폐 / 빗썸 API를 이용하여 잔고 조회하기

파이썬 암호화폐 / 빗썸 API를 이용하여 잔고 조회하기 빗썸에서 제공하는 API를 사용하여, 잔고 조회를 해보도록 하겠습니다. 우선 빗썸에 로그인하여 계정 관리 페이지에 들어갑니다. www.bi

zidarn87.tistory.com

 

매도하기

매도는 sell_limit_order 함수를 이용하시면 됩니다. 

첫번째 전달인자는 ticker이며, 

두번째 전달인자는 매도하려는 가격, 

세번째 전달인자는 매도하려는 수량입니다. 

order = bithumb.sell_limit_order("BTC", 13100000, 1)
print(order)

잔여 보유량은 0.044 정도인데, 1을 판매하려고 할 때, 아래와 같이 에러 메시지가 출력됩니다. 

 

sell_limit_order 함수의 세번째 전달인자인 매도하려는 수량을 현재 가지고 있는 수량의 일부분을 넣어보도록 하겠습니다. 그럼 아래와 같이 지정가 매도주문(ask), 주문번호(C0101000000191021689)를 확인할 수 있습니다. 

빗썸에서도 매도된 것을 확인할 수 있습니다. 

print("팔려는 금액: ", btc_price * 0.004)

order = bithumb.sell_limit_order("BTC", 13100000, 0.004)
print(order)

거래내역

 

 

매수하기

매수는 buy_limit_order 함수를 이용합니다. 

첫번째 전달인자는 ticker이며,

두번째 전달인자는 매수하려는 가격, => (int형으로 지정해야 합니다)

세번째 전달인자는 매수하려는 수량입니다. 

print("현재 비트코인 시세: ", btc_price)
print("사려는 금액: ", btc_price * 0.0001)

order = bithumb.buy_limit_order("BTC", int(btc_price), 0.0001)
print(order)

빗썸에서 아래 거래 내역을 확인하실 수 있습니다. 

 

주문량이 현재 잔여 원화보다 크다면 아래와 같이 에러 메시지를 출력합니다. 

 

참고로 빗썸은 체결 수수료가 0.15%입니다. 매수 주문 시에는 주문 체결 수량을 기준으로 수수료가 계산되고 수수료를 제외한 수량이 입금됩니다.

 

반응형
반응형

파이썬 암호화폐 / 빗썸 API를 이용하여 잔고 조회하기

 

빗썸에서 제공하는 API를 사용하여, 잔고 조회를 해보도록 하겠습니다. 

우선 빗썸에 로그인하여 계정 관리 페이지에 들어갑니다. 

 

www.bithumb.com/

 

No.1 가상자산 플랫폼, 빗썸

가상자산 거래소, 렌딩, 스테이킹, 예치, 비트코인, 이더리움, 리플, 비트코인캐시, 라이트코인, 비트코인 골드, 이오스, 이더리움클래식, 퀀텀, 체인링크, 실시간 시세, 쉽고 안전한 거래

www.bithumb.com

 

계정관리 페이지에 API 관리 기능으로 들어갑니다. 

API 설정을 추가하여, API Key와 Secret Key를 가져오도록 하겠습니다. 

API 활성화 시 그 API로 어떠한 기능을 할지에 대한 설정을 합니다. 

아래 기능에 대해 사용할 설정에 체크를 합니다. 

 

IP 주소와 출금 기능 주소를 설정합니다. 

이 설정은 하지 않아도 API Key와 Secret Key를 가져올 수 있습니다. 

 

마지막으로 비밀번호와 ARS 인증을 하면 API KEY 생성을 할 수 있습니다. 

그러면 아래와 같이 API Key와 Secret Key가 생성되는 것을 확인할 수 있습니다. 

그리고 활성화 버튼을 누르면 됩니다.

생성된 API Key와 Secret Key를 아래 Bithumb 함수에 넣어주면 연결됩니다. 

import pybithumb

connect_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
secret_key  = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

bithumb = pybithumb.Bithumb(connect_key, secret_key)

 

모든 티겟중에 보유한 잔고를 출력해 보도록 하겠습니다. 

get_banlance에 ticker를 넣어주면, 그 ticker에 대한 잔고를 출력하게 됩니다. 

튜플 안에는 네 개의 값이 저장되어 있는데 앞에서부터 순서대로 비트코인의 총 잔고, 거래 중인 비트코인의 수량, 보유 중인 총원화, 주문에 사용된 원화를 의미합니다. 

for ticker in pybithumb.get_tickers() :
    balance = bithumb.get_balance(ticker)
    print(ticker, " : ", balance)
    time.sleep(0.1)

 

보유중인 잔여 BTC의 원화가치로 환산해보겠습니다. 

get_current_price 함수는 현재 원화가치를 가져올 수 있습니다. 

보유중인 BTC의 잔여 수량과 현재 원화가치를 곱하면 BTC의 원화가치를 구할 수 있습니다. 

btc_price = pybithumb.get_current_price("BTC")
btc_balance = bithumb.get_balance("BTC")
print(type(btc_price))
print(type(btc_balance[0]))
print("BTC price : ", float(btc_price) * float(btc_balance[0]))

 

전체코드

import pybithumb
import time

connect_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
secret_key  = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

bithumb = pybithumb.Bithumb(connect_key, secret_key)


for ticker in pybithumb.get_tickers() :
    balance = bithumb.get_balance(ticker)
    print(ticker, " : ", balance)
    time.sleep(0.1)


btc_price = pybithumb.get_current_price("BTC")
btc_balance = bithumb.get_balance("BTC")
print(type(btc_price))
print(type(btc_balance[0]))
print("BTC price : ", float(btc_price) * float(btc_balance[0]))
반응형

+ Recent posts