커뮤니티

수정부탁드려요

프로필 이미지
아무다
2024-03-12 09:31:48.0
558
글번호 225962
답변완료
검색된 각 종목마다 현 잔고의 10분의 1만큼만 사고 싶은데 수정부탁드려요 function Main_OnStart() { //1번 타이머, 60초 Main.SetTimer(1, 2000); } function Main_OnTimer(nEventID) { if (nEventID == 1) { //종목검색 수행 Main.ReqPowerSearch("3") } } //종목검색 완료 function Main_OnRcvItemList(aItemList, nCount) { //1종목 이상 검색되면 if (nCount >= 1) { //리스트 첫종목부터 마지막종목까지 순차적으로 //1번 타이머 동작 for (var i = 0; i < nCount; i++) { //잔고를 셋팅 Account1.SetBalance(aItemList[i],0); //보유수량이 없으면 if (Account1.Balance.count < 1) { //매수주문 Account1.OrderBuy(aItemList[i], 3,0,1); } } } }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-04-18 17:34:50.0

안녕하세요 예스스탁입니다. 1 금액으로 지정해 주문하려 수량을 계산하는 가격이 필요합니다. 종목검색은 검색된 종목의 현재가등을 알수 없으므로 검색된 종목에 대해 종목객체 생성이 필요하게 됩니다. 2 잔고의 1/10만 주문하므로 최대 주문종목은 10종목이 됩니다. 또한 현재 올리신 수식은 시장가로 매수인데 지정가인 경우에는 해당 지정가로 금액을 나누어 수량을 산정하면 되지만 시장가의 경우 상한가로 금액을 나누어야 합니다. 아래 내용 참고하시기 바랍니다. 3 mm = Account1.GetBalanceETCinfo(18); 아래수식에서 투자금액은 하이투자증권 기준으로 주문가능현금으로 지정했습니다. 예수금등 예수금내역의 다른 필드값으로 지정하고자 하시면 예스스팟 도움말에서 계좌객체의 위 함수 참고하셔서 번호를 변경하셔야 합니다. 해당 번호는 증권사마다 다르므로 도움말에서 반드시 확인하시기 바랍니다. 3 var 최대종목수 = 10; var 검색타이머 = 30; var List = [],MK = []; var req, mm, m1; function Main_OnStart() { Main.SetTimer(1, 검색타이머*1000); //계좌 예수금 mm = Account1.GetBalanceETCinfo(18); //1종목당 매수금액 //m1 = math.floor(mm/최대종목수); m1 = 1000000; } function Main_OnTimer(nEventID) { d = new Date(); HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1 && HHMMSS > 90000 && MK.length < 최대종목수) { Main.KillTimer(1); //종목검색 수행 Main.ReqPowerSearch("3") } } //종목검색 완료 function Main_OnRcvItemList(aItemList, nCount) { List = []; if (MK.length < 최대종목수) { if (nCount >= 1) { if (MK.length == 0) { List = aItemList; } else { for (var x = 0; x < nCount; x++) { add = true; for (var y = 0; y < MK.length; y++) { if (aItemList[x] == MK[y].code) { add = false; } } if (add == true) { //잔고를 셋팅 Account1.SetBalance(aItemList[x],0); //보유수량이 없으면 if (Account1.Balance.count == 0) { List.push(aItemList[x]); } } } } if (List.length > 0) { req = 0; Main.ReqMarketData(List[req]) } else { Main.SetTimer(1, 검색타이머*1000); } } } } function Main_OnRcvMarketData(MarketData) { if (List[req] == MarketData.code) { Account1.OrderBuy(MarketData.code,Math.floor(m1/MarketData.limitUp),MarketData.Ask(5),0); MK.push(MarketData); req =req+1; if (req < List.length && MK.length < 최대종목수) { Main.ReqMarketData(List[req]); } else { Main.MessageList("종목객체생성완료"); if (MK.length < 최대종목수) { Main.MessageList("검색타이머 재기동"); Main.SetTimer(1, 검색타이머*1000); } else { Main.MessageList("최대종목수 충족"); } } } } 즐거운 하루되세요 > 아무다 님이 쓴 글입니다. > 제목 : 수정부탁드려요 > 검색된 각 종목마다 현 잔고의 10분의 1만큼만 사고 싶은데 수정부탁드려요 function Main_OnStart() { //1번 타이머, 60초 Main.SetTimer(1, 2000); } function Main_OnTimer(nEventID) { if (nEventID == 1) { //종목검색 수행 Main.ReqPowerSearch("3") } } //종목검색 완료 function Main_OnRcvItemList(aItemList, nCount) { //1종목 이상 검색되면 if (nCount >= 1) { //리스트 첫종목부터 마지막종목까지 순차적으로 //1번 타이머 동작 for (var i = 0; i < nCount; i++) { //잔고를 셋팅 Account1.SetBalance(aItemList[i],0); //보유수량이 없으면 if (Account1.Balance.count < 1) { //매수주문 Account1.OrderBuy(aItemList[i], 3,0,1); } } } }