[암호화폐] [파이썬] 암호화폐 자동매매(1): 변동성 전략 +상승장

'머신러닝 기반 투자 모델 만들기'를 목표로 자동매매 프로그램을 공부해나가려고 합니다.

오늘은 '누구나 할 수 있다. 비트코인 자동매매' 서적에 깃허브 소스 중 변동성 돌파 전략 + 상승장 투자 전략에 대해 팔로잉 했습니다. 원본 소스는 윈도우이고, 저는 약간의 소스 수정으로 우분투 16.04 / python3.5 에서 실행했습니다.

변동성 돌파 전략은 다음과 같이 사용합니다.

- 매수 조건: 전일 고가에서 전일 저가의 가격 변동폭을 구하고, 아래 조건을 만족할 때 매수합니다.

현재 가격 > 당일 시가 + 가격 변동폭 * 0.5

-매도 조건: 당일 종가에 매도합니다.

또한 상승장 판단 기준은 전일 종가를 기준으로 아래 조건을 만족할 때입니다.

-현재 가격 > 5일 이동평균

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

변동성 돌파 전략과 상승장 판단 기준을 결합한 소스코드는 아래와 같습니다. 아래의 예제에서는 BTC(비트코인)을 사용했으며, 이더리움과 이오스 등 빗썸에서 취급하는 다른 코인으로 변경가능합니다.

여기서는 거래소에서 직접 매수/매도를 위해 빗썸 private API 를 활용해 구현했습니다.

 

 

import time
# 빗썸 모듈 (pip install -U pybithumb)
import pybithumb
from datetime import datetime, timedelta

# 키 유출 방지를 위해, 매수/매도를 위한 공개키/암호키를 파일로 저장 후 불러옴
with open("bithumb.txt") as f:
    lines = f.readlines()
    # 좌우 공백을 제거한 문자열 제거
    key = lines[0].strip()
    secret = lines[1].strip()
    bithumb = pybithumb.Bithumb(key, secret)

# 전일 5일 이동평균
def get_yesterday_ma5(ticker):
    df = pybithumb.get_ohlcv(ticker)
    close = df['close']
    ma = close.rolling(window=5).mean()
    return ma[-2]

# 목표 가격을 얻어옴
def get_target_price(ticker):
    #일봉 데이터 얻어옴
    df = pybithumb.get_ohlcv(ticker)
    #뒤에서 부터 마지막 일봉값. 예) df.iloc[-1] 는 today
    yesterday = df.iloc[-2]

    today_open = yesterday['close']
    yesterday_high = yesterday['high']
    yesterday_low = yesterday['low']
    #가격 변동폭 : 전일 고가 - 전일 저가
    #매수 기준 :당일 시간에서 (변동폭 * 0.5) 이상 상승하면 매수
    #매도 기준: 당일 종가에 매도
    target = today_open + (yesterday_high - yesterday_low) * 0.5
    return target


def buy_crypto_currency(ticker):
    # 잔고조회
    krw = bithumb.get_balance(ticker)[2]
    # 호가창 조회
    orderbook = pybithumb.get_orderbook(ticker)
    # 최우선 매도 호가 조회
    sell_price = orderbook['asks'][0]['price']
    # 원화잔고를 최우선 매도가로 나눠서 구매 가능한 수량 계산
    unit = krw / float(sell_price)
    # 시장가 주문으로 비트코인 매수
    bithumb.buy_market_order(ticker, unit)


def sell_cryto_currency(ticker):
    unit = bithumb.get_balance(ticker)[0]
    #시장가 주문으로 비트코인 매도
    bithumb.sell_makret_order(ticker,unit)


now = datetime.now()
# timedelta는 1일 더하여 다음날 자정으로 만듬
mid = datetime(now.year, now.month, now.day) + timedelta(1)

#비트코인의 목표 매수 가격
target_price = get_target_price("BTC")

