uJhin / upbit-client

Upbit(업비트) Cryptocurrency Exchange Open API Client of Multi-Programming Language Support
https://ujhin.github.io/upbit-client-docs/
MIT License
55 stars 43 forks source link

주문리스트 및 주문 조회시 response state 에 대한 질문 #29

Closed YunTaeIl closed 2 years ago

YunTaeIl commented 2 years ago

공식 문서에 반환되는 state는 3가지로 wait, cancel, done 이라고 적혀있습니다. wait(주문대기), cancel(주문취소), done(체결완료) 라고 되어있는데

매수 주문에 관한 주문 조회시 wait 상태에서 -> cancel 상태이고 매도 주문 관한 주문 조회시 wait 상태에서 -> done 상태로 바뀌는데 의도하신건지 궁금해서 물어봅니다.

쉽게 말해서 bid(매수) 측 에서는 주문 체결시 cancel 상태가 되고 ask(매도) 측에서는 주문 체결시 done 상태가 됩니다.

uJhin commented 2 years ago

문의하신 내용만으로는 정확한 원인을 알 수 없습니다.

uJhin commented 2 years ago

Sample

테스트 결과, 아무런 문제가 발생하지 않았습니다. 주문에 필요한 최소 금액, 혹은 주문에 필요한 다른 매개 변수가 잘못되었는지 체크해보시기 바랍니다.

해당 Issue는 Close 하겠습니다.

YunTaeIl commented 2 years ago

파일1 파일2

주말에 귀찮게 해드려서 죄송합니다.

근데 사진에서 보시는것처럼 매수 요청을 보내면 거래는 맞게 진행되는데 cancel 로 기록이됩니다. @uJhin

uJhin commented 2 years ago

@YunTaeIl 님,

업비트 웹/앱에서 표시되는 거래내역은 체결 목록이며, Open API에서 확인하실 수 있는 내용은 주문 목록입니다. 하나의 주문에 여러 개의 체결이 발생할 수 있으므로 두 내용은 다를 수 있습니다.

체결 목록을 확인하기 위해서는 주문 조회 API 응답의 trades 필드를 통해 확인하실 수 있습니다.

주문 리스트 조회 API에서 시장가 주문이 조회되지 않는 경우, 시장가 매수 주문은 체결 후 주문 상태가 cancel, done 두 경우 모두 발생할 수 있습니다.

시장가로 체결이 일어난 후 주문 잔량이 발생하는 경우, 남은 잔량이 반환되며 cancel 처리됩니다. 대부분의 경우 소수점 아래 8자리까지 나누어 떨어지지 않는 미미한 금액이 주문 잔량으로 발생하게 됩니다.

만일 주문 잔량 없이 딱 맞아떨어지게 체결이 발생한 경우에는 주문 상태가 done이 됩니다. 예시) 현재 가격이 30,000 KRW인 디지털 자산을 시장가로 10,000 KRW 값어치만큼 매수하려는 경우

이처럼 소수점 아래 자릿수가 나누어 떨어지지 않는 시장가 매수 경우에는 소액의 잔량이 발생하여, 해당 잔량은 계좌로 반환되고 주문은 취소 처리됩니다. 시장가 매도 주문의 경우 수량을 통해 요청이 이루어지므로 나눗셈 연산이 없어 잔량이 발생하지 않습니다.

또한 주문 리스트 조회 API에는 states 필드가 있어, 여러 상태를 동시에 조회할 수 있는 점 참고 부탁드립니다.

해당 내용은 업비트 API 공식문서에 언급되어 있으며, 더 이상 혼동이 없도록 해당 프로젝트의 공식 문서에도 추가하여 기술하도록 하곘습니다.

이용해주셔서 감사합니다.

YunTaeIl commented 2 years ago

말씀하신 부분 잘 이해했습니다. 거래가 이루어지더라도 잔량이 남게 되면 cancel 상태가 된다는 말씀이군요 답변 감사합니다.