[키움 조건검색식 주식자동매매(16)] 실시간 매수 주문하기(중복매수 방지, 매수조건 확인)
본문 바로가기

주식 자동매매 강의/중급반(시황 및 차트 구현)

[키움 조건검색식 주식자동매매(16)] 실시간 매수 주문하기(중복매수 방지, 매수조건 확인)

반응형

 조건 검색식 종목도 가져왔고 실시간 등록도 하였습니다. 이제 실시간 현재가가 원하는 조건이 되었을 때 매수하는 알고리즘을 작성해 보겠습니다. 관련 코드는 기초반 강의와 95% 동일하니 참고하시기 바랍니다.

 

실시간 매수 주문하기

 오늘은 매수 주문을 위한 코드만 살펴보도록 하겠습니다.

반응형

실시간 매수 주문하기
실시간 매수 주문하기

 (1) 장 중 멈춤을 확인하는 stop_mesu가 0이고(1이면 장 중 매수가 멈추게 됩니다) 오늘 매수할 종목의 코드를 모아놓은 code_list에 현재 실시간으로 넘어오는 sCode가 존재해야 매수가 시작됩니다. 만약 code_list에 sCode가 없는 경우 매수되지 않습니다. 예를 들어 계좌평가 잔고내역에 있는 종목들은 매도만 관리하므로 code_list에 없기 때문에 중복 매수되지 않습니다.

 

 (2) 매매 가격 파악하기 : 이 부분이 매우 중요합니다. b에는 지금 현재가가 들어가게 되고 mesu_sta_port에는 기준이되는 매수 시작가가 들어가게 됩니다. (즉 현재가 - 매수 시작가) / 매수 시작가 * 100을 하면, 매수 시작가 대비 현재가가 얼마나 높거나 낮은지 알 수 이 있습니다. 현재가가 11000원이고 매수 시작가가 10000원이면 meme_rate는 10%가 된다는 뜻입니다. 그리고 소주점으로 나타날 수 있기 때문에 round 함수를 사용하여 소수점 첫째 자리까지 계산합니다.

 

 (3) 매매 조건 파악하기 : 매매 가격도 파악했으니 우리가 매매하려는 1차 가격에 도달하였는지 파악합니다. 제가 매수하는 방법은 쫒아가지 않는 방법이므로 만약 1차 가격이 -2%였다면 meme_rate가 -2%보다 더 작아질 때까지 기다린 후 매수를 실시합니다. 즉 매수 시작가가 10000 원이고 현재가가 9800원이 되는 순간 매수 주문을 넣겠다는 뜻입니다.

 

 (4) 중복매수 방지하기 : sCode가 위의 (3)까지 통과하면, 감시 가격 1에 대해서는 다시 매수 주문이 들어가면 안 됩니다. 즉, 중복 매수가 들어가게 되면, 우리의 피 같은 돈이 줄줄 새어나가겠죠. 따라서, orderittemlist_1에 현재 들어오는 sCode가 들어 있지 않아야지만 아래 코드를 실행합니다. 그리고 혹시나 0.1초 사이에 틱이 2번 변하여 우리 컴퓨터가 구분하지 못하는 사이에 sCode가 2번 들어오게 되더라도 중복 매수가 됩니다. 다라서, wa라는 리스트에 sCode를 저장합니다.

 

 (5) 만약 wa의 길이가 2개 이상일 경우에는 0.1초 사이에 틱이 2번 변하여(상당히 거래가 활발한 아이겠죠, 순간 거래량이 폭발한 것입니다.) 매수 주문이 2번 들어갈 것 같으니, 이번 주문은 하지 않고 clear 시킵니다. 그렇지 않을 경우 매수 주문이 실행됩니다.

 

 

 

 (6) 매수 주문이 들어오면 Qtest.qwait를 사용하여 2초간 대기합니다. 가끔 별로 좋지 못한 조건 검색식을 사용할 경우 무지막지하게 종목이 등록되는 경우가 있습니다. 이때, 매수 조건이 달성돼 1초에 5번 이상의 매수 주문이 될 수 있습니다. 키움에서는 1초에 5번 이상의 요처에 대한 것을 엄격히 금지하기 때문에 안전하게 2초를 기다리게 합니다.

 (7) 매매수량을 계산합니다. 우선 우리가 각 종목마다 매수할 금액에 미수할 비중을 곱합니다. 예를 들어 100만 원의 25%이면 25만 원 치가 되겠군요. 거기에 매수 시작가를 나누게 되면 매수수량이 나오게 됩니다. 예를 들어 매수 시작가가 10000원이면 25주가 되겠네요. 

 매매 수량도 계산 되었으니 이번 주문에 대한 중복 매수를 방지하기 위해 orderittemlist_1에 sCode를 저장 합니다. 그리고 sendorder함수를 사용하여 현 종목에 대한 매수 주문을 전송합니다. sendorder함수의 각 변수들은 기초반에서 아주 상세히 설명되어 있으니 반드시 기초반의 매수하기 강의를 수강해 주십시오.

 

[링크 : 실시간 종목 원하는 가격에 매수하기(기초반)]

 

 (8) 매수 데이터베이스를 만듭니다. mesu_database 텍스트를 생성한 후 코드번호/현재가/체결시간 등의 정보를 저장합니다.

 

오늘 강의는 후다닥 마치겠습니다. 오랜만에 배 타고 포스팅하려니 멀미가.......비오는 날에 실험을 가다니... 동해바다는 맑습니다. 이놈의 파도는 도저히 적응이 되지 않는군요. 아마 내일 처음으로 1일 1포 스팅이 어려울 것 같습니다. 이제 태풍도 지나가고 실험이 잦아질 것 같은데 최대한 빨리 조건 검색식 강의를 마무리해야겠습니다.

 

자세한 설명은 링크 타시고 기초반 강의를 보시기 바랍니다. 감사합니다.

반응형

.link_tit