while True:
    try:
        now = datetime.now()
        # 10초 마진으로 자정이 되면 전량 매도
        if mid < now < mid + datetime.delta(seconds=10):
            target_price = get_target_price("BTC")
            mid = datetime(now.year, now.month, now.day) + timedelta(1)
            # 다음날 시초가에 전량 매도
            sell_cryto_currency("BTC")

        #비트코인의 현재 가격
        current_price = pybithumb.get_current_price("BTC")
        print(current_price)

        # 목표가 이상이면서 상승장일 때 매수 ( 전일 5일의 이동평균값보다 클 때)
        if current_price > target_price and (current_price > ma5):
            buy_crypto_currency("BTC")
    except:
        print("에러 발생")
    time.sleep(1)


 

 

다음 포스팅에서는 백테스팅을 통해 투자 전략에 대한 수익률를 확인해보겠습니다.

[출처] https://blog.naver.com/PostView.nhn?blogId=kyy0810&logNo=221498289772

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 오라클 기본 샘플 데이터베이스 졸리운_곰 2014.01.02 86034
공지 [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE 가을의 곰을... 2013.02.10 78561
공지 [G_SQL] Sample Database 가을의 곰을... 2012.05.20 95291
27 [DB modeling, DB 모델링] [DB] DB 설계 과정 file 졸리운_곰 2025.03.10 1538
26 [DB modeling, DB 모델링] [DATABASE] 기본키(PK), 외래키(FK) file 졸리운_곰 2025.01.29 1902
25 [DB modeling, DB 모델링] 바쁜 데이터 전문가를 위한 7가지 무료 데이터베이스 다이어그래밍 도구 : 7 free database diagramming tools for busy data folks file 졸리운_곰 2025.01.19 1033
24 [DB modeling, DB 모델링] ERD 다이어그램 그리는 방법 file 졸리운_곰 2024.10.29 1403
23 [데이터베이스 모델링] 정규화와 응집도에 대한 고찰 file 졸리운_곰 2024.08.10 1730
22 [데이터베이스 모델링] [SQL] 데이터베이스 관계(Relationship) 기본 (1:1, 1:N, N:N 테이블 생성 예시 포함) file 졸리운_곰 2024.07.12 2099
21 [데이터베이스 모델링] 테이블정의양식 file 졸리운_곰 2024.02.23 1227
20 [데이터베이스 모델링] DAsP - 물리 데이터 모델링 [논리-물리 모델 변환] file 졸리운_곰 2022.05.07 1897
19 [데이터베이스 모델링] 관계형 데이터 모델링 하향식과 상향식 졸리운_곰 2022.05.07 1780
18 [데이터베이스 모델링] 모델링 IE 표기법 (까치발, 까마귀발, crow-feet) file 졸리운_곰 2022.04.26 2157
17 설문 조사를위한 데이터베이스 설계 file 졸리운_곰 2020.09.05 5720
16 [dbguide] 프로세스모델링 작성 절차 (데이터베이스 시스템분석설계 프로세스 모델링) file 졸리운_곰 2020.07.27 1773
15 [dbguide] 데이터모델링 작성 절차 (데이터베이스 모델링 절차) file 졸리운_곰 2020.07.27 1773
14 데이터 품질진단 절차 및 기법 file 졸리운_곰 2020.07.26 2054
13 [번역] 데이터 구조와 설계 — 튜토리얼 file 졸리운_곰 2020.07.26 1806
12 EA( Enterprise Architecture) 전사 아키텍처 file 졸리운_곰 2020.07.25 1783
11 데이터품질관리지침Ver[1].2.1.pdf file 졸리운_곰 2020.07.25 1846
10 테이블 설계의 기초 졸리운_곰 2020.07.25 2121
9 데이터베이스 디자인의 기초 file 졸리운_곰 2020.07.25 1681
8 Enterprise Data Model for Logistics file 졸리운_곰 2019.06.16 1265
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED