본문 바로가기

Python, API32

[XINGAPI] 해외선물 분봉데이터 조회 - o3123 o3123InBlock mktgb에 선물을 조회할 경우 F, 옵션일 경우 O를 입력하고 shcode에 종목코드 그리고 ncnt에 분봉 주기를 정수로 입력하면 된다. readcnt의 경우에는 출력되는 조회건수를 지정하는 것인데 최대 500건까지 가능하며 cts_data와 cts_time의 경우 연속 조회의 경우에만 사용하기 때문에 일단 최초 조회 시에는 비워두면 된다. o3123OutBlock / o3123OutBlock1 outblock이 두 가지인데 각각 GetFieldData함수를 통해서 정보를 가져와야 한다. o3123OutBlock은 분봉 데이터의 가격정보가 담겨있는 o3123OutBlock1의 데이터의 개수와 한 번에 최대 500개까지만 분봉을 조회할 수 있기 때문에 이후 추가적인 데이터를 조회.. 2022. 6. 29.
[XINGAPI] 해외선물 실시간체결정보 가져오기 - OVC XINGAPI로 실시간데이터를 가져오는 코드를 구성해봤다. 일단 Devcenter를 실행한 후 Real 목록에 있는 항목 중 원하는 것들을 골라서 코드를 구성하면 된다. 해외선물은 아래와 같이 7개의 항목이 있는데 이 중 실시간체결정보는 '[OVC] 해외선물 체결' 정보를 가져오면 된다. TR이나 Real도 모두 마찬가지인데 서버에 요청사항을 보내는 과정은 아래와 같다. 1. ResFileName 요청할 TR이나 Real에 해당하는 res파일 지정 2. SetFieldData Inblock, 입력데이터에서 정의하고 있는 사항들을 SetFieldData로 정의해야한다. 그런데 위의 경우에는 symbol, 종목코드만 입력하면 된다. 3. AdviseRealData (TR의 경우 Request) 위의 1, 2.. 2022. 6. 29.
텔레그램의 I/O Bound 해결 텔레그램의 API를 활용하면 시스템트레이딩 중에 매수나 매도 시그널이 발생할 경우 지정된 사용자의 텔레그램 계정으로 메시지를 보낼 수 있다. 그런데 우연히 프로그램의 로그파일을 보다가 소요시간이 생각보다(?) 오래 걸리는 걸 발견했는데, 텔레그램으로 메시지를 보낼 때 서버와 교신하면서 발생하는 네트워크의 지연시간 때문이라는 걸 알게 되었다. 결론적으로는 멀티스레드 기능을 활용하는 모듈 등을 이용해서 텔레그램의 API로 메시지를 보내면 되겠다 싶어서 한동안 AIOGRAM, ASYNCIO 같은 모듈을 공부했었는데 수준이 만만치 않았다. 그런데 생각해보니 내 입장에선 원격으로 텔레그램에 메시지나 정해놓은 명령문을 보내고 정보를 다시 리턴 받는 건 필요가 없고 정해놓은 상황에 시스템이 보내주는 메시지만 확인하면.. 2021. 9. 13.
CMD 실행창 이름 변경하기 실시간으로 프로그램의 실행여부를 감지하는 방법이 없을까 고민했는데 명령 프롬프트로 Python 코드를 실행할 경우 프로그램이름이 제대로 표시되지 않아서 win32gui를 써서 감지하기가 쉽지 않았는데 의외로 간단한 해결방법이 있었다. CMD 실행창의 이름을 변경하면 된다. 그리고 START명령으로 여러개의 프로그램을 호출할 경우에는 START명령에 제목을 달아주면 된다. 변경전 변경후 START명령 사용시 start python.exe script1.py start python.exe script2.py start "Program_name_1" python.exe script1.py start "Program_name_2" python.exe script2.py 2021. 9. 3.
QEventloop QEventloop에 대한 이해가 부족해서 간단한 예시를 만들어 보았다. timer0, timer1, timer2를 순차적으로 등록 실행하고 1초마다 실행한다. timer0은 check변수를 1씩 더하고 10이 되면 QEventloop를 종료시킨다. timer1은 무조건 실행 timer2는 eventloop가 실행되고 있지 않을때만 print create_event_loop함수를 통해 QEventloop를 실행하고 이 이벤트루프가 timer0에 의해 종료되는 시점까지 create_event_loop함수는 대기하고 있다가 '이벤트루프종료'라는 메세지를 출력한다. run_other함수는 create_event_loop함수 내에서 이벤트루프가 종료되기 전에 실행되지 않는다. 1 2 3 4 5 6 7 8 9 1.. 2021. 7. 14.