3. 비트코인 선물/3-4. 오류 해결

(파이썬) TypeError: unsupported operand type(s) for -: 'str' and 'str' 오류 해결

봄이오네 2022. 11. 2. 08:07
반응형
목 차
1. 들어가며
2. 오류 발생 과정
  1) OHLC의 1분봉 데이터 수신받음
  2) 에러는 패턴(pattern)의 연산에서 나온다.
3. 오류 해결 방법
4. 전체코드
5. 마치며

1. 들어가며

바이비트API를 통해 패턴을 만드는 과정에서

아래의 오류가 발생하였다.

  • 오류 내용 : TypeError: unsupported operand type(s) for -: 'str' and 'str'

"지원되지 않는 피연산자 유형"이라는 메시지이다.

 

그림. 지원되지 않는 피연산자 유형 오류


2. 오류 발생 과정

1) OHLC의 1분봉 데이터 수신받음

바이비트API에서 시가, 고가, 저가, 저가의 1분봉을 받았고,

패턴을 만들기 위해,

(고가-시가)&(저가-시가)&(저가-시가)의 형태로 만드려고 하였다.

open = resp['result'][0]['open']
high = resp['result'][0]['high']
low = resp['result'][0]['low']
close = resp['result'][0]['close']
pattern = (high-open)&(low-open)&(close-open)

 

2) 에러는 패턴(pattern)의 연산에서 나온다.

바이비트API에서 받아오는 데이터의 태형은 문자형(str)이다.

결국 이 오류는 문자형끼리는 서로 연산할 수 없다는 내용이다.

 ※ 예외적으로 "문자형 + 문자형"은 서로 붙여서 출력해 달라는 의미이다.


3. 오류 해결 방법

바이비트에서 받아오는 데이터는 실수형(float)로 바꾼다.

 

비트코인은 소수점 1자리까지 나오는 값을 가진다.

예를 들어, 2022-10-29 20:56분 현재 비트코인 가격은 20,703.50이다.

→ 문자형(20,703.50)을 사칙연산을 위해서는 float로 변경해 준다.

     (int를 붙이면, 정수화되기 때문에 가격의 소수점이 없어진다)


4. 전체 코드

패턴(pattern)부분을 변경하였다.

문자형인 open, high, low, close 앞에

float를 붙여서 실수로 만들고 사칙연산을 적용하고,

문자형(str)을 만들어주고 연결(+)해 준다.

  • (당초) pattern = (high-open) & (low-open) & (close-open)
  • (변경) pattern = str(float(high)-float(open)) + str(float((low)-float(open() + str(float((close)-float(open))
open = resp['result'][0]['open']
high = resp['result'][0]['high']
low = resp['result'][0]['low']
close = resp['result'][0]['close']
pattern = str(float(high)-float(open)) + str(float(low)-float(open)) + str(float(close)-float(open))

5. 마치며

OHLC 간 사칙연산을 통해 패턴을 만들때,

float형으로 바뀌어주고, 문자화 시킨 후 연결(+)시켜주는 게 조금 어려웠다.

 

앞으로는 바이비트API를 통해 수신받는 데이터의 태형에 대해 관심을 갖자.

반응형