-
-
Notifications
You must be signed in to change notification settings - Fork 77
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
order 취소가 잘 안되요 #13
Comments
그냥 함수로 하면 안되는것 같고, aaa= ordercall하면 되는것 같아요 |
안녕하세요. 늦었지만 리포트 감사합니다. 설명을 너무 짧게 해주셔서 실제 문제가 되셨던 상황을 구체적으로 상상하기가 어려운데요. 1.자칫하면 사람들이 헷갈려할 수 있는 부분이라고 생각이 드는점을 짚어보자면, 최초 주문을 위한 stream = entrypoint.OrderCall(request_name, screen_no, account_no, order_type, code, quantity, price, quote_type, original_order_no)
stream.cancel() 여기서의 예외적으로 만약에 실제 gRPC 서버단에서 주문요청을 키움증권측에 전송하기 이전에 2.그래서 말씀주신 것 처럼 실제 주문취소를 위해서는 이를 위한 아래 설정은 위에서 링크한 문서에서의 매수 취소 예시 설정을 그대로 가져온 것입니다. request_name = "RQ_1"
screen_no = "0101"
account_no = "5015123410"
order_type = 3 # 매수취소 (1:신규매수, 2:신규매도, 3:매수취소, 4:매도취소, 5:매수정정, 6:매도정정)
code = "000660"
quantity = 10
price = 0
quote_type = "00"
original_order_no = "2" # 취소할 주문 번호
stream = entrypoint.OrderCall(request_name, screen_no, account_no, order_type, code, quantity, price, quote_type, original_order_no) |
제가 처음은 그냥 ordercall함수를 사용하고 return되는 값을 변수에게 부여하지 않았습니다. 즉 아래와 같이 |
아 그렇군요. 이해했습니다. 이 부분은 제가 몰랐던 내용이네요. 지금 당장 추측하기로는 문제가 되었던 "리턴값이 없는 형태로 호출" 의 경우, 반환되었어야할
|
해당 이슈가 현재 알려주신 workaround 는 있지만 근본적으로 현재 배포중인 코드상에서 해결된 것은 아닌 상황인데요. |
이런 문제는 C++ 프로그래밍에서 흔하게 발생하는 문제인데, L-Value가 없는 R-Value인 경우 (즉 FunctionCall 한 결과를 assignment할 변수가 없는 경우) 컴파일러에서 최적화를 위해 평션 콜을 아예 제외시켜버립니다. Python에서도 Generator의 객체가 변수에 저장되지 않는 경우 유사한 최적화를 하는 것 같네요. 디버거를 이용했을 때는 괜찮았다는 말은, 디버거는 리턴값을 추적하기 위해 디버거 내부적으로 L-Value(변수)에 저장하게 되면서, 펑션콜이 제외되지 않은 경우입니다. 혹은 lazy evaluation 때문에 assignment 하기전에는 연산을 하지 않는 Generator 객체의 특성 때문일수도 있습니다. 언어적 특성에서 오는 한계이니 그냥 L-Value = (assignment)를 하도록 가이드 하는 것이 맞다고 생각됩니다. |
Debug시 test로 진행할경우 order취소가 되는데, 실제 프로그램 실행시 최소가 안되요,
무슨 원인인지 파악하기가 어렵네요.
The text was updated successfully, but these errors were encountered: