반응형


          [GetConditionLoad() 함수]

          

          사용자 조건검색 목록을 서버에 요청합니다. 조건검색 목록을 모두 수신하면 OnReceiveConditionVer()이벤트 함수가 호출됩니다.

          조건검색 목록 요청을 성공하면 1, 아니면 0을 리턴합니다.

          



          [GetConditionNameList() 함수]

          

          서버에서 수신한 사용자 조건식을 조건명 인덱스와 조건식 이름을 한 쌍으로 하는 문자열들로 전달합니다.

          조건식 하나는 조건명 인덱스와 조건식 이름은 '^'로 나뉘어져 있으며 각 조건식은 ';'로 나뉘어져 있습니다.

          이 함수는 반드시 OnReceiveConditionVer()이벤트 함수안에서 사용해야 합니다.

          



          [SendCondition() 함수]

          

          SendCondition(

          BSTR strScrNo,    // 화면번호

          BSTR strConditionName,  // 조건식 이름

          int nIndex,     // 조건명 인덱스

          int nSearch   // 조회구분, 0:조건검색, 1:실시간 조건검색

          )

          

          서버에 조건검색을 요청하는 함수로 맨 마지막 인자값으로 조건검색만 할것인지 실시간 조건검색도 할 것인지를 지정할 수 있습니다.

          여기서 조건식 인덱스는 GetConditionNameList()함수가 조건식 이름과 함께 전달한 조건명 인덱스를 그대로 사용해야 합니다.

          리턴값 1이면 성공이며, 0이면 실패입니다.

          요청한 조건식이 없거나 조건명 인덱스와 조건식이 서로 안맞거나 조회횟수를 초과하는 경우 실패하게 됩니다.

          

          ------------------------------------------------------------------------------------------------------------------------------------

          

          [조건검색 사용예시]

          GetConditionNameList()함수로 얻은 조건식 목록이 "0^조건식1;3^조건식1;8^조건식3;23^조건식5"일때 조건식3을 검색

          

          long lRet = SendCondition("0156", "조건식3", 8, 1);

          

          ------------------------------------------------------------------------------------------------------------------------------------

          



          [SendConditionStop() 함수]

          

          SendConditionStop(

          BSTR strScrNo,    // 화면번호

          BSTR strConditionName,    // 조건식 이름 

          int nIndex    // 조건명 인덱스

          )

          

          조건검색을 중지할 때 사용하는 함수입니다.

          조건식 조회할때 얻는 조건식 이름과 조건명 인덱스 쌍을 맞춰서 사용해야 합니다.

          

          


          [SetRealReg() 함수]
          
          SetRealReg(
          BSTR strScreenNo,   // 화면번호
          BSTR strCodeList,   // 종목코드 리스트
          BSTR strFidList,  // 실시간 FID리스트
          BSTR strOptType   // 실시간 등록 타입, 0또는 1
          )
          
          실시간 시세를 받으려는 종목코드와 FID 리스트를 이용해서 실시간 시세를 등록하는 함수입니다.
          한번에 등록가능한 종목과 FID갯수는 100종목, 100개 입니다.
          실시간 등록타입을 0으로 설정하면 등록한 종목들은 실시간 해지되고 등록한 종목만 실시간 시세가 등록됩니다.
          실시간 등록타입을 1로 설정하면 먼저 등록한 종목들과 함께 실시간 시세가 등록됩니다
          
          ------------------------------------------------------------------------------------------------------------------------------------
          
          [실시간 시세등록 예시]
          OpenAPI.SetRealReg(_T("0150"), _T("039490"), _T("9001;302;10;11;25;12;13"), "0");  // 039490종목만 실시간 등록
          OpenAPI.SetRealReg(_T("0150"), _T("000660"), _T("9001;302;10;11;25;12;13"), "1");  // 000660 종목을 실시간 추가등록
          
          ------------------------------------------------------------------------------------------------------------------------------------
          


          [SetRealRemove() 함수]

          

          SetRealRemove(

          BSTR strScrNo,    // 화면번호 또는 ALL

          BSTR strDelCode   // 종목코드 또는 ALL

          )

          

          실시간 시세해지 함수이며 화면번호와 종목코드를 이용해서 상세하게 설정할 수 있습니다.

          

          ------------------------------------------------------------------------------------------------------------------------------------


          [실시간 시세해지 예시]

          OpenAPI.SetRealRemove("0150", "039490");  // "0150"화면에서 "039490"종목해지

          OpenAPI.SetRealRemove("ALL", "ALL");  // 모든 화면에서 실시간 해지

          OpenAPI.SetRealRemove("0150", "ALL");  // 모든 화면에서 실시간 해지

          OpenAPI.SetRealRemove("ALL", "039490");  // 모든 화면에서 실시간 해지

          

          ------------------------------------------------------------------------------------------------------------------------------------

          


          [OnReceiveConditionVer() 이벤트]
          
          OnReceiveConditionVer(
          LONG lRet, // 호출 성공여부, 1: 성공, 나머지 실패
          BSTR sMsg  // 호출결과 메시지
          )
          
          사용자 조건식요청에 대한 응답을 서버에서 수신하면 호출되는 이벤트 함수입니다.
          
          ------------------------------------------------------------------------------------------------------------------------------------
          
          [사용자 조건식 호출결과 수신예시]
          OnReceiveConditionVer(long lRet, LPCTSTR sMsg)
          {
              if(lRet != 0) return;
              
              CString strCondList(m_KOA.GetConditionNameList());
              CString strOneCond, strItemID, strCondName;
              while(AfxExtractSubString(strOneCond, strCondList, nIndex++, _T(';')))  // 조건식을 하나씩 분리한다.
              {
                  if(strOneCond.IsEmpty()) continue;
                  AfxExtractSubString(strItemID , strOneCond, 0, _T('^'));  // 조건명 인덱스를 분리한다.
                  AfxExtractSubString(strCondName , strOneCond, 1, _T('^'));  // 조건식 이름을 분리한다.
              }
          }
          
          ------------------------------------------------------------------------------------------------------------------------------------
          
          


          [OnReceiveTrCondition() 이벤트]

          

          OnReceiveTrCondition(

          BSTR sScrNo,    // 화면번호

          BSTR strCodeList,   // 종목코드 리스트

          BSTR strConditionName,    // 조건식 이름

          int nIndex,   // 조건명 인덱스

          int nNext   // 연속조회 여부

          )

          

          조건검색 요청으로 검색된 종목코드 리스트를 전달하는 이벤트 함수입니다. 

          종목코드 리스트는 각 종목코드가 ';'로 구분되서 전달됩니다.

          

          ------------------------------------------------------------------------------------------------------------------------------------

          

          [조건검색 결과 수신예시]

          OnReceiveTrCondition(LPCTSTR sScrNo,LPCTSTR strCodeList, LPCTSTR strConditionName, int nIndex, int nNext)

          {

              if(strCodeList == "") return;

              CString strCode, strCodeName;

              int   nIdx = 0;

              while(AfxExtractSubString(strCode, strCodeList, nIdx++, _T(';')))// 하나씩 종목코드를 분리

              {

                  if(strCode == _T("")) continue;

                  strCodeName = OpenAPI.GetMasterCodeName(strCode); // 종목명을 가져온다.

              }

          }

          

          ------------------------------------------------------------------------------------------------------------------------------------

          


          [OnReceiveRealCondition() 이벤트]
          
          OnReceiveRealCondition(
          BSTR strCode,   // 종목코드
          BSTR strType,   //  이벤트 종류, "I":종목편입, "D", 종목이탈
          BSTR strConditionName,    // 조건식 이름 
          BSTR strConditionIndex    // 조건명 인덱스
          )
          
          실시간 조건검색 요청으로 신규종목이 편입되거나 기존 종목이 이탈될때 마다 호출됩니다.
          
          ------------------------------------------------------------------------------------------------------------------------------------
          
          [실시간 조건검색 수신예시]
          OnReceiveRealCondition(LPCTSTR sCode, LPCTSTR sType, LPCTSTR strConditionName, LPCTSTR strConditionIndex)
          {
              CString strCode(sCode), strCodeName;
              int   nIdx = 0;
              CString strType(sType);
              if(strType == _T("I"))// 종목편입
              {
                strCodeName = OpenAPI.GetMasterCodeName(strCode); // 종목명을 가져온다.
                long lRet = OpenAPI.SetRealReg(strSavedScreenNo, strCode, _T("9001;302;10;11;25;12;13"), "1");// 실시간 시세등록
              }
              else if(strType == _T("D")) // 종목이탈
              {
                OpenAPI.SetRealRemove(strSavedScreenNo, strCode);// 실시간 시세해지
              }
          }
          
          ------------------------------------------------------------------------------------------------------------------------------------
          
          


반응형

+ Recent posts