LS api 현물 주문 CSPAT00600 가격 처리 주의
ls 증권 api의 현물 주문 트랜잭션인 CSPAT00600을 이용할 때 가격은 소수 두 자리까지 표시된 실수형 대이터를 문자열로 바꿔 보내야 한다. 가격 문자열의 크기는 13.2로서 13자리 가운데 소수점이 한 자리를 차지하고 소수가 두 자리를 차지하여 실제 값은 열 자리가 된다. 실수형 대이터를 문자열로 받을 때에는 일관되지 않게 소수가 포함된 경우와 포함되지 않은 경우가 있다. 어느 경우에 해당되는지 레퍼런스에는 특정이 되어 있지 않기 때문에 받아 보고 확인해야 한다. 그러나 보낼 때에는 늘 소수를 포함한 문자열로 만들어야 한다. 이러지 않으면 실제 서버에서 입력 포매트가 맞지 않는다며 오류로 처리한다.
문제는 모의 서버에서 매매를 할 때 가격을 정수로 보내도 처리가 된다는 거다. 예를 들어 1000을 보내면 오류로 처리되거나 10.00으로 처리되는 게 아니라 1000 그대로 처리된다. 그런데 늘 이렇게 처리가 되는 것도 아니고 되다 안 되다 한다. 거의 잘 되기는 하는데 드물게 주문 가능 금액을 넘어선 주문이라며 오류 메시지를 반환하기도 한다. 이렇게 아무 생각 없이 가격을 정수 형태의 문자열로 송신하면 예상하지 못한 오류가 생길 수 있고 이런 경우는 잡아내기도 힘들기 때문에 유의하는 게 좋다. 가격은 번거롭더라도 레퍼런스에 따라 소수 두자리의 실수 형태 문자열로 보내야 한다.
모의 서버의 매매 처리는 실제 서버와 이렇게 조금 다르므로 모의 서버에서 테스트를 마친 게 실제 서버에서는 제대로 되지 않을 수 있다. 모의 서버는 실제 서버처럼 수신된 주문 패킷 대이터를 엄격하게 처리하지는 않는다.