• 카테고리

    질문 & 답변
  • 세부 분야

    금융 · 재테크

  • 해결 여부

    미해결

robobits_adv2.py 파일에서 TypeError: 'NoneType' object is not subscriptable 오류 발생하면서 멈췄어요.

22.04.07 12:39 작성 조회수 683

0

베이지안 최적화로 파라미터를 찾은다음 robobits_adv2.py를 구동 해봤습니다.

잘 되나 싶더니 10시간 정도 돌아가면서 매수 매도를 진행하다가 갑자기 봇이 멈추더라구요.

로그파일을 보니 아래와 같은 에러 메시지가 나옵니다.

이것만 해결하면 봇이 안 멈추고 24시간 동안 돌아갈 것 같은데... 

이런 경우 어떻게 해결 할 수 있을까요? 

답변 2

·

답변을 작성해보세요.

1

현재 최신소스를 사용하고 계시네요.

제가 프로그래밍할 때 발생하지 않았던 오류가 yoon님 운영환경에서 발생하는 것 같습니다.

처리 프로세스는 다음과 같습니다. 

1. 매수처리하고 결과 받기 result = up.buy_limit_order(coin_name, price, amt) 

2. result 변수에 저장된 메시지에서 오류가 발생하지 않으면(result['error']['message']가 정상적으로 처리되지 않는 경우) 

3. result 변수에서 uuid를 찾아서(uuid = result['uuid']) 반환

 

yoon님 운영환경에서는 오류 메시지가 없음에도 불구하고 반환값에 uuid가 없는 경우(정상적으로 매수가 되지 않는)인 것 같습니다.

오류를 방지하기 위해 다음과 같이 처리해야할 것 같습니다.

 

    try: #error message check

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

    except: #no error message -> normal state

        if message == '':

            message = 'good'

            try:

                uuid = result['uuid']

            except: 

                message = 'unknown error'

                uuid = ''

 

감사합니다.

yoon님의 프로필

yoon

질문자

2022.04.07

멀티코어님,

왜 오류가 발생하는지 설명도 해주시고 해결도 해주셔서 정말 감사드립니다.

알려주신대로 코드 수정 했습니다.

ubuntu20.04 환경에 python3.7.7 버전 사용중인데, 일단 코드 수정 해 놓은 상태에서 왠만하면 이 운영환경을 유지해야 할 것 같아요.

정말 감사드립니다!

추가 강의 제작을 하신다고 들었는데, 강의 나오면 추가 결제 바로 하겠습니다^^

0

지금 사용하시는 buy_limit_order 함수 소스 코드를 알려주세요

yoon님의 프로필

yoon

질문자

2022.04.07

아래와 같습니다.

 

#지정가 매수

def buy_limit_order(up, coin_name, price, amt):

    message = ''

    uuid = 'none'

    result = {'uuid': ''}

 

    try: 

        result = up.buy_limit_order(coin_name, price, amt)

    except:

        message = "{}".format(sys.exc_info())

 

    try: #error message check

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

    except: #no error message -> normal state

        if message == '':

            message = 'good'

            uuid = result['uuid']

 

    return message, uuid