int xing::CSPAT00600_Request(BOOL nNext,CSPAT00600data data){ CSPAT00600InBlock1 pckInBlock; char szTrNo[] = "CSPAT00600"; char szNextKey[] = ""; QString price = QString::fromLocal8Bit(data.strOrdPrc); QString price1; QByteArray qt_byte; memset(&pckInBlock,' ',sizeof(pckInBlock)); int price_int = price.toInt(); if(price_int<5000){ price_int = price_int/5; price_int = price_int*5; }else if(price_int>=5000&&price_int<10000){ price_int = price_int/10; price_int = price_int*10; }else if(price_int>=10000&&price_int<50000){ price_int = price_int/50; price_int = price_int*50; }else if(price_int>=50000&&price_int<100000){ price_int = price_int/100; price_int = price_int*100; } price1 = QString("%1").arg(price_int); qt_byte = price1.toLocal8Bit(); data.strOrdPrc = qt_byte.data(); SetPacketData( pckInBlock.AcntNo , sizeof( pckInBlock.AcntNo ), data.strAcntNo , DATA_TYPE_STRING ); // 계좌번호 SetPacketData( pckInBlock.InptPwd , sizeof( pckInBlock.InptPwd ), data.strInptPwd , DATA_TYPE_STRING ); // 입력비밀번호 SetPacketData( pckInBlock.IsuNo , sizeof( pckInBlock.IsuNo ), data.strIsuNo , DATA_TYPE_STRING ); // 종목번호 SetPacketData( pckInBlock.OrdQty , sizeof( pckInBlock.OrdQty ), data.strOrdQty , DATA_TYPE_LONG ); // 주문수량 SetPacketData( pckInBlock.OrdPrc , sizeof( pckInBlock.OrdPrc ), data.strOrdPrc , DATA_TYPE_FLOAT_DOT, 2 ); // 주문가, Header Type이 B 인 경우 Data Type이 실수면 소수점을 포함해야 한다. SetPacketData( pckInBlock.BnsTpCode , sizeof( pckInBlock.BnsTpCode ), data.strBnsTpCode , DATA_TYPE_STRING ); // 매매구분 SetPacketData( pckInBlock.OrdprcPtnCode, sizeof( pckInBlock.OrdprcPtnCode ), data.strOrdprcPtnCode, DATA_TYPE_STRING ); // 호가유형코드 SetPacketData( pckInBlock.MgntrnCode , sizeof( pckInBlock.MgntrnCode ), data.strMgntrnCode , DATA_TYPE_STRING ); // 신용거래코드 SetPacketData( pckInBlock.LoanDt , sizeof( pckInBlock.LoanDt ), data.strLoanDt , DATA_TYPE_STRING ); // 대출일 SetPacketData( pckInBlock.OrdCndiTpCode, sizeof( pckInBlock.OrdCndiTpCode ), data.strOrdCndiTpCode, DATA_TYPE_STRING ); // 주문조건구분 int nRqID = ETK_Request(szTrNo,&pckInBlock,sizeof(pckInBlock),nNext,szNextKey,30); if(nRqID<0){ qDebug()<<"CSPAT00600_Request 실패"; } return nRqID; }
int xing::CSPAT00800_Request(BOOL nNext,CSPAT00800InBlock1data data){ CSPAT00800InBlock1 pckInBlock; char szTrNo[] = "CSPAT00800"; char szNextKey[] = ""; memset(&pckInBlock,' ',sizeof(pckInBlock)); SetPacketData( pckInBlock.OrgOrdNo , sizeof( pckInBlock.OrgOrdNo ), data.OrgOrdNo , DATA_TYPE_LONG ); // [long , 5] 레코드갯수 SetPacketData( pckInBlock.AcntNo , sizeof( pckInBlock.AcntNo ), data.AcntNo , DATA_TYPE_STRING ); // [string, 20] 계좌번호 SetPacketData( pckInBlock.InptPwd , sizeof( pckInBlock.InptPwd ), data.InptPwd , DATA_TYPE_STRING ); // [string, 8] 비밀번호 SetPacketData( pckInBlock.IsuNo , sizeof( pckInBlock.IsuNo ), data.IsuNo , DATA_TYPE_STRING ); // [string, 1] 잔고생성구분 SetPacketData( pckInBlock.OrdQty , sizeof( pckInBlock.OrdQty ), data.OrdQty , DATA_TYPE_LONG ); // [string, 1] 수수료적용구분 int nRqID = ETK_Request(szTrNo,&pckInBlock,sizeof(pckInBlock),nNext,szNextKey,30); return nRqID; }
int xing::t1101_Request(BOOL nNext,t1101InBlockdata data){ t1101InBlock pckInBlock; char szTrNo[] = "t1101"; char szNextKey[] = ""; memset(&pckInBlock,' ',sizeof(pckInBlock)); SetPacketData( pckInBlock.shcode , sizeof( pckInBlock.shcode ), data.shcode , DATA_TYPE_STRING ); int nRqID = ETK_Request(szTrNo,&pckInBlock,sizeof(pckInBlock),nNext,szNextKey,30); if(nRqID<0){ qDebug()<<"t0424_Request 실패"; } return nRqID; }
int xing::CSPAT00700_Request(BOOL nNext,CSPAT00700InBlock1data data){ CSPAT00700InBlock1 pckInBlock; char szTrNo[] = "CSPAT00700"; char szNextKey[] = ""; memset(&pckInBlock,' ',sizeof(pckInBlock)); SetPacketData( pckInBlock.OrgOrdNo , sizeof( pckInBlock.OrgOrdNo ), data.OrgOrdNo , DATA_TYPE_LONG ); // [long , 5] 레코드갯수 SetPacketData( pckInBlock.AcntNo , sizeof( pckInBlock.AcntNo ), data.AcntNo , DATA_TYPE_STRING ); // [string, 20] 계좌번호 SetPacketData( pckInBlock.InptPwd , sizeof( pckInBlock.InptPwd ), data.InptPwd , DATA_TYPE_STRING ); // [string, 8] 비밀번호 SetPacketData( pckInBlock.IsuNo , sizeof( pckInBlock.IsuNo ), data.IsuNo , DATA_TYPE_STRING ); // [string, 1] 잔고생성구분 SetPacketData( pckInBlock.OrdQty , sizeof( pckInBlock.OrdQty ), data.OrdQty , DATA_TYPE_LONG ); // [string, 1] 수수료적용구분 SetPacketData( pckInBlock.OrdprcPtnCode , sizeof( pckInBlock.OrdprcPtnCode ), data.OrdprcPtnCode , DATA_TYPE_STRING ); // [string, 1] 수수료적용구분 SetPacketData( pckInBlock.OrdCndiTpCode , sizeof( pckInBlock.OrdCndiTpCode ), data.OrdCndiTpCode , DATA_TYPE_LONG ); // [string, 1] 수수료적용구분 SetPacketData( pckInBlock.OrdPrc , sizeof( pckInBlock.OrdPrc ), data.OrdPrc , DATA_TYPE_FLOAT_DOT, 2 ); // 주문가, Header Type이 B 인 경우 Data Type이 실수면 소수점을 포함해야 한다. int nRqID = ETK_Request(szTrNo,&pckInBlock,sizeof(pckInBlock),nNext,szNextKey,30); return nRqID; }
int xing::t1452_Request(BOOL bNext){ t1452InBlock pckInBlock; int result_1; char szTrNo[] = "t1452"; memset(&pckInBlock,' ',sizeof(pckInBlock)); SetPacketData( pckInBlock.gubun , sizeof( pckInBlock.gubun ),"0", DATA_TYPE_STRING ); // [string, 1] 구분 SetPacketData( pckInBlock.jnilgubun, sizeof( pckInBlock.jnilgubun ),"1", DATA_TYPE_STRING ); // [string, 1] 전일구분 SetPacketData( pckInBlock.sdiff , sizeof( pckInBlock.sdiff ),"", DATA_TYPE_LONG ); // [long , 3] 시작등락율 SetPacketData( pckInBlock.ediff , sizeof( pckInBlock.ediff ),"", DATA_TYPE_LONG ); // [long , 3] 종료등락율 SetPacketData( pckInBlock.jc_num , sizeof( pckInBlock.jc_num ),"", DATA_TYPE_LONG ); // [long , 12] 대상제외 SetPacketData( pckInBlock.sprice , sizeof( pckInBlock.sprice ),"", DATA_TYPE_LONG ); // [long , 8] 시작가격 SetPacketData( pckInBlock.eprice , sizeof( pckInBlock.eprice ),"", DATA_TYPE_LONG ); // [long , 8] 종료가격 SetPacketData( pckInBlock.volume , sizeof( pckInBlock.volume ),"", DATA_TYPE_LONG ); // [long , 12] 거래량 SetPacketData( pckInBlock.idx , sizeof( pckInBlock.idx ),"", DATA_TYPE_LONG ); // [long , 4] IDX result_1= xing::ETK_Request(szTrNo, // TR 번호 &pckInBlock, // InBlock 데이터 sizeof( pckInBlock ), // InBlock 데이터 크기 bNext, // 다음조회 여부 "", // 다음조회 Key 30 // Timeout(초) : 해당 시간(초)동안 데이터가 오지 않으면 Timeout에 발생한다. XM_TIMEOUT_DATA 메시지가 발생한다. ); return result_1; }
int xing::CSPAQ12300_Request(BOOL nNext,CSPAQ12300InBlock1data data){ CSPAQ12300InBlock1 pckInBlock; char szTrNo[] = "CSPAQ12300"; char szNextKey[] = ""; memset(&pckInBlock,' ',sizeof(pckInBlock)); SetPacketData( pckInBlock.RecCnt , sizeof( pckInBlock.RecCnt ), "1" , DATA_TYPE_LONG ); // [long , 5] 레코드갯수 SetPacketData( pckInBlock.AcntNo , sizeof( pckInBlock.AcntNo ), data.AcntNo , DATA_TYPE_STRING ); // [string, 20] 계좌번호 SetPacketData( pckInBlock.Pwd , sizeof( pckInBlock.Pwd ), data.Pwd , DATA_TYPE_STRING ); // [string, 8] 비밀번호 SetPacketData( pckInBlock.BalCreTp , sizeof( pckInBlock.BalCreTp ), data.BalCreTp , DATA_TYPE_STRING ); // [string, 1] 잔고생성구분 SetPacketData( pckInBlock.CmsnAppTpCode , sizeof( pckInBlock.CmsnAppTpCode ), data.CmsnAppTpCode , DATA_TYPE_STRING ); // [string, 1] 수수료적용구분 SetPacketData( pckInBlock.D2balBaseQryTp, sizeof( pckInBlock.D2balBaseQryTp ), data.D2balBaseQryTp, DATA_TYPE_STRING ); // [string, 1] D2잔고기준조회구분 SetPacketData( pckInBlock.UprcTpCode , sizeof( pckInBlock.UprcTpCode ), data.UprcTpCode , DATA_TYPE_STRING ); // [string, 1] 단가구분 int nRqID = ETK_Request(szTrNo,&pckInBlock,sizeof(pckInBlock),nNext,szNextKey,30); return nRqID; }
int xing::t0425_Request(BOOL nNext,t0425InBlockdata data){ t0425InBlock pckInBlock; char szTrNo[] = "t0425"; char szNextKey[] = ""; memset(&pckInBlock,' ',sizeof(pckInBlock)); SetPacketData( pckInBlock.accno , sizeof( pckInBlock.accno ), data.accno , DATA_TYPE_STRING ); SetPacketData( pckInBlock.passwd , sizeof( pckInBlock.passwd ), data.passwd , DATA_TYPE_STRING ); SetPacketData( pckInBlock.expcode , sizeof( pckInBlock.expcode ), data.expcode , DATA_TYPE_STRING ); SetPacketData( pckInBlock.chegb , sizeof( pckInBlock.chegb ), data.chegb , DATA_TYPE_STRING ); SetPacketData( pckInBlock.medosu , sizeof( pckInBlock.medosu ), data.medosu , DATA_TYPE_STRING ); SetPacketData( pckInBlock.sortgb , sizeof( pckInBlock.sortgb ), data.sortgb , DATA_TYPE_STRING ); SetPacketData( pckInBlock.cts_ordno , sizeof( pckInBlock.cts_ordno ), data.cts_ordno , DATA_TYPE_STRING ); int nRqID = ETK_Request(szTrNo,&pckInBlock,sizeof(pckInBlock),nNext,szNextKey,30); if(nRqID<0){ qDebug()<<"t0424_Request 실패"; } return nRqID; }
//선물 주문 quantity가 양수면 매수 / 음수면 매도, price가 0이면 시장가, 0이 아니면 지정가 주문 int CGoldenCrossStrategy::FuOrder(CString code, int quantity, double price) { CFOAT00100InBlock1 pckInBlock; FillMemory( &pckInBlock, sizeof( pckInBlock ), ' ' ); SetPacketData( pckInBlock.AcntNo , sizeof( pckInBlock.AcntNo ), AccountCode , DATA_TYPE_STRING ); // [string, 20] 계좌번호 SetPacketData( pckInBlock.Pwd , sizeof( pckInBlock.Pwd ), AccountCode , DATA_TYPE_STRING ); // [string, 8] 비밀번호 SetPacketData( pckInBlock.FnoIsuNo , sizeof( pckInBlock.FnoIsuNo ), code , DATA_TYPE_STRING ); // [string, 12] 선물옵션종목번호 SetPacketData( pckInBlock.BnsTpCode , sizeof( pckInBlock.BnsTpCode ), quantity > 0 ? "2" : "1" , DATA_TYPE_STRING ); // [string, 1] 매매구분 SetPacketData( pckInBlock.FnoOrdprcPtnCode, sizeof( pckInBlock.FnoOrdprcPtnCode ), price == 0 ? "03" : "00", DATA_TYPE_STRING ); // [string, 2] 선물옵션호가유형코드 char strPrice[20]; sprintf_s(strPrice, 20, "%.02f", price); SetPacketData( pckInBlock.OrdPrc , sizeof(pckInBlock.OrdPrc ), strPrice , DATA_TYPE_FLOAT_DOT, 2 ); // [double, 15.2] 주문가격 SetPacketData( pckInBlock.OrdQty , sizeof( pckInBlock.OrdQty ), abs(quantity)); // [long , 16] 주문수량 CString log; log.Format("[주문] 종목코드 : %s, 가격: %.02f, 수량:%d", code, price, quantity); TradeLog(log); return Request(NAME_CFOAT00100, &pckInBlock, sizeof( pckInBlock ), FALSE, ""); }
int xing::CSPAQ13700_Request(BOOL nNext,CSPAQ13700InBlock1data data){ CSPAQ13700InBlock1 pckInBlock; char szTrNo[] = "CSPAQ13700"; char szNextKey[] = ""; memset(&pckInBlock,' ',sizeof(pckInBlock)); SetPacketData( pckInBlock.RecCnt , sizeof( pckInBlock.RecCnt ), "1" , DATA_TYPE_LONG ); // [long , 5] 레코드갯수 SetPacketData( pckInBlock.AcntNo , sizeof( pckInBlock.AcntNo ), data.AcntNo , DATA_TYPE_STRING ); // [string, 20] 계좌번호 SetPacketData( pckInBlock.InptPwd , sizeof( pckInBlock.InptPwd ), data.InptPwd , DATA_TYPE_STRING ); // [string, 8] 입력비밀번호 SetPacketData( pckInBlock.OrdMktCode , sizeof( pckInBlock.OrdMktCode ), data.OrdMktCode , DATA_TYPE_STRING ); // [string, 2] 주문시장코드 SetPacketData( pckInBlock.BnsTpCode , sizeof( pckInBlock.BnsTpCode ), data.BnsTpCode , DATA_TYPE_STRING ); // [string, 1] 매매구분 SetPacketData( pckInBlock.IsuNo , sizeof( pckInBlock.IsuNo ), data.IsuNo , DATA_TYPE_STRING ); // [string, 12] 종목번호 SetPacketData( pckInBlock.ExecYn , sizeof( pckInBlock.ExecYn ), data.ExecYn , DATA_TYPE_STRING ); // [string, 1] 체결여부 SetPacketData( pckInBlock.OrdDt , sizeof( pckInBlock.OrdDt ), data.OrdDt , DATA_TYPE_STRING ); // [string, 8] 주문일 SetPacketData( pckInBlock.SrtOrdNo2 , sizeof( pckInBlock.SrtOrdNo2 ), data.SrtOrdNo2 , DATA_TYPE_LONG ); // [long , 10] 시작주문번호2 SetPacketData( pckInBlock.BkseqTpCode, sizeof( pckInBlock.BkseqTpCode ), data.BkseqTpCode, DATA_TYPE_STRING ); // [string, 1] 역순구분 SetPacketData( pckInBlock.OrdPtnCode , sizeof( pckInBlock.OrdPtnCode ), data.OrdPtnCode , DATA_TYPE_STRING ); // [string, 2] 주문유형코드 int nRqID = ETK_Request(szTrNo,&pckInBlock,sizeof(pckInBlock),nNext,szNextKey,30); return nRqID; };