이베스트증권

HTS연동

에어버스 2018. 7. 21. 15:00

HTS연동

OPEN_SCREEN 로 지정한 화면번호을 호출하면 HTS 해당창이 열리지만 다른 옵션들은 어떤 용도로 쓰는지 모름.

RequestLinkToHTS() 과 AdviseLinkFromHTS() 호출해서 실시간 요청하면 OnRececeiveLinkData()에서 실시간 데이터를 받지만 빈 문자열만 들어온다.

8행으로 시간외단일가 창을 열면 잔량, 호가 변화에 따른 데이터 수신이 안되고 처음 한번만 빈 문자열 데이터 수신하고 반응이 없다가 종목을 바꾸면 실시간 데이터 수신되지만 빈 문자열이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
BEGIN_MESSAGE_MAP(CNewBuyDlg, CDialogEx)
...
    ON_MESSAGE(WM_USER + XM_RECEIVE_LINK_DATA, &CNewBuyDlg::OnXMReceiveLinkData)
END_MESSAGE_MAP()
 
void CNewBuyDlg::OnBnClickedButton1()
{
    BOOL bResult = g_iXingAPI.RequestLinkToHTS(GetSafeHwnd(), TEXT("&OPEN_SCREEN"), TEXT("5110"));
    if (bResult == FALSE)
        AfxMessageBox(TEXT("화면연동 요청 실패!!!"));
    else
        g_iXingAPI.AdviseLinkFromHTS(GetSafeHwnd());
 
    bResult = g_iXingAPI.RequestLinkToHTS(GetSafeHwnd(), TEXT("&STOCK_CODE"), TEXT("037070")); // 8행에서 오픈한 창에서 종목을 변경
    if (bResult == FALSE)
        AfxMessageBox(TEXT("화면연동 요청 실패!!!"));
    else
        g_iXingAPI.AdviseLinkFromHTS(GetSafeHwnd());
}
 
LRESULT CNewBuyDlg::OnXMReceiveLinkData(WPARAM wParam, LPARAM lParam)
{
    if (LINK_DATA == wParam)
    {
        LINKDATA_RECV_MSG* pmsg = (LINKDATA_RECV_MSG*)lParam;
        CString strLinkName(pmsg->sLinkName);
        CString strLinkData(pmsg->sLinkData);
        // g_iXingAPI.ReleaseMessageData(lParam); // 예외발생
    }
    return 0L;
}
cs