프로젝트

일반

사용자정보

b 상승장 알리미3(스레드) » 이력 » 버전 1

이태훈, 2025/02/04 07:01

1 1 이태훈
h1. 상승장 알리미3(스레드)
2
3
h3. 소스코드
4
5
<pre>
6
import sys
7
import pybithumb
8
import time
9
from PyQt5.QtWidgets import *
10
from PyQt5 import uic
11
from PyQt5.QtCore import *
12
13
tickers = ["BTC", "ETH", "XRP"]
14
form_class = uic.loadUiType("05_20_1.ui")[0]
15
16
class Worker(QThread):
17
    finished = pyqtSignal(dict)
18
19
    def run(self):
20
        while True:
21
            data = {}
22
23
            for ticker in tickers:
24
                data[ticker] = self.get_market_infos(ticker)
25
26
            self.finished.emit(data)
27
            time.sleep(2)
28
29
    def get_market_infos(self, ticker):
30
        try:
31
            df = pybithumb.get_ohlcv(ticker)
32
            ma5 = df['close'].rolling(window=5).mean()
33
            last_ma5 = ma5.iloc[-2]
34
            price = pybithumb.get_current_price(ticker)
35
36
            state = None
37
            if price > last_ma5:
38
                state = "상승장"
39
            else:
40
                state = "하락장"
41
            return price, last_ma5, state
42
        except:
43
            return None, None, None
44
45
class MyWindow(QMainWindow, form_class):
46
    def __init__(self):
47
        super().__init__()
48
        self.setupUi(self)
49
50
        self.worker = Worker()
51
        self.worker.finished.connect(self.update_table_widget)
52
        self.worker.start()
53
54
    @pyqtSlot(dict)
55
    def update_table_widget(self, data):
56
        try:
57
            for ticker, infos in data.items():
58
                index = tickers.index(ticker)
59
60
                self.tableWidget.setItem(index, 0, QTableWidgetItem(ticker))
61
                self.tableWidget.setItem(index, 1, QTableWidgetItem(str(format(int(infos[0]), ',d')))) # format(int(infos[3]), ',d')
62
                self.tableWidget.setItem(index, 2, QTableWidgetItem(str(format(int(infos[1]), ',d'))))
63
                self.tableWidget.setItem(index, 3, QTableWidgetItem(str(infos[2])))
64
        except:
65
            pass
66
67
app = QApplication(sys.argv)
68
window = MyWindow()
69
window.show()
70
app.exec_()
71
</pre>
72
73
h3. 결과
74
75
!clipboard-202502041601-dwrp4.png!