커뮤니티

수식 문의 드립니다.

프로필 이미지
오전만트레이딩
2020-04-04 00:08:49
3718
글번호 225191
답변완료
Q&A 등에 있는 스팟 수식을 조금씩 고쳐서 사용하고 있습니다. 요건 비슷한 글이 없어 뼈대를 만들기 힘들어서 여쭤봅니다. 최근 조건검색식에 맞는 종목수가 많이 떠서 조회횟수 에러가 떠서 이를 해결하고자 수식을 만들려합니다. 1. 12:00가 되면 "search A"란 조건으로 검색한다. 2. search A의 결과가 35종목 미만이면 search A의 종목을 거래량 내림차순으로 예수금을 10등분 하여 10종목 매수한다. 3. search A의 결과가 35종목 이상이면, "search B"란 조건으로 검색한다. 4. search B에 해당하는 종목을 거래량 내림차순으로 예수금을 10등분 하여 10종목 매수한다. 그리고 혹시 단순히 검색결과가 예를 들어 100종목이 넘는다든지 하는 이유로도 조회횟수 오류가 나올 수 있는지도 궁금합니다.
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-05-20 16:01:11

안녕하세요 예스스탁입니다. 아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다. 증권사별로 예수금 필드의 값을 가져오는 번호가 다릅니다. 스팟도움말에서 계좌객체의 GetBalanceETCinfo함수 내용 참고하셔서 인덱스가 다르면 수정하시기 바랍니다. 아래식은 하이투자증권기준으로 0으로 지정되었습니다. var SList = []; var Req = 0; function Main_OnStart() { Main.SetTimer(1,30000); } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1 && HHMMSS >= 120000) { search = 0; Main.KillTimer(1); Main.MessageList("종목검색요청 searchA"); Main.ReqPowerSearch("searchA"); } if (nEventID == 99) { Main.KillTimer(99); Main.ReqMarketData(SList[req][0]); } } function Main_OnRcvItemList(aItemList, nCount) { search = search+1; Main.MessageList("검색완료",nCount); if (search == 1) { if (nCount < 35) { Main.MessageList("종목검색요청 searchB"); Main.ReqPowerSearch("searchB"); } else { SList = []; for (var i = 0; i < nCount; i++) { SList[i] = new Array(0,aItemList[i]); } Main.MessageList("종목객체생성시작"); req = 0; Main.ReqMarketData(SList[req][1]); } } if (search == 2) { SList = []; for (var i = 0; i < nCount; i++) { SList[i] = new Array(0,aItemList[i],0); } Main.MessageList("종목객체생성시작"); req = 0; Main.ReqMarketData(SList[req][1]); } } function Main_OnRcvMarketData(MarketData) { if (MarketData.code == SList[req][1]) { SList[req][0] = MarketData.volumeTotal; SList[req][2] = MarketData; req = req+1; if (req < SList.length) { var S = Main.ReqMarketData(SList[req][1]); if (S == -1) { Main.SetTimer(99,15000); } } else { Main.MessageList("객체생성완료"); // 내림차순 정렬 SList.sort(CompareForSort); // 예수금의 10% var M1 = Math.floor(Account1.GetBalanceETCinfo(0)/10); if (SList.length > 0) { for (var i = 0; i < Math.min(10,SList.length);i++) { var vol = Math.floor(M1/SList[i][2].Ask(5)); Account1.OrderBuy(SList[i][2].code, vol,SList[i][2].Ask(5),0); } } } } } function CompareForSort(a, b) { //내림차순 return( a[0] < b[0] ? 1 : a[0] > b[0] ? -1 : 0 ); //오름차순 //return( a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0 ); } 즐거운 하루되세요 > 오전만트레이딩 님이 쓴 글입니다. > 제목 : 수식 문의 드립니다. > Q&A 등에 있는 스팟 수식을 조금씩 고쳐서 사용하고 있습니다. 요건 비슷한 글이 없어 뼈대를 만들기 힘들어서 여쭤봅니다. 최근 조건검색식에 맞는 종목수가 많이 떠서 조회횟수 에러가 떠서 이를 해결하고자 수식을 만들려합니다. 1. 12:00가 되면 "search A"란 조건으로 검색한다. 2. search A의 결과가 35종목 미만이면 search A의 종목을 거래량 내림차순으로 예수금을 10등분 하여 10종목 매수한다. 3. search A의 결과가 35종목 이상이면, "search B"란 조건으로 검색한다. 4. search B에 해당하는 종목을 거래량 내림차순으로 예수금을 10등분 하여 10종목 매수한다. 그리고 혹시 단순히 검색결과가 예를 들어 100종목이 넘는다든지 하는 이유로도 조회횟수 오류가 나올 수 있는지도 궁금합니다.