커뮤니티

수식 부탁드립니다

프로필 이미지
연개소문1004
2018-09-04 14:42:31
2918
글번호 224587
답변완료
항상 감사하게 생각합니다. 엑셀에서 여러종목의 종목명,수량을 가져와서 주문하는 수식을 만들고 있습니다. 아래에서 지정가매수주문에서 매수호가를 매수1호가에 주문하는 것과 미결제분은 10분후에 매도1호가로 정정주문하는 것을 추가하는 내용가르쳐주시면 감사하겠습니다. function Main_OnStart() { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (HHMMSS > 093000 && HHMMSS < 150000 ) { Main.SetTimer(1,5000); } } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (HHMMSS >= 090000 && nEventID == 1) { Main.KillTimer(1); for (var i = 3; i < Excel1.GetRowCount(1); i++) { Account1.OrderBuy(Excel1.GetData(1,"B"+i),Excel1.GetData(1,"C"+i),매수1호가,0); } } }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-09-13 16:59:25

안녕하세요 웰스멘토입니다. 종목의 호가정보를 알기 위해서는 종목객체가 필요합니다. 그러므로 엑셀에서 종목코드를 가져온후 각 종목에 대한 종목객체를 생성하고 주문하게 하셔야 합니다. 스팟 수식답변은 참고용 가이드입니다. 아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다. var List = []; var Vol = []; var Obj = []; var req = 0; function Main_OnStart() { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (HHMMSS > 093000 && HHMMSS < 150000 ) { Main.SetTimer(1,5000); } } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (HHMMSS >= 090000 && nEventID == 1) { Main.KillTimer(1); var ii = 0; for (var i = 3; i < Excel1.GetRowCount(1); i++) { //각 배열변수 0번방 부터 차례로 종목코드와 수량 저장 List[ii] = Excel1.GetData(1,"B"+i); Vol[ii] = Excel1.GetData(1,"C"+i); ii = ii+1; //Account1.OrderBuy(Excel1.GetData(1,"B"+i),Excel1.GetData(1,"C"+i),매수1호가,0); } if (List.length > 0); { req = 0; Main.ReqMarketData(List[req],0,0); } } //2번 타이머 동작 if (nEventID == 2) { //타이머 중지 Main.KillTimer(2); //다음종목객체 재요청 Main.ReqMarketData(List[req],0,0); } //3번 타이머 동작 if (nEventID == 2) { //타이머 중지 Main.KillTimer(3); //미체결 주문 수 var UnFillNum = Account1.GetTheNumberOfUnfills(); for (var i = 0; i < UnFillNum; i++) { //미체결주문을 하나씩 셋팅하고 Account1.SetUnfill(i); //미체결수량이 있으면 if (Account1.Unfill.count > 0) { for (var z = 0; z < Obj.length; z++) { //종목객체들 중 셋팅된 미체결종목과 같은 종목의 종목객체를 찾고 // 매도1호가가 주문가격과 다르면 if (Obj[z].code == Account1.Unfill.code && Obj[z].Ask(1) != Account1.Unfill.price) { //매도1호가로 정정주문 Account1.OrderReplacePrice(Account1.Unfill.orderNum,Obj[z].Ask(1)); } } } } } } function Main_OnRcvMarketData(MarketData) { if (MarketData.code == List[req]) { //Obj배열변수에 요청한 순서로 종목객체 저장 Obj[req] = MarketData; if (Vol[req] > 0) { Account1.OrderBuy(List[req],Vol[req],Obj[req].Bid(1),0); } req = req+1; if (req < List.length) { //다음종목객체요청 var S = Main.ReqMarketData(List[req],0,0); //종목객체 제한시간에 걸리면(15초에 60건) if (S == -1) { //15초 타이머 셋팅 Main.SetTimer(2,15000); } } else { Main.MessageList("매수주문완료"); //600초(10분) 타이머 셋팅 Main.SetTimer(3,600000); } } } 즐거운 하루되세요 > 연개소문1004 님이 쓴 글입니다. > 제목 : 수식 부탁드립니다 > 항상 감사하게 생각합니다. 엑셀에서 여러종목의 종목명,수량을 가져와서 주문하는 수식을 만들고 있습니다. 아래에서 지정가매수주문에서 매수호가를 매수1호가에 주문하는 것과 미결제분은 10분후에 매도1호가로 정정주문하는 것을 추가하는 내용가르쳐주시면 감사하겠습니다. function Main_OnStart() { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (HHMMSS > 093000 && HHMMSS < 150000 ) { Main.SetTimer(1,5000); } } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (HHMMSS >= 090000 && nEventID == 1) { Main.KillTimer(1); for (var i = 3; i < Excel1.GetRowCount(1); i++) { Account1.OrderBuy(Excel1.GetData(1,"B"+i),Excel1.GetData(1,"C"+i),매수1호가,0); } } }