sharebook-kr / pybithumb

python wrapper for bithumb API
MIT License
94 stars 55 forks source link

buy_market_order 오류 #26

Closed jonghui007 closed 3 years ago

jonghui007 commented 3 years ago

안녕하세요. 시장가 매수 주문 관련 오류가 있는것 같습니다.

이게 Bithumb 자체의 오류인지, 이 모듈 오류인지는 알 수 없으나, 총매수 가능 수량 이하로 주문을 넣어도 잔고 부족으로 에러코드가 뜨네요.

대충 입력값을 변형 해 본 결과... 약 25% 낮게 넣어야 주문이 되는 것 같습니다. 수수료는 최고가 0.25%인걸로 알고 있는데 어디에서 에러가 날까요?

도움 주시면 감사하겠습니다.

kimhs950627 commented 3 years ago

마찬가지입니다. 시장가 매수 자체가 잘 안 되는 것 같습니다. 캐글, 구글 콜랩, 제 아마존 AWS 우분투에서도 다 안 돌아갑니다. 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)

이후 order=buy_crypto_currency('BTC')하고 print(order)를 하면 계속 none이 나오고, krw를 인위적으로 1000, 10000원으로 넣어도 status 5600 에러가 뜨면서 잔고부족이라고 뜹니다. 참고로 sell_market_order도 마찬가지입니다.

kimhs950627 commented 3 years ago

다시 체크해 보니 function으로 묶지 않고 그냥 개별 코드를 실행하면 괜찮게 굴러가는 것 같습니다.

kimhs950627 commented 3 years ago

지금까지 발견한 오류는 이렇습니다: -buy sell 모두 특정 함수로 묶어서 사용하면 오류가 납니다. -buy의 경우 buy_market_order('코인이름',unit)으로 실행하는데 unit이 소수점 넷째자리까지만 있어야 합니다. 즉 0.0001은 되고 0.000123456은 안 됩니다. 임시방편으로 unit=math.floor(10000*unit)/10000 으로 강제적으로 소수 넷째자리까지만 살리고 나머지 숫자는 없애는 식으로 쓰고 있습니다.

kimhs950627 commented 3 years ago

아니네요..여전히 안 됩니다. 주문량이 사용가능 을 초과하였습니다 , status 5600 에러 계속 뜹니다..

kimhs950627 commented 3 years ago

저도 윗분처럼 unit에 0.75를 곱하여 돌리고 있습니다. 매수 되는 것 확인했습니다. 어디가 오류인지 모르겠네요ㅠ책에 있는 코드 그대로 따라했는데..

mr-yoo commented 3 years ago

분석하신게 맞습니다. 시장가 주문은 빗썸에서 약 70%정도만 주문할 수 있도록 제한 한 것으로 보입니다.