커뮤니티

예스스팟 주문정정 하는 법

프로필 이미지
새로운마음
2018-05-02 13:41:04
2969
글번호 224396
답변완료
스팟으로 주식매매 만드는 중입니다. 파워검색으로 나온 수십종목의 매수주문넣고 미체결난(전량 미체결이든, 일부 미체결이든) 주문들을 매수정정주문 넣고 싶습니다. for문을 이용하여 미체결주문을 가져오는거까지는 하겠는데 가져온 미체결주문에서 정정가격을 현재 매수1호가로 설정하는 법을 모르겠습니다. if (T1 == 151600) // 15시 16분 미체결주문 매수가격정정 { A1.Refresh(); unfill_num = 0; unfill_num = A1.GetTheNumberOfUnfills(); // 미체결주문 갯수 조회 Main.MessageLog("=================("+ T1 +")================="); Main.MessageLog("미체결 주문갯수:"+ unfill_num); for(var i = 0 ; i < unfill_num ; i++) // 미체결주문들 매수가정정 하기 { A1.SetUnfillIndex(i); if (A1.Unfill.orderKind == 2) // 1: 매도 2:매수 { A1.OrderReplacePrice(A1.Unfill.orderNum, 매수1호가로 하고 싶음); } } } 정정가격 넣는 부분에 매수1호가로 가격을 넣어주셨으면 감사하겠습니다. (매도 1호가 설정법도 알고 싶습니다.)
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-05-11 14:15:35

안녕하세요 예스스탁입니다. 1 주문을 낼때 호가를 지정하기 위해서는 각 종목의 호가정보를 알수 있는 종목객체가 필요합니다. 올려주신 내용이 있는 스팟수식에서 주문낸 종목에 대해 종목객체가 이미 마련되 사용되고 있는 상태인지 아니면 종목객체가 없는 상태인지 알수가 없습니다. 이미 마련되어 배열에 저장되어 있다면 아래와 같이만 처리하시면 됩니다. 종목객체가 저장된 배열변수가 XX라고 보고 작성해 드립니다. for(var i = 0 ; i < unfill_num ; i++) // 미체결주문들 매수가정정 하기 { A1.SetUnfillIndex(i); if (A1.Unfill.orderKind == 2) // 1: 매도 2:매수 { for(var z = 0 ; z < XX.length ; z++) { if (A1.Unfill.code == XX[z].code) { A1.OrderReplacePrice(A1.Unfill.orderNum,XX[z].Bid(1)); } } } } 아래는 종목객체가 없는것으로 파악하고 작성해 드립니다. 2 올려주신 수식에서 A1.Refresh(); 뒤에 바로 잔고쪽을 확인하는 코딩이 들어가는데 계좌를 재조회되면 가원장이 갱신하는 시간이 필요하므로 코딩상 좋은 방법이 아닙니다. 계좌를 재조회하면 항상 재조회가 완료된것을 확인하고 이후의 내용을 수행하게 작성하셔야 합니다. 3 수식내 게시판 금칙어가 있습니다. 영문 업데이트가 Up*date와 같이 중간에 *이 들어가 있으므로 삭제하시기 바랍니다. var AA,reqCount, unfill_num; var UFnum = []; var UFcode = []; function Main_OnStart() { AA = 0; } 이벤트 { if (T1 == 151600) // 15시 16분 미체결주문 매수가격정정 { AA = 1; A1.Refresh(); } } function Main_OnUp*dateAccount(sAccntNum, sItemCode, lUp*dateID)//*제거 { if (AA == 1 && lUp*dateID == 30000)/*제거 { AA = 2; unfill_num = A1.GetTheNumberOfUnfills(); // 미체결주문 갯수 조회 Main.MessageLog("=================("+ T1 +")================="); Main.MessageLog("미체결 주문갯수:"+ unfill_num); //전체 미체결중 매수미체결만 모아 //주문번호와 종목코드를 각배열변수의 동일방에 저장 for(var i = 0 ; i < unfill_num ; i++) { A1.SetUnfillIndex(i); if (A1.Unfill.orderKind == 2) { UFnum.push(A1.Unfill.orderNum); UFcode.push(A1.Unfill.code); } } //순서대로 종목객체 요청 //요청은 한종목씩 처리 (요청-->처리 --> 다음종목 요청 ) //요청건수는 0으로 초기화 reqCount = 0; //매수미체결이 있으면 요청시작 if (UFnum.length > 0) { //종목객체요청 Main.ReqMarketData(UFcode[reqCount],0,0); } else { Main.MessageList("매수 미체결없음"); } } } //요청된 종목객체 생성완료 function Main_OnRcvMarketData(MarketData) { //요청한 종목인지 확인후 if (AA == 2 && MarketData.code == UFcode[reqCount]) { //미체결객체 셋팅 Account1.SetUnfill(UFnum[req]); //아직 잔고수량이 남아 있으면 if (Account1.Unfill.count > 0) { //매수1호가로 정정 Account1.OrderReplacePrice(Account1.Unfill.orderNum,MarketData.Bid(1)); } //카운트는 1증가 reqCount = reqCount+1; //사용 후 해당종목은 삭제 Main.RemoveMarketData(MarketData); //다음순번 요청 if (req < UFnum.length) { //다음종목 객체요청 Main.ReqMarketData(UFcode[req],0,0); } else { Main.MessageList("정정주문완료"); } } } 즐거운 하루되세요 > 새로운마음 님이 쓴 글입니다. > 제목 : 예스스팟 주문정정 하는 법 > 스팟으로 주식매매 만드는 중입니다. 파워검색으로 나온 수십종목의 매수주문넣고 미체결난(전량 미체결이든, 일부 미체결이든) 주문들을 매수정정주문 넣고 싶습니다. for문을 이용하여 미체결주문을 가져오는거까지는 하겠는데 가져온 미체결주문에서 정정가격을 현재 매수1호가로 설정하는 법을 모르겠습니다. if (T1 == 151600) // 15시 16분 미체결주문 매수가격정정 { A1.Refresh(); unfill_num = 0; unfill_num = A1.GetTheNumberOfUnfills(); // 미체결주문 갯수 조회 Main.MessageLog("=================("+ T1 +")================="); Main.MessageLog("미체결 주문갯수:"+ unfill_num); for(var i = 0 ; i < unfill_num ; i++) // 미체결주문들 매수가정정 하기 { A1.SetUnfillIndex(i); if (A1.Unfill.orderKind == 2) // 1: 매도 2:매수 { A1.OrderReplacePrice(A1.Unfill.orderNum, 매수1호가로 하고 싶음); } } } 정정가격 넣는 부분에 매수1호가로 가격을 넣어주셨으면 감사하겠습니다. (매도 1호가 설정법도 알고 싶습니다.)