본문 바로가기
Python

파이썬으로 비트코인(가상화폐) 자동매매 chatgpt로 만들기_01

by HyunS_ 2024. 10. 28.

비트코인을 자동매매 하는 프로그램 만들어 보려 합니다. 1부터 100까지 전부 제가 하기는 힘들 것 같아서 chatgpt를 이용해서 작업을 시작하고 있습니다. 중간중간 여기에 기록을 남겨보려 합니다.

 

chatgpt로 구조를 어떻게 잡아가면 좋겠는지 물어보니 아래와 같이 알려주더라구요. 그래서 아래와 같이 한 번 작업해보려 합니다.

 

우선 업비트에서 작업을 해보고 그리고 나서 빗썸과 바이낸스를 추가를 할지 아니면 전략을 계속적으로 수정해가면서 업비트에서만 돌릴지는 고민중입니다.

 

각 거래소마다 api key는 다 받아둔 상태입니다.


자동매매 프로그램을 개발할 때는 기초적인 기능부터 구현하여 프로그램의 안정성을 확보하고, 그 위에 다른 모듈을 추가하는 방식으로 진행하는 것이 좋습니다. 우선순위에 따라 단계별로 나눠보겠습니다.

1단계: API 통신 모듈

  • 우선 구현 이유: API 통신이 제대로 되어야 데이터 수집, 주문 실행 등 다른 기능이 모두 가능해집니다.
  • 구현 내용:
    • JWT 토큰 생성 함수: API 인증을 위해 반드시 필요합니다.
    • 기본 함수: 시세 조회, 잔고 확인, 주문 요청 등 Upbit API의 핵심 기능을 구현합니다.
  • 목표: 시세 조회와 주문 기능을 간단히 테스트하여 Upbit API와 안정적으로 통신하는지 확인합니다.

2단계: 데이터 수집 및 전처리 모듈

  • 우선 구현 이유: 매매 전략에 필요한 시세 데이터를 수집하고, 일정한 주기로 업데이트해야 전략 모듈이 올바르게 동작할 수 있습니다.
  • 구현 내용:
    • 시세 데이터 수집: 지정한 코인의 현재가와 과거 데이터를 수집하는 함수를 만듭니다.
    • 기술 지표 계산: 이동 평균, 변동성 등의 지표를 계산할 수 있는 함수를 추가합니다.
  • 목표: 실시간 데이터를 일정 간격으로 수집하고 지표를 계산하는 기능을 안정적으로 확보합니다.

3단계: 전략 모듈

  • 우선 구현 이유: 수집된 데이터를 기반으로 매매 신호를 생성하는 핵심 모듈입니다.
  • 구현 내용:
    • 전략 구현: 이동 평균 교차, 변동성 돌파와 같은 간단한 전략부터 구현합니다.
    • 신호 발생 함수: 데이터가 주기적으로 업데이트될 때마다 매수/매도 신호가 발생하는지 확인합니다.
  • 목표: 전략이 올바른 시점에 매매 신호를 생성하는지 검증합니다.

4단계: 주문 실행 모듈

  • 우선 구현 이유: 전략에 따라 생성된 신호가 실제 주문으로 이어질 수 있도록 하는 모듈입니다.
  • 구현 내용:
    • 주문 실행 함수: 매수/매도 신호가 발생하면 place_order 함수를 호출해 주문을 실행합니다.
    • 주문 확인 및 재시도: 주문이 정상적으로 체결되었는지 확인하고, 실패 시 재시도 로직을 포함합니다.
  • 목표: 전략에 따라 생성된 신호가 실시간으로 주문을 실행할 수 있도록 합니다.

5단계: 위험 관리 및 자금 관리 모듈

  • 우선 구현 이유: 매매 중 발생할 수 있는 위험을 관리하여 안정성을 높이기 위함입니다.
  • 구현 내용:
    • 손절/익절 설정: 손절매 및 익절매 조건을 설정하여, 특정 조건이 충족되면 포지션을 정리합니다.
    • 자금 관리: 잔고에 따라 매매 금액을 자동으로 조절합니다.
  • 목표: 손절과 익절 조건에 따라 자동으로 포지션을 조정하여 리스크를 관리합니다.

6단계: 모니터링 및 알림 모듈

  • 우선 구현 이유: 프로그램이 제대로 동작하는지 실시간으로 확인하고, 문제 발생 시 즉시 대응할 수 있도록 합니다.
  • 구현 내용:
    • 알림 전송: 텔레그램 등으로 매매 실행 결과와 오류 발생 시 알림을 전송합니다.
    • 로그 관리: 모든 주문 내역과 오류를 기록해 프로그램이 안정적으로 동작하는지 확인합니다.
  • 목표: 매매 내역과 에러 발생 상황을 실시간으로 모니터링하고 대응할 수 있도록 합니다.

7단계: 스케줄러 모듈

  • 우선 구현 이유: 각 모듈을 주기적으로 실행할 수 있도록 스케줄러를 통해 프로그램 전체를 자동화합니다.
  • 구현 내용:
    • 주기 설정: 데이터 수집, 전략 실행, 주문 요청 등의 작업을 일정 간격으로 실행하도록 설정합니다.
  • 목표: 자동매매 프로그램이 중단 없이 연속적으로 작동하게 하는 것입니다.

8단계: 백테스트 모듈 추가

우선 구현 이유: 백테스트 모듈은 과거 데이터를 기반으로 전략을 평가하여, 실전 운영 전 위험 요소를 미리 파악하고 전략의 수익성을 확인할 수 있도록 합니다.

구현 내용

  1. 과거 데이터 로드: 지정한 코인의 과거 시세 데이터를 수집해 백테스트에 사용할 수 있도록 준비합니다.
  2. 전략 적용: 구현된 전략을 과거 데이터에 적용하여 매수/매도 신호를 생성합니다.
  3. 포지션 및 자금 관리: 매수/매도 신호가 발생할 때마다 가상의 포지션을 유지하고, 수익률을 계산합니다.
  4. 성과 분석:
    • 총 수익률: 백테스트 기간 동안의 총 수익률을 계산합니다.
    • MDD (Maximum Drawdown): 백테스트 기간 동안 발생한 최대 손실 폭을 계산하여 전략의 위험성을 평가합니다.
    • 승률 및 손익비: 매매 횟수 중 수익 거래의 비율과, 평균 손익비를 계산하여 전략의 수익성을 분석합니다.

같이 보면 좋은 글

2024.10.28 - [Python] - 파이썬으로 비트코인(가상화폐) 자동매매 chatgpt로 만들기_02(추가 성과 지표)

 

파이썬으로 비트코인(가상화폐) 자동매매 chatgpt로 만들기_02(추가 성과 지표)

다른 모듈들은 크게 특이사항 없이 잘 만들어지고 있는데, 백테스트 모듈에서 고려해야할 내용들이 생각보다 많습니다. 그 중에서 추가 성과 지표라는 것이 있는데 이 지표들의 특성에 대해 간

kinghell.tistory.com

 

728x90

댓글