파이썬 자동매매 개발, PyQt QRadioButton과 QGroupBox

자동매매 시스템은 주식, 외환 및 암호화폐 등 다양한 금융 상품을 거래하는 데 효과적입니다.
이번 글에서는 파이썬의 PyQt 라이브러리를 이용해 자동매매 UI를 구축하는 방법에 대해 설명하겠습니다.
특히, QRadioButtonQGroupBox를 사용하여 사용자가 손쉽게 옵션을 선택할 수 있는 기능을 구현할 것입니다.

PyQt란?

PyQt는 파이썬을 위한 Qt GUI 프레임워크로, 복잡한 애플리케이션의 GUI를 쉽게 구축할 수 있도록 도와줍니다.
Qt의 강력한 기능을 활용하여 데스크톱 애플리케이션을 제작할 수 있으며, 다양한 위젯을 제공하여 UI 개발을 수월하게 만들어 줍니다.

QRadioButton과 QGroupBox 소개

QRadioButton: QRadioButton은 사용자가 여러 옵션 중에서 하나를 선택할 수 있게 해주는 라디오 버튼입니다.
일반적으로 관련 옵션들을 그룹으로 묶어서 제공하며, 한 번에 하나의 선택지만 가능하도록 설계되어 있습니다.

QGroupBox: QGroupBox는 위젯을 그룹으로 묶어 사용자에게 더 잘 시각적으로 표현할 수 있게 도와줍니다.
그룹 안에 있는 위젯들을 하나의 단위로 묶어 제어할 수 있으며, 이를 통해 UI의 구조를 명확히 하고 사용자에게 방향성을 제공합니다.

자동매매 시스템의 기본 구조

자동매매 시스템은 보통 다음과 같은 구성 요소를 포함합니다:

  • 데이터 수집: 주식, 외환, 암호화폐 등에서 시장 데이터를 수집
  • 전략 구현: 거래 전략을 정의하고 구현
  • 주문 실행: 실시간으로 주문을 처리
  • UI 구성: 사용자와의 상호작용을 위한 인터페이스

환경 설정

PyQt를 사용하기 위해 먼저 필요한 라이브러리를 설치해야 합니다. 다음과 같이 명령어를 입력해 설치할 수 있습니다.

pip install PyQt5

QRadioButton과 QGroupBox 사용 예제

아래는 QRadioButton과 QGroupBox를 활용한 기본적인 PyQt 애플리케이션의 예제 코드입니다.
이 애플리케이션은 사용자가 매매 옵션(매수, 매도) 중 하나를 선택할 수 있게 구성되어 있습니다.

예제 코드


import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QGroupBox, QRadioButton, QPushButton, QLabel

class TradingApp(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('자동매매 시스템')
        self.setGeometry(100, 100, 300, 250)
        self.initUI()
    
    def initUI(self):
        layout = QVBoxLayout()

        # QGroupBox 생성
        self.groupbox = QGroupBox('매매 옵션')
        self.radio_buy = QRadioButton('매수')
        self.radio_sell = QRadioButton('매도')

        # QRadioButton을 QGroupBox에 추가
        self.groupbox_layout = QVBoxLayout()
        self.groupbox_layout.addWidget(self.radio_buy)
        self.groupbox_layout.addWidget(self.radio_sell)
        self.groupbox.setLayout(self.groupbox_layout)

        # 선택한 옵션 표시 버튼
        self.button = QPushButton('선택 확인')
        self.button.clicked.connect(self.show_selection)

        # 레이아웃에 위젯 추가
        layout.addWidget(self.groupbox)
        layout.addWidget(self.button)

        # 레이아웃 설정
        self.setLayout(layout)
        self.label = QLabel('선택된 옵션: 없음')
        layout.addWidget(self.label)
    
    def show_selection(self):
        if self.radio_buy.isChecked():
            self.label.setText('선택된 옵션: 매수')
        elif self.radio_sell.isChecked():
            self.label.setText('선택된 옵션: 매도')
        else:
            self.label.setText('선택된 옵션: 없음')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = TradingApp()
    window.show()
    sys.exit(app.exec_())
    

위 코드는 기본적인 PyQt 애플리케이션을 만들고, 매매 옵션을 선택할 수 있는 UI를 제공합니다. 사용자는 ‘매수’ 또는 ‘매도’ 옵션 중 하나를 선택한 후, ‘선택 확인’ 버튼을 클릭하면 선택된 옵션이 화면에 표시됩니다.

코드 설명

TradingApp 클래스: QWidget을 상속하여 기본 애플리케이션을 정의합니다.
__init__ 메서드에서는 창의 제목과 크기를 설정하고 initUI 메서드를 호출합니다.

initUI 메서드: UI 요소들을 초기화하고 배치합니다. QGroupBox와 두 개의 QRadioButton을 추가합니다.

show_selection 메서드: 사용자가 선택한 옵션에 따라 QLabel의 텍스트를 변경합니다.

실행 결과

위 코드를 실행하면 아래와 같은 기본적인 UI가 생성됩니다. 사용자는 매수 또는 매도 중 하나를 선택할 수 있으며, 선택한 옵션은 버튼 클릭 시 QLabel에 표시됩니다.

자동매매 UI 예시

더 나아가기

위의 예제를 바탕으로 자동매매 시스템에서의 더 많은 기능을 추가할 수 있습니다.
예를 들어, 선택한 매매 옵션에 따라 자동으로 알고리즘을 실행하거나, 사용자가 입력한 조건에 따라 매매를 자동으로 실행할 수 있습니다.
또한, 실시간 데이터 피드를 추가하거나 특정 종목에 대한 매매를 수행하는 기능도 구현할 수 있습니다.

다음 단계로는 사용자의 입력을 받아 매매하는 로직을 추가하는 것입니다. 예를 들어, 특정 주식의 매수 및 매도 가격을 사용자가 입력한 뒤,
조건에 따라 매매를 자동으로 실행하는 알고리즘을 작성해보세요. 이 과정에서 API를 활용하여 실제 시장과 연결할 수 있습니다.

결론

이번 글에서는 PyQt를 이용한 자동매매 프로그램의 UI 구성 방법을 배우고,
QRadioButtonQGroupBox의 기본 사용법을 알아보았습니다.
별도의 데이터 수집 및 알고리즘 처리 부분을 구현함으로써 실제적인 자동매매 시스템을 만들어 볼 수 있습니다.
앞으로 더욱 발전된 자동매매 시스템을 위해 다양한 라이브러리와 API의 활용에 도전해보시기 바랍니다.

© 2023 자동매매 개발 블로그.