인프런 커뮤니티 질문&답변

YunHo Lee님의 프로필 이미지

작성한 질문수

비트코인 알고리즘 트레이딩 봇 개발

매수 금액설정

작성

·

270

0

안녕하세요.

강의를 다 본 뒤 코드를 작성하고 업비트에서 실제로 매수 매도를 진행해보니 매수할 금액이 부족하면 오류가 발생하여 봇 작동이 멈췄습니다. 저는 매수할 금액이 부족하더라고 봇은 계속 돌아가서 매도는 진행하고 싶은데 혹시 어떤 코드를 추가하면 되는건지 궁금합니다.

답변 3

1

멀티코어님의 프로필 이미지
멀티코어
지식공유자

def get_chance(up, coin_name): 함수를 정의하는 부분은 trade.py 파일에 넣으시고,

계좌상태를 조회하는 코드는 다음과 같이 매수시작하기 전에 넣어서 체크하는게  좋을 것 같습니다.

---------------------------------------------------------------------------------------------

        #매수 시작

        message, balance, locked = get_chance(up, coin_name) 

        print(message, balance, locked)

        is_chance = True or False #주문 금액과 주문가능 금액을 체크해서 주문가능 금액이 크다면 True 아니면 False

        if buy_cnt <= buy_cnt_limit and close < bl and long_term_cond == 1 and is_chance == True:

---------------------------------------------------------------------------------------------

감사합니다.

정말 세세하게 알려주셔서 잘 적용했습니다!

0

안녕하세요

답변해주신 해당 코드를 robobits_adv2.py 파일에 적용하고 싶은데,

혹시 어느 부분에 첨부를 해야 할까요?

0

멀티코어님의 프로필 이미지
멀티코어
지식공유자

안녕하세요 YunHo Lee님.

수강해주셔서 감사합니다.

 

매수할 금액이 부족할 때 다음과 같은 코드를 사용하시면 오류를 방지할 수 있습니다.

현재 주문가능 금액(balance)을 조회해서 주문금액(주문하려는 금액)과 비교하시면 됩니다.

 

if 주문가능금액 > 주문금액:

주문

else :

print("잔고가 부족합니다.")

코드를 첨부합니다.

감사합니다.

 

-------------------------------------------------------------------

import pyupbit

import comm.config as conf

 

access = conf.G_API_KEY

secret = conf.G_SECRET_KEY

coin_name = 'KRW-KRW'

up = pyupbit.Upbit(access, secret)

 

def get_chance(up, coin_name): #코인별 계좌상태 조회

    message = ''

    result = 'none'

    trade_coin = 'none'

    balance = 0

    locked = 0

    result = up.get_chance(coin_name)

 

    try:  # error mess

        # age check

        message = result[0]['error']['message']

    except:  # no error message -> normal state

        if message == '':

            message = 'good'

 

    try:

        if message == 'good':

            balance = float(result['bid_account']['balance'])

            locked = float(result['bid_account']['locked'])

 

    except:

        balance = -1

    return message, balance, locked

 

#balance:주문가능 금액, locked:미체결 주문금액 

message, balance, locked = get_chance(up, coin_name) 

print(message, balance, locked)

-------------------------------------------------------------------

YunHo Lee님의 프로필 이미지
YunHo Lee
질문자

감사합니다!