[암호화폐] [파이썬] 암호화폐 자동매매(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
14 [SQLite]10만 TPS와 10억 행 처리: SQLite의 놀라운 효율성 졸리운_곰 2025.12.05 1184
13 [sqlite] SQlite source code analysis-architecture file 졸리운_곰 2021.04.12 1806
12 [SQLite] SQLite 사용자 함수 추가 졸리운_곰 2021.04.12 1662
11 {SQLite] SQLite 페이지 핸들링(3) - 레코드 포맷 졸리운_곰 2021.04.12 1665
10 [SQLite] SQLite 페이지 핸들링(2) - SQLite의 페이지 포맷 file 졸리운_곰 2021.04.12 1495
9 [SQLite] SQLite 페이지 핸들링(1) - SQLite의 구조 file 졸리운_곰 2021.04.12 1486
8 [C/C++ 자료구조] SQLite 의 모든 것 (4부) - Java 에서 사용하기 Database/SQLite file 졸리운_곰 2021.04.12 1662
7 [C/C++] SQLite 의 모든 것 (3부) - C++ 에서 사용하기 Database/SQLite 졸리운_곰 2021.04.12 1719
6 [C/C++ 자료구조] SQLite 의 모든 것 (2부) - Download & Build Database/SQLite file 졸리운_곰 2021.04.12 1665
5 [C/C++ 자료구조] SQLite 의 모든 것 (1부) - 소개 및 FAQ Database/SQLite file 졸리운_곰 2021.04.12 1330
4 SQLite-sync.com version 3 file 졸리운_곰 2017.07.03 2017
3 DB Browser for SQLite file 졸리운_곰 2017.04.26 1651
2 Getting started with SQLite in C# file 졸리운_곰 2017.04.24 1828
1 SQLite C/C++ Tutorial 졸리운_곰 2017.04.24 1496
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